《c语言题解(4-9)》由会员分享,可在线阅读,更多相关《c语言题解(4-9)(41页珍藏版)》请在金锄头文库上搜索。
1、第 4 章4.1 C语言中的语句有哪几类?C 语句与其他语言中的语句有哪些不同?(1) 控制语句(2) 函数调用语句(3) 表达式语句(4) 空语句(5) 复合语句C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求,而其他语言一般对书写格式有严格要求。4.2 怎样区分表达式和表达式语句?C 语言为什么要设表达式语句?什么时候用表达式,什么时候用表达式语句?表达式没有分号,语句是有分号的,将表达式加上一个分号就成了表达式语句。两者最大的区别是,表达式只是一个值,而表达式语句是指令,完成指定的操作。C语言设表达式语句的作用是用简短的指令代替了复杂的函数运算,程序运行效率高。
2、表达式是为了进行求值运算而设定的计算公式,用于语句中,但不构成完整的语句。如果要完成该运算,必须使用表达式语句。4.3 C语言为什么要把输入输出的功能用函数来实现,而不作为语言的基本部分?因为输入输出的对象是数据,而数据是以介质为载体的,因此进行输入输出就要与各种外部设备打交道。由于不同的系统进行输入输出的差异较大,所以必须使用函数和操作系统进行交互,以便存取不同的设备文件。4.4 若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=a,c2=b 。想得到以下的输出格式和结果,请写出程序。要求输出结果如下:a= 3 b= 4 c= 5x=1
3、.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1=a or 97(ASCII)c2=b or 98(ASCII)int main()int a=3,b=4,c=5;double x=1.2,y=2.4,z=-3.6;unsigned int u=51274,n=128765;char c1=a,c2=b;printf(a=%2d b=%2d c=%2dn,a,b,c);printf(x=%f,y=%f,z=%fn,x,y,z);printf(x+y=%5.2f y+z=%5.2f z+
4、x=%5.2fn,x+y,y+z,z+x);printf(u=%6u n=%10un,u,n);printf(c1=%c or %d(ASCII)n,c1,c1);printf(c2=%c or %d(ASCII)n,c2,c2);return 0;4.5 请写出下面程序的输出结果:int main()int a=5,b=7;float x=67.8564,y=-789.124;char c=A;long n=1234567;unsigned u=65535;printf(%d%dn,a,b);printf(%3d%3dn,a,b);printf(%f,%fn,x,y);printf(%-10
5、f,%-10fn,x,y);printf(%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn,x,y,x,y,x,y);printf(%e,%10.2en,x,y);printf(%c,%d,%o,%xn,c,c,c,c);printf(%ld,%lo,%xn,n,n,n);printf(%u,%o,%x,%dn,u,u,u,u);printf(%s,%5.3sn,COMPUTER,COMPUTER);return 0;575 767.856400,-789.12402367.856400 ,-789.12402367.86, -789.12,67.8564,-789.1240,67
6、.856400,-789.1240236.785640e+001,-7.89e+002A,65,101,411234567,4553207,12d68765535,177777,ffff,65535COMPUTER, COM4.6 用下面的 scanf函数输入数据,使 a=3,b=7,x=8.5,7=71.82,c1=A ,c2=a ,问在键盘上如何输入?int main()int a,b;float x,y;char c1,c2;scanf(%d %d %f %f %c %c,printf(%d %dn,a,b);printf(%f %fn,x,y);printf(%c %cn,c1,c2)
7、;return 0;4.7 用下面的 scanf函数输入数据,使 a=10,b=20,c1=A ,c2=a ,x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?int main()int a,b;char c1,c2;float x,y,z;scanf(%d %d %c %c %f %f %f,printf(%d %dn,a,b);printf(%f %f %fn,x,y,z);printf(%c %cn,c1,c2);return 0;4.8 设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用 scanf输入数据,然后输出计算结果。输
8、出时要求有文字说明并取小数点后两位数字,请编程序。#define Pi 3.1415926int main()double r,h;scanf(%lf %lf,printf(圆的周长=%.2fn,2*Pi*r);printf(圆的面积=%.2fn,Pi*r*r);printf(圆球表面积=%.2fn,Pi*r*r/6);printf(圆球体积=%.2fn,4*Pi*r*r*r/3);printf(圆柱体积=%.2fn,Pi*r*r*h);return 0;4.9 输入一个华氏温度的取值 F,要求输出摄氏温度的取值 C。公式为C=5(F-32)/9输出要有文字说明,取两位小数。#included
9、ouble CentigradeTemperture(double Fahrenheit);int main()double F;printf(请输入华氏温度:);scanf(%lf,printf(摄氏温度为%.2fn, CentigradeTemperature(F);return 0;double CentigradeTemperature(double Fahrenheit)return 5*(Fahrenheit-32)/9;4.10 编程序:用 getchar函数读入两个字符 c1,c2,然后分别用 putchar函数和 printf函数输出这两个字符,并思考以下问题:(1)变量 c
10、1,c2 应定义为字符型还是整型,或二者皆可?(2) 要求输出 c1和 c2的 ASCII码,应如何处理?用 putchar函数还是 printf函数?(3) 整型变量与字符变量是否在任何情况下都可以互相代替?如:char c1,c2;与 int c1,c2;是否无条件等价?int main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);printf(n%c %cn,c1,c2);return 0;(1) 二者皆可。(2) 用 printf函数将 printf(n%c %cn,c1,c2)改成 printf(n%d
11、%dn,c1,c2)即可。(3) 不是,整型可以代替字符型,但字符无法完全替代整型。第 5 章5.1 什么是算术运算?什么是关系运算?什么是逻辑运算?算术运算:+ - * / % + -关系运算: = = c & b=c(2) a|b+c & b-c(3) !(ab) & !c & !1(4) !(x=a) & (y=b) & 0(5) !(a+b)+c-1 & b+c/2(1) 0 (2) 1 (3) 0 (4) 0 (5) 15.4 有三个整数 a,b,c,由键盘输入,输出其中最大的数。int Max3(int a,int b,int c);int main()int a,b,c;scan
12、f(%d%d%d,printf(最大的数是%dn,Max3(a,b,c);return 0;int Max3(int a,int b,int c)int temp;temp=ab?a:b;return tempc?temp:c;5.5 有一函数: 10x32y编写一程序,输入 x,输出 y值。double funcy(double x);int main()double x,y;scanf(%lf,y=funcy(x);printf(最大的数是%lfn,y);return 0;double funcy(double x)if(x100 | score=90) printf(An);elseif
13、(score=80) printf(Bn);elseif(score=70) printf(Cn);elseif(score=60) printf(Dn);else printf(En);return 0;5.7 给一个不多于 5位的正整数,要求:(1) 求出它是几位数;(2) 分别打印出每一位数字;(3) 按逆序打印出各位数字,例如原数为 321,应输出 123。int main()int i,k;int a5;unsigned int x;scanf(%u,if(x99999 | x=k;i-) printf(%d ,ai);printf(n);return 0;5.8 企业发放的奖金根据
14、利润提成。利润(I)低于或等于 10万元的,奖金可提 10%;利润高于 10万元,低于 20万元(100000aj+1)temp=aj;aj=aj+1;aj+1=temp;return 1;5.10 有四个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为 1。这四个塔的高度都为 10米,塔以外无建筑物。今输入任一点的坐标,求该点相应的高度(塔外的高度为 0)。double TowerHeight(double x,double y,double z);int main()double x,y,z;scanf(%lf %lf %lf,printf(该点的高度为%l
15、fn,TowerHeight(x,y,z);return 0;double TowerHeight(double x,double y,double z)if( (x-2)*(x-2)+(y-2)*(y-2)64) i+;elseif(*p=32) j+;elseif(*p47) k+;else m+;p+;printf(英文字符个数为:%dn,i);printf(空格数为:%dn,j);printf(数字个数为:%dn,k);printf(其它字符个数为:%dn,m);return 0;6.3 求 Sn=a + aa + aaa + + aaa (n个 a)之值,其中 a是一个数字。long int SumOfaa(int a,int k)if(aprecision)x1=x2;x2=(x1+a/x1)/2;return x2;6.12 用牛顿迭代法求方程在 1.5附近的根。2x3-4x2+3x-6=0/* 牛顿迭代法解方程 */double NewtonSolvingEquation(double x,double pre