1、二级C语言课本课后习题参考答案二级C语言课本课后习题参考答案第一章 程序设计基本概念*(1) exe(2) C,obj , exe (3) 顺序,选择,循环*End of Chapter 1*第二章 C程序设计的初步知识*一、选择题(1) B (2) D (3) B (4) A (5) C (6) A (7) B (8) B (9) A (10) C (11)B (12)B (13)A 二、填空题(14)11,12 (15) 4.2,4.2 (16) , 说明,执行 (17) 关键字,用户标识符 (18) int ,float ,double (19) float a1=1,a2=1 ; (2
2、0) 存储单元 (21) 3.5 (22) a*b/c a/c*b a*(b/c) (23) 10赋给变量s(24) 位,0或1 (25) 8 ,255 ,11111111,0,00000000 (26) 32767 ,-32768 ,10000000 00000000 (27)十,八,十六三、上机改错题(28) 请指出以下C程序的错误所在include stdio.h ;main( ); / * main function * /float r, s; /* /*r is radius*/,/*s is area of circular*/*/r = 5.0 ;s=3.14159 * r *
3、 r ;printf(%fn,s); 正确应为:#include 或 #includestdio.hmain( ) /* main function */float r,s; /*r is radius, s is area of circular*/r = 5.0 ;s = 3.14159 * r * r ;printf(%fn,s); (29) 请指出以下C程序的错误所在#include stdio.hmain /* main function */float a,b,c,v; /*a,b,c are sides, v is volume of cube*/a = 2.0 ; b = 3.
4、0 ; c = 4.0 v = a * b * c;printf(%fn,v);正确应为:#includestdio.hmain( ) /* main function */float a,b,c,v; /*a,b,c are sides, v is volume of cube*/a = 2.0 ; b = 3.0 ; c = 4.0; v = a * b * c;printf(%fn,v);*End of Chapter 2*第三章 顺序结构*一、选择题(1) C (2) C (3) D (4) C (5) D (6) B (7) C (8) D (9) A (10)B (11)C (12
5、)D (13)D (14)A (15)C (16)C (17)C (18)均不对,应为scanf( “%6f”,&c) (18) C (20) B二、填空题(21) -200,2500 i=-200, j=2500 i = -200 , j = 2500(22) 12 ,0 ,0 (23) 语句块, ; (24) ;(25) 10025.811.89234 /*可用一个或几个空格作为输入时的间隔符*/10025.811.89234 /*Tab(制表符)也可以作为输入时的间隔符*/10025.811.89234 /*CR(回车符)也可以作为输入时的间隔符*/(26) x = 127, x =12
6、7, x=177, x=7f, x=127。(27) x = 127, x =127, x=177, x=7f, x=127。(28) a=513.789215, a=513.79, a=513.78921500, a=513.78921500三、上机改错题3.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。程序如下#include main( ) int hour,minute; hour=560/60; minute=560%60; printf(hour=%d,minute=%d,hour,minute);3.31 编写程序,输入两个整数:1500和350,求出它们的商
7、数和余数并进行输出。程序如下#include main( ) int num1,num2,i,j; /* 定义变量 i商,j余数 */printf(input num1 and num2:n); scanf(%d%d,&num1,&num2); i=num1/num2; j=num1%num2; printf(商=%dn 余数=%d,i,j); 3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。程序如下#include main( ) double a,b,c,average=0; printf(input a,b,
8、c(double):n); scanf(%lf%lf%lf,&a,&b,&c); average=(a+b+c)/3; average=average*10; average=average+0.5; average=(int)average; average=average/10; printf(average=%lf,average);3.33 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。程序如下#include main( ) int a,b,c,t=0; printf(input a b c:n); scanf(%d%
9、d%d,&a,&b,&c); t=c;c=b;b=a;a=t; printf(a=%d b=%d c=%d,a,b,c);*End of Chapter 3*第四章 选择结构*一、选择题(1) A (2) A (3) A (4) D (5) C (6) A (7) B (8) 均错 (9)D (10)A 二、填空题(11) 非零,零 (12) 或或=、=、!=(13) 逻辑非、逻辑与、逻辑或 (14) !、或或=、=、!=、&、| (15) ! (16) a= =b | a 4 或 x 4 | x0 ? 0 : 1 , 1 (19) a=3 , b=2 , c=2 (20) * #三、编程题4
10、.21 当a0时,请将以下语句改写成switch语句。if( a30 ) m=1;else if( a40 ) m=2;else if( a50 ) m=3;else if( a60 ) m=4;else m=5;程序如下#include main()int a;printf(Enter a:n);scanf(%d,&a);switch(a/10)case 0:case 1:case 2: printf(m=1); break ;case 3: printf(m=2); break ; case 4: printf(m=3); break ;case 5: printf(m=4); break
11、 ;default: printf(m=5); 4.22 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日期(年:y1、月:m1、日:d1);输出该生的实足年龄。程序如下#include main( ) int y0,y1,m0,m1,d0,d1,age=0; printf(Your Birthday(yyyy-mm-dd):n); scanf(%d-%d-%d,&y0,&m0,&d0); printf(Current Date(yyyy-mm-dd):n); scanf(%d-%d-%d,&y1,&m1,&d1); if(d1BR if(m1BR age=y1-y
12、0; printf(nAge=%d,age); 4.23 编写程序,输入一个整数,打印出它是奇数还是偶数。程序如下#include main( ) int i; printf(input a integer:n); scanf(%d,&i); if(i%2=0) /*条件判断*/ printf(%d is a even,i); else printf(%d is a odd,i);4.24 编写程序,输入a、b、c三个数,打印出最大者。程序如下#include main( ) int a,b,c,max = 0; printf(input (int)a b and c:n); scanf(%d
13、%d%d,&a,&b,&c); max = a; if(maxBR max=b; if(maxBR max=c; printf(max=%d,max);4.25 有一函数: 编写一程序,要求输入x的值,输出y的值。分别(1)不嵌套的if语句 (2)嵌套的if语句(3)if_else语句 (4)switch语句程序如下源程序一:(1)不嵌套的if语句#include main( ) float x; printf(input x:n); scanf(%f,&x); if(x-5&x0&x10) printf(y=%f,x+1); if(x=10)printf(input error);源程序二:
14、(2)嵌套的if语句#include main( ) float x; printf(input x:n); scanf(%f,&x); if(x-5&x10) if(x=0) printf(y=%f,x-1); if(x0) printf(y=%f,x+1); if(x=10)printf(input error);源程序三:(3)if_else语句#include main( ) float x; printf(input x:n); scanf(%f,&x); if(x-5&x10) if(x0) printf(y=%f,x-1); else if(x=0) printf(y=%f,x)
15、; else printf(y=%f,x+1); else printf(input error);源程序四:(4)switch语句#include main()int flag;float x;printf(Enter x:n);scanf(%f,&x);if(x-5 &x0 &x10) flag=1;switch(flag)case -1: printf(y=%f,x); break;case 0: printf(y=%f,x-1); break;case 1: printf(y=%f,x+1); break; *End of Chapter 4*第五章 循环结构*一、选择题(1) D (
16、2) C (3) B (4) C (5) C (6) B (7) D (8) A (9) D (10)D 二、填空题(11) 5, 4, 6 (12) 有错 (13) -1 (14) 11 (15) d=1.0 , k+ , k=0 , x三、编程题5.17 编写程序,求1357.-99+101的值。程序如下#include main()int i,sum=0,s=1;for(i=1; i=101;i+=2) sum=sum+i*s;s=-s; /*控制符号交替变换*/printf(sum=%d,sum);5.18 编写程序,求e的值,e11/1!+1/2!+1/3!+1/4!+.+1/n!(
17、1)用for循环,计算前50项(2)用while循环,要求直至最后一项的值小于1e4。程序如下源程序一:(1)用for循环实现#include main( ) int i,n; double sum=1,t=1; printf(input n:n); scanf(%d,&n); for(i=1;i=n;i+) t=t*i; /* 实现阶乘*/sum=sum+1/t; printf(e=%lf,sum);源程序二:(2)用while循环实现#include main( ) int i; doubel sum=1,t=1; while(fabs(1.0/t)1e-4) /* fabs求浮点型数据的
18、绝对值 */ t=t*i; sum=sum+1/t; i+; printf(e=%lf,sum);5.19 编写程序,输出从公元1000年至2000年所有闰年的年号 每输出3个年号换一行。 判断公元年是否闰年的条件是:(1)公元年数如能被4整除,而不能被100整除,则是闰年。(2)公元年数能被400整除也是闰年。程序如下#include main( ) int i,j=0; for(i=1000;i=2000;i+) if(i%4=0)&(i%100!=0)|(i%400=0) /* 判断是否是闰年的条件 */ printf(&d ,i); j+; if(j%3=0) /* 控制换行 */ p
19、rintf(n); 5.20 编写程序,打印以下图形:*程序如下#include #include main( ) int i,j; for(i=1;i=7;i+) /*控制行数*/ for(j=1;j=7;j+) /*控制星数*/ if(j7-abs(4-i) printf( ); else printf(*) ; printf(n); *End of Chapter 5*第六章 字符型数据*一、选择题(1) B (2) D (3) A (4) A (5) B (6) D (7) D (8)B (9) A (10)A (11)B (c) 二、填空题(12) -1 (13) 1 (14) ct
20、ype.h (15) 0 (16) 10A20B30C40D (17) 7.29 101.298 AB (7.29101.298AB) (18) A7.29B101.298 (19) A B C三、编程题6.19 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.程序如下#include main( ) int i=0; char ch; while(ch=getchar( )!=n) printf(%4c%4d,ch,ch); i+; if(i%3=0) printf(n); 6.20 请编写程序,输入一行数字字符(用EOF结束),每个数字字符
21、的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如,若输入:2 4 8 3 (代表Enter键)则输出整数:2483程序如下#include main()char ch;while(ch=getchar()!=EOF)if(ch= )continue;else printf(%c,ch);6.21 请编写程序统计输入的行数,输入用EOF结束输入。程序如下#include main()char ch;int i=0;while(ch=getchar()!=EOF)if(ch=n) i+;printf(%d,i);6.22 请编写程序统计输入的一行中小写字母的个数。程序如下#includ
22、e main()int i=0;char ch;while(ch=getchar()!=n)if(ch=a)&(ch=z)i+;printf(%d,i);6.23 请编写输出以下图案的程序,图案的行数由输入的值确定。ABBBCCCCCDDDDDDDEEEEEEEEEEE程序如下#include main()int i,j,k,n;printf(Enter n(integer):n);scanf(%d,&n);for(i=1;ii;j-)printf( );for(k=1;k=2*i-1;k+)printf(%c,64+i);printf(n); *End of Chapter 6*第七章 函 数*一、选择题(1) C (2) C (3) B (4)C (5) A (6) D (7) A 二、填空题(8) 12 (9) 9.000000 (10) 4 (11) n=1 ,s (12) z=1 ; i= y , z = z * x (13) 1 , s * i , 0 ,f ( k )三、程序
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1