《C语言课后习题参考答案(前5章).doc》由会员分享,可在线阅读,更多相关《C语言课后习题参考答案(前5章).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言课后习题参考答案(前5章)【精品文档】第 11 页C语言程序设计基础书后习题参考答案(无编程题答案,红色为书上错误)第二章 习 题一、选择题。1、在C语言中,要求参加运算的数必须是整数的运算符是( )A)% B)/ C) ! D)*2、若已定义x和y为 double类型,则表达式“x=1.0,y=x+3/2”的值是( )A)1 B)2 C)2.0 D) 2.53、若变量已正确定义并赋值,符合C语言语法的表达式是( )A)a=a+7; B) a=7+b+c,a+ C) int (12.3/4 ) D) a=a+7=c+b4、若有定义:int x=3,
2、y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为( )A)1.0 B)1 C) 2.0 D)25、若x和 n均是 int型变量,且 x的初值为12,n的初值为5 ,则执行表达式x%=(n%=2)后x 的值为( )A) 0 B)1 C) 2 D)36、假设所有变量均为整型,则表达式(a=2,b=5,a+,b+,a+b)的值为( )A)7 B)8 C)9 D)107、指出下列哪一个选项的程序是错误的( )A)#include B) #include void main( ) void main( ) int x,y,z; int x,y,z; x
3、=0;y=x+1; x=0,y=x+1; z=x+y; z=x+y;C) #include D) #include void main( ) void main( ) int x,y,z; int x,y,z; x=0;y=x+1, x=0,y=x+1; z=x+y; z=x+y,8、若a为整型变量,则以下语句( )a=-2L;printf(“%dn”,a);A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为29、若变量a,i已经正确定义,且i已正确赋值,则合法的语句是( )A)i=int(a) B) +i; C)a=a+=5; D) a=int(i);10、若执行以下程序段后
4、,c3的值为( )int c1=1,c2=2,c3;c3=1.0/c2*c1;A)0 B)0.5 C)1 D)211、如下程序的运行结果是( )#includevoid main( ) int y=3,x=3,z=1; printf(“%d%dn”,(+x,y+),z+2);A) 3 4 B) 4 2 C) 4 3 D) 3 312、以下程序的输入结果为( )#includevoid main( )int i=4,a;a=i+;printf(“a=%d,i=%d,a,i);A)a=4,i=4 B)a=5,i=4 C)a=4,i=5 D)a=5,i=513、以下程序的输出结果是( )#inclu
5、de void main( ) int a=5,b=4,c=6,d; printf(“%dn”,d=ab?(ac?a:c):( b); /多了(A) 5 B) 4 C) 6 D) 不确定14、在C语言中,如果下面的变量都是int类型,则输出的结果是( )sum=pad=5;pad=sum+,pad+,+pad;printf(“%dn”,pad);A)7 B)6 C)5 D)415、已知int i;float f;,正确的语句是( )A)(int f)%i; B)int(f)%i; C) int(f%i); D)(int)f%i;16、已知 int j,i=1;执行语句j=-i+;后,j的值是(
6、 )A)1 B)2 C)-1 D)-217、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是( )A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=a*(a=3)18、C语言中运算对象必须是整型的运算符是 ( )A) %= B) / C) = D)=19、有以下程序 main() int m=12,n=34;printf(%d%d,m+,+n);printf(%d%dn,n+,+m);程序运行后的输出结果是( )A)12353514 B)12353513 C)123
7、43514 D)1234351320、下面程序的输出结果是( )#includemain( )int x=5,y=3; printf(“%dn”,y=x/y); A)0 B)1 C)3 D)不确定的值21、执行下列程序中的输出语句后,a的值是( )#includevoid main( )int a; printf(“%dn”,(a=3*5,a*4,a+5); A) 65 B)20 C)15 D)1022、执行下列程序时输入1234567,程序的运行结果为( )#includemain( )int x,y;scanf (“%2d%2ld”,&x,&y);printf(“%dn”,x+y); A)
8、17 B)46 C)15 D)923 、已知char a;int b;float c;double d; 则表达式a*b+c-d结果类型为( )A) double B)int C)float D) char二、 填空题1、若i为int整型变量且赋值为6,则运算i+后的表达式的值是_6_,变量i的值是_7_。2、若a是int型变量,则执行表达式a=25/3%3后a的值为_2_。3、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n+后x的值为_10_ ,n的值为_6_。4、若a是int型变量 , 则表达式(a=4*5,a*2),a+6的值为_26_。5、若有定义int m=5,
9、y=2;, 则执行表达式y+=y-=m*=y后y的值是_-16_。6、表达式8.0*(1/2)的值为_0_。7、x为整型变量,则执行x=6;x+=x-=x*x;后,x的值为 -60 。第3章习题一、选择题1、若有说明:double a; 则正确的输入语句为( )A)scanf(“%lf”,a); B) scanf(“%f”,&a); C) scanf(“%lf”,&a); D) scanf(“%le”,&a);2、若有以下程序段:int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%dn”,a,b,c);其输出结果是()A)3,0,-10 B)
10、0,0,5 C)-10,3,-10 D)3,0,33、有以下程序#includevoid main( ) int m=3,n=4,x;x=-m+;x=x+8/+n;printf(%dn,x); 程序运行后的输出结果是 ( )A)3 B)5 C)-1 D)-24、以下程序段的输出结果是( )float a=57.666;printf(“*%010.2f*n”,a);A) *0000057.66* B) *57.66* C)*0000057.67* D)*57.57*思考:若是printf(“*%10.2f*n”,a);结果是怎样呢? * 57.67*5、若变量C定义为float型,当从终端输入2
11、83.1900后按回车键,能给变量c赋以283.19的输入语句是( )A)scanf (“%f”,c); B) scanf (“%8.4f”,&c); C) scanf (“%6.2f”,&c); D) scanf (“%8f”,&c);11、已知int a,b; ,用语句scanf(“%d%d”,&a,&b);输入a,b的值时,不能作为输入数据分隔符的是( )A), B)空格 C)回车 D)【Tab】键12、下列程序的输出结果是( )#includevoid main( ) printf(“%f”,2.5+1*7%2/4); A) 2.500000 B)2.750000 C)3.375000
12、 D)3.000000 二、填空题1、C语言句尾用_;分号_结束。2、以下程序的输出是_。-200,25i=-200,j=25i=-200,j=25#includevoid main( )int i=-200,j=25; printf(“%d,%d”, i,j); printf(“i=%d,j=%dn”, i,j); printf(“i=%dn,j=%dn”, i,j);三、编程题。1、输入一个华氏温度f,要求输出摄氏温度c,公式为f=9/5*c+32 ,输出结果,并要求输出的结果保留到小数点后两位。2、从键盘输入三个整数,输出最大的那个数(用条件表达式实现)。3、输入三个小写字母,输出其对应
13、的大写字母。4、输入正方形的边长,输出其周长和面积。5、编写一个程序,输入一个整数,判断它是奇数还是偶数,并输出判断结果(用条件表达式实现)。第4章习题一、选择题1.下列错误的语句是( )A)if(ab) printf(“%d”,a); B) if(&) ; a=m;C) if(1) a=m; else a=n; D) if(a0) ; else a=n;2.阅读下列程序:#includevoid main( ) float a,b,t; scanf(“%f,%f”,&a,&b); if(ab)t=a; a=b; b=t;printf(“%5.2f,%5.2f”,a,b); 运行时从键盘输入3
14、.8和-3.4,则正确的输出结果是( )A)-3.40,-3.80 B) -3.40,3.80 C)-3.4,3.8 D)3.80,-3.403.对下列程序,( )是正确的判断。#includevoid main( )int x,y; scanf(“%f,%f:”,&x,&y); if(xy) x=y; y=x; else x+;y+; printf(“%d,%d”, x,y);A)有语法错误,不能通过编译 B)若输入数据3和4,则输出4和5C)若输入数据4和3,则输出3和4 D)若输入数据4和3,则输出4和44.以下关于运算符的优先顺序的描述中正确的是( )/严格来说,没有正确答案A)关系运
15、算符算术运算符赋值运算符逻辑运算符B)逻辑运算符关系运算符算术运算符赋值运算符C)赋值运算符逻辑运算符关系运算符算术运算符D)算术运算符关系运算符赋值运算符逻辑运算符5.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是 ( )A)(!a=1)&(!b=0) B)a C)a & b D)a|(b+b)&(c-a)6.设x,y,t均为int型变量,则执行语句x=y=3;t=+x|+y;后,y的值为( )A)不定值 B)4 C)3 D)17.下列程序的输出结果是( )#include void main( )int a=0,b=0,c=0; if(+a0|+b0) +c;pr
16、intf(“na=%d,b=%d,c=%d”,a,b,c);A)a=0,b=0,c=0 B)a=1,b=1,c=1 C)a=1,b=0,c=1 D)a=0,b=1,c=1二、填空题1.当a=1,b=2,c=3时,以下语句执行后,a、b、c中的值分别是_a=3_、_b=2_和_c=2_。if (ac)b=a;a=c;c=b;2.若有定义:int a=10,b=9,c=8;,接着顺序执行下列语句后,变量b中的值是_3_。c=(a-=(b-1);c=(a%11)+(b=3);3.以下程序运行后的输出结果是_20,0_。#includevoid main( )int x=10,y=20,t=0; if
17、(x=y) t=x;x=y;y=t; printf(“%d,%dn”,x,y);4.若运行时输入12,则下列程序的运行结果是_0_。#includevoid main( )int x,y; scanf(“%d”,&x); y=x12?x+10:x-12;printf(“%dn”,y);5.以下两个程序运行后的输出结果分别是 _1_和_2_ 。#include #includevoid main( ) void main( ) int a=1,b=2,c=3; int a=1,b=2,c=3;if(c=a) printf(%dn,c); if(c=a) printf(%dn,c);else pr
18、intf(%dn,b); else printf(%dn,b); 6.以下程序运行后的输出结果是 _2,20.000000_。#include void main( )char c; int n=100;float f=10; double x;x=f*=n/=(c=50);printf(%d ,%fn,n,x);7.以下程序运行后的输出结果是 _2 3 3_。#includevoid main( ) int i=1,j=2,k=3; if(i+=1&(+j=3|k+=3) printf(%d %d %dn,i,j,k);8.表达式3&4的值为_0_。表达式3|4的值为_0_。表达式3&4的值
19、是_1_。三、编程题。1、输入一个3位数,判断是否是一个“水仙花数”,水仙花数是指3位数的各位数字的立方和等于这个3位数本身,例如:对于3位数153,如果153=1*1*1+5*5*5+3*3*32、 输入一个数,判断它是否为奇数,如果是奇数则进一步判断它是否能被7整除。3、 从键盘任意输入一个数,判断是否为素数。4、 输入年月日,判断该日期是该年度的第几天。5、 根据输入的性别和身高判断是否符合招生要求。要求是:男生身高大于等于168cm为合格,女生身高大于等于158cm为合格。6、 输入一个不多于5位的正整数,判断并求出它是几位数。7、 从键盘输入5个学生成绩,统计并输出成绩在90分以上的
20、人数。8、已知银行存款不同期限的月息利率为: 2*x (x-10) x+5 (-10 x2)月利率= x-3 (2 10)要求输入本金及期税,输出到期时从银行得到多少利息?第5章习题一、选择题1.以下程序的输出结果是( )#includevoid main( )int i ; for(i=0;i=5;i+) if (i%2) putchar();putchar(#);A) # B) # C) # D) #2.以下程序的输出结果是( )#includevoid main( )int i,j,m=0;for(i=1;i=15;i+=4) for(j=3;j=19;j+=4) m+;printf(“
21、%dn”,m);A) 12 B) 15 C)20 D)253.以下程序的输出结果是( )#includevoid main( )int i,sum; for(i=1;i6;i+) sum+=sum; printf(“%dn”,sum);A)15 B) 14 C) 不确定 D) 04.有如下程序#includevoid main( )int i,sum=0;for(i=1;i=3;sum+)sum+=i;printf(“%dn”,sum);该程序的执行结果是( )A) 6 B) 3 C) 死循环 D) 05.有如下程序#define N 2#define M N+1#define NUM 2*M
22、+1#includevoid main( ) int i;for(i=1;i=NUM;i+) printf(“%dn”,i);该程序中的for循环执行的次数是( )A) 5 B) 6 C) 7 D) 86.以下程序段的输出结果是( )#includevoid main( )int x=3;do printf(“%d”,x-=2);while(!(-x);A)1 B)30 C)-12 D)死循 正确答案为1-27.以下循环体的执行次数是( 1 )#includevoid main( )int i,h; 错误 h应改为j for(i=0,j=1;i=j+1;i+=2,j-) printf(“%dn
23、”,i);8.有如下程序:#includevoid main( )int n=9; while(n6) n-;printf(“%d”,n); /少一括号该程序段的输出结果是( )A)987 B)876 C)8765 D)98769.以下的for循环( ) for(x=0,y=0;(y!=123)&(x4);x+) ;A)是无限循环 B)循环次数不定 C)循环执行4次 D)循环执行3次二.填空题1.以下程序的输出结果是_-1_。#includevoid main( ) int x=2; while(x-); printf(“%dn”,x);2.以下程序段的输出结果是_11_。#includevo
24、id main( )int i=0,sum=1;do sum+=i+; while(i5); /少一分号;printf(“%dn”,sum);3.以下程序段的功能是;从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请补充程序。#includevoid main( )float x,amax,amin;scanf(“%f”,&x);amax=x; amin=x;while(_x=0_) if(xamax) amax=x; if(_xamax_) amin=x;scanf; printf(“nmax=%fnamin=%fn”,amax,amin);4.以下程序段的输
25、出结果是_死循环_#includevoid main( )int k,n,m;n=10;m=1;k=1;while(k=n) m*=2;printf(“%dn”,m);5.下面程序的输出结果是_8_#includevoid main( )int a,b;for(a=1,b=1;a=20) break; if(b%3=1) b+=3; continue;b-=5;printf(“%d”,a);6.下面程序输出结果是_#includevoid main( )int a; for(a=0;a6;a+) if(a%2) printf(“%”); else continue; printf(“”); p
26、rintf(“n”);三.编程题1.编写程序求 1/100+2/99+1的值。2.编写程序,打印“*”字符形成的等腰三角形倒立金字塔图形。3.编写程序,输出100至200间的全部素数。4.编写程序,求fibonacci数列的前40项。fibonacci数列的第一个数和第二个数均为1,第三个数等于前两个数之和,依此类推。算法的表达式可表示为:f1=1(n=1)f1=1(n=2)fn=fn-1+fn-2(n3)5.编写程序,验证数学问题哥德巴赫猜想:大于等于6的偶数可表示为两个素数之和。例如6=3+3、8=3+5、16=3+13或16=5+11等。6.编写程序,计算1!+2!+3!+n!7.编写程序,实现古典问题之韩信点兵。有一队不足百人的队伍,三三数之余2,五五数之余3,七七数之余5,问人有几何?