C语言程序设计基础教程 课后习题答案(清华大学出版社 于延编) 自己做的 欢迎校正 联系客服

发布时间 : 星期一 文章C语言程序设计基础教程 课后习题答案(清华大学出版社 于延编) 自己做的 欢迎校正更新完毕开始阅读de687a611ed9ad51f01df263

第一章 计算机程序设计导论

一、简答题

1.请简述计算机程序设计语言的发展历程。

答:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C 语言是一种面向对象的编程语言,也属于高级语言。????

2.什么是算法,请举例设计一个算法。

答:算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。

求两个数的最大公约数设两个变量M和N 1.如果M

3.判断R=0,正确则N为最大公约数否则进行下一步 4.将N赋值给M,将R赋值给N,重复第一步 3.请叙述算法都有哪些特性。

答:①有穷性②群定性③有效性④有零个或多个输入⑤有一个或多个输入?? 4.请叙述什么是结构化程序设计以及结构

答:①只要有几种简单类型的借口,就可以构成任意复杂的程序。这样可以使程序设计规范化,便于用工程的方法来机型软件生产,??由顺序结构,选择结构,循环结构这三种基本结构组成的程序就是结构化程序。

二、算法设计题

1.设计算法求1+2+3+…+100的和。 #include #include main(){

int I,S = 0;

for(I = 1;I<=100;I++) //求1-100的和 S=S+I;

printf(\ system(\ }

2.已知两个自然数M和N, 请设计算法输出它们的 最小公倍数。 #include #include #include

int fmax(int m,int n) //求最大公约数 {int r; r=m%n; while (r!=0)

{m=n;n=r;r=m%n;}

return n; }

int fmin(int m,int n) //最小公倍数=两个数的积除两个数的最大公约数 { return m*n/fmax(m,n);} main() { int a,b;

scanf(\

printf(\system(\

3.已知一个自然数N,请设计算法输出它所有真 约数的和。

#include #include

int f(int x) { int n=0,i,k=1,flag=1; while(flag) //求一个数的约数 { flag=0; for(i=k;x%i;i++); k=i+1;

if(x!=i) //判断是否到这个数本身 { flag=1; n+=i; //将约数累加到n中 } } return n; //是这个数本身时返回值为n }

int main() {

int m;

scanf(\

printf(\真约数之和=%d\\n\system(\

4.设计算法求出10000以内所有孪生素数对。 #include #include

int f(int x) //判断一个数是否为素数 {

int i; for(i=2;x%i;i++); if(x==i) return x; else return 0; }

main() {

int i,j=1,m=1,n=3; //n=3 n永远为m前一个素数

for(i=5;i<10000;i++) //因为最小的孪生素数对从为3,5 {

if(f(i)==0) //如果i非素数跳出这次循环进入下一次 continue;

m=f(i);

if(m-n==2) //输出孪生素数 {

printf(\第%d组孪生素数: %d , %d\\n\ j++; }

n=m; //n为m前一个素数 }

system(\

}

5.设计算法输出10000以内所有亲和数对。 //如果两个数a和b,a的所有真因数之和等

//于b,b的所有真因数之和等于a,则称a,b是一对亲和数。 真因数:除了他本身 #include int qhs(int a) { int i; int s = 0; for (i = 1; i * i < a; i++) //求一个数的真约数和 if (a % i == 0) s += i + a / i; if (i * i == a) s += i; s -= a; return s; } int main(void) //返回值为空 { int i, j; for (i = 0; i < 100000; i++)

{ j = qhs(i); if (j > i && i == qhs(j))//判断这个数是否有真约数有的话输出 printf(\ } scanf(\ return 0; }

6.已知一个自然数N,设计算法输出它的素分解 式。

#include #include

void f(int x) { int i,flag=1,k=1; while(flag) { for(i=k;x%i;i++); k=i+1; printf(\ x=x/i; if(x<2||i>=x) flag=0; } if(x>1)

printf(\}

int main() { int n; scanf(\ f(n);

system(\

7.输入一个正整数,输出其所有正真约数,写出 算法。

#include #include void yueshu(int num) { for(int i=1;i<=num;i++) { if(num%i==0) printf(\