1、C程序设计(第四版)(谭浩强)第一章课后习题答案P006 1.1 向屏幕输出文字.#include /预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找.int main()printf(“Welcome to n“); return 0; /与int main对应,为了程序可移植性,建议全用int main + return 0;.P008 1.2 求两个数的和.#include int main()int a,b,sum;a=5;b=4;sum=a+b;printf(“The sum is %d .n“,sum);return 0;P008 1.3 调用函数比较两个数的大小.#i
2、nclude int main()int max(int x,int y); /被调用函数在主函数后面,用前先声明.int a,b,c;scanf(“%d,%d“, /输入时要按格式来,此处的逗号,用空格会发生错误.c=max(a,b); /a,b作为实参传入被调用函数中.printf(“The max is %d .n“,c);return 0;int max(int x,int y) /定义了两个形参.int z; /z属于局部变量,可与主函数中相同名字.if (xy)z=x;elsez=y;return(z); /z作为整个程序的出口值,赋给主函数中的c.P015 0.6 三个数的大小
3、.(数字0 表示课后练习题 )#include int main()int a,b,c,d; /d是用于存储最大值的.int max(int x , int y , int z); /测试可知,在VS2008中,可以不预先声明.printf(“Please input 3 numbers :n“);scanf(“%d %d %d“,d=max(a,b,c); /调用函数中有三个形参,这里需要传入三个实参,才可运算.printf(“The max is :%d .n“,d); / d可以换成max(a,b,c).int max(int x , int y , int z)int m;if (xy
4、 if (yx if (zy return (m); /返回值m给主函数中的d.C 程序设计( 第四版)(谭浩强 )第 2 章课后习题答案算法 程序的灵魂P017 2.1 计算机1-5相乘的积.#include int main()int i,s=1; /在执行数值操作前一定要先有个初值.for(i=1;i /作出要求:换成1到11间奇数相乘.int main()int i,s=1; /在执行数值操作前一定要先有个初值.for(i=1;iint main()int i;for(i=2000;iint main()float sign=1 , sum=0 , deno , term ; /关于有
5、小数的计算应该用float.for (deno=1;denoint main() int i , num ,n ; /像13,37,这样只能让和它本身除以外,没有其它除数的叫素数.printf(“Please input a number :n“); /获取一个数值scanf(“%d“,for(i=2;iint main() char a=a,b=b,c;c=a;a=b;b=c;printf(“a now is %c , b now is %c !n“,a,b);return 0;P036 0.2 输入 10个数,并输出最大的那一个数 .#include int main() int i,a1
6、0,s=0 ;printf(“Please input 10 numbers :n“);for(i=0;iint main() int i , j , a4 , s=0 ;printf(“Please input 5 numbers :n“); /此处要回车.for (i=0 ; iaj) /如果成立,则对换,小于号表示降序排列,大于号表示升序排列.s=ai;ai=aj;aj=s;for (i=0 ; iint main()int i , sum=0 ; /这是一个简单的程序.for (i=0 ; iint main()int n ;printf(“Please input a number
7、:n“);scanf(“%d“,if(n%3=0elseprintf (“Can not be devide by 3 and 5 !n“);return 0;P036 0.6 输出 100-200间的素数./*第一种方法.#include /网络版本,采用调用函数和求根取素.#include /下面用到sqrt,所以需要包含数据函数.sqrt是求根,属数学函数.int main() /学会一个程序采用”主函数+被调用函数”的方式,会比较规范.int i;for (i=100; i#include int main()int i;for(i=100;i /最大公约数用累除法,除到无余数时的被除
8、数是最大公约数.main ()int m, n, c, d;int gcd(); /这是最大公约数的缩写,此处调用函数,可以不写里面的实参.int lcm(); /这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.printf(“Please input two number :n“);scanf(“%d %d“,c=gcd(m,n); /c获取最大公约数d=lcm(m,n); /d获取最小公倍数printf(“The GCD of %d and %d is : %d !n“, m, n, c);printf(“The LCM of %d and %d is : %d !n“, m, n
9、, d); return 0;int gcd(int x, int y) /最大公约数Greatest Common Divisorint temp;while(x%y!=0) temp=y; /y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.y=x%y; /x,y的余数作为下一轮中的Y,由x%y来取得.x=temp; /刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.return y; /这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理.int lcm(int x, int y) /最小公倍数Lowest Common Multipleint i, tem
10、p;if(xfloat F_to_C(float input_fah) /代表华转摄,input_fah是局部变量.float output_cen; /这里也是局部变量.output_cen=(5.0/9)*(input_fah-32); /函数的功能体.return output_cen; /返回值,注意,返回值的数据类型应该和函数一致.float C_to_F(float input_cen)float output_fah;output_fah=(9.0/5)*input_cen+32; /转换过程.return output_fah;int main()int choice;float input_fah,input_cen,output_fah,output_cen; /局部变量的调用及参数传递.printf(“F_to_C press and C_to_F press !n“);scanf(“%d“,if(choice=1)printf(“Please input fahrenheit :“);scanf(“%f“, /这个是主函数定义的变量,虽然和调用函数同名.output_cen=F_to_C(input_fah); printf(“The 华氏 is %d , 摄氏 is %d .“,(int)input_fah,(int)output_cen);