C语言教材习题答案(陈刚主编)

上传人:xian****hua 文档编号:154728354 上传时间:2022-09-21 格式:DOC 页数:29 大小:57KB
收藏 版权申诉 举报 下载
C语言教材习题答案(陈刚主编)_第1页
第1页 / 共29页
C语言教材习题答案(陈刚主编)_第2页
第2页 / 共29页
C语言教材习题答案(陈刚主编)_第3页
第3页 / 共29页
资源描述:

《C语言教材习题答案(陈刚主编)》由会员分享,可在线阅读,更多相关《C语言教材习题答案(陈刚主编)(29页珍藏版)》请在装配图网上搜索。

1、教材习题答案习题1一填空题1C程序是由(函数 )构成的,一个C程序中至少包含(main函数 ) 。因此,( 函数 ) 是C程序的基本单位。2C程序注释是由(/* ) 和( */ ) 所界定的文字信息组成的。3函数体一般包括(声明部分) 和(执行部分 ) 。二判断题1一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。 (正确)2main函数必须写在一个C程序的最前面。 (错误)3一个C程序可以包含若干的函数。 (正确)4C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。 (正确)5C程序的注释只能是一行。 (错误)6C程序

2、的注释不能是中文文字信息。 (错误)8可以使用Turbo C来编译和连接一个C程序。 (正确)9可以使用Turbo C来运行一个C程序。 (正确)10可以使用Turbo C来实时调试(即动态调试)一个C程序。 (正确)三、在c+ 6.0中输入如下的程序,编译、连接通过后显示结果 (1) #include “stdio.h” void main() printf(“ * ”) printf(“ * ”); printf(“ * ”); printf(“* ”); 答案: * * * * (2)已知底和高,计算三角形的面积。#include “stdio.h” void main() int bo

3、ttom,high,area; /*bottom 表示底,high 表示高,area表示面积*/bottom=4;high=6;area=bottom*high/2;printf(“the area is %dn”,area);答案:the area is 12四、算法设计:请试着分别用自然语言或、程序流程图和NS图描述如下算法。1. 设计一个程序在屏幕上显示如下的文字HELLO WELCOME YOU2. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。3. 对输入的某学生成绩

4、,如果学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。4. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。5. 一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个,问共有多少个桃子。答案:1#include “stdio.h”main() printf(“HELLO WELCOME YOU”);2水仙花数产生在100到999之间,利用穷举法,对此范围之内的所有数一个个进行测试,关键是要对每一个三位数分离出它的三个数字。具体的算法是:n%10,得到

5、个位,(n/10)%10,得到百位数字,n/100,得到个位数字。再利用水仙花数的含义来判断该数是否满足条件。#include “stdio.h”main() int n,i,j,k; for(n=100;n=90) printf(An); else if(grade=60 &grade=89) printf(Bn); else printf(Cn);4先考虑一个整数m,如何判断它是否为完数。从数学知识可知:一个数m除该数本身外的所有因子都在1m/2之间。算法中要取得因子之和,只要在1m/2之间找到所有的整数m的数,将其累加起来即可。如果累加起来与m本身相等,则表示m是一个完数,可以将m输出。

6、#include stdio.hmain() int m,i,s; for(m=2;m=1000;m+) s=0; for(i=1;i=m/2;i+) if(m%i=0) s+=i; if(m=s) printf(%dt,m); printf(n);5 找出前后两天的数量关系,然后用递推法求解。设第十天的桃子数目为t,昨天的数为y,则t=y/2-1,得到y=2t+2,这样由今日数目可以求出昨日数目,从最后一天开始,倒退到第一天,倒退的循环次数比天数少1。所以,若已知第n天只留下一个,问第一天有多少个时,则倒退循环n-1次得到结果。天数: 10 9 8 7 6 5 4 3 2 1 桃子数目:1

7、4 10 22 46 94 190 382 766 1534#include stdio.hmain() int i,t,y,n; t=1; printf(ninput number n:n); scanf(%d,&n); for(i=1;i12 ? x+10 : x-12;printf(“%dn”,y);A) 4 B) 3 C) 2 D) 1若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 C 。A) A%2=1 B) !(A%2=0) C) !(A%2) D) A%2设有:int a=1,b=2,c=3,d=4,m=2,n=2;执

8、行(m=ab)&(n=cd)后n的值为 B 。 A) 1 B) 2 C) 3 D) 4以下程序的运行结果是 B 。main() int a,b,d=241; a=d/100%9; b=(-1)&(-1); printf(“%d,%d”,a,b);A) 6,1 B) 2,1 C) 6,0 D) 2,0已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(xy) z=x; x=y; y=z;A) x=10, y=20, z=30 B) x=20, y=30, z=30C) x=20, y=30, z=10 D) x=20, y=30, z=20以下程序的运行结果是

9、 C 。main() int m=5; if(m+5) printf(“%dn”,m); else; printf(“%dn”,m-);A) 4 B) 5 C) 6 D) 7判断char型变量ch是否为大写字母的正确表达式是 C 。A) A=ch=A)&(ch=A)&(ch=Z) D) (A= ch)逻辑运算符两侧运算对象的数据类型 D 。A) 只能是0和1 B) 只能是0或非0正数C) 只能是整型或字符型数据 D) 可以是任何类型的数据sizeof(float)是 B 。A) 一个双精度型表达式 B) 一个整型表达式C) 一种函数表达式 D) 一个不合法的表达式设x、y、z和k都是int型变

10、量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为 CA) 4 B) 16 C) 32 D) 52设有如下的变量定义: int i=8, k, a, b; unsigned long w=5; double x=1, 42, y=5.2;则以下符合C语言语法的表达式是 AA) a+=a-=(b=4)*(a=3) B) x%(-3);C) a=a*3=2 D) y=float(i)假定有以下变量定义: int k=7,x=12;则能使值为3的表达式是 DA) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5)设x和y均为int型

11、变量,则以下语句:x+=y,y=x-y;x-=y;的功能是 DA) 把x和y按从大到小排列 B) 把x和y按从小到大排列C) 无确定结果 D) 交换x和y中的值以下程序的输出结果是 D main() int a=12,b=12; printf(%d,%dn,- -a,+ +b); A) 10 10 B) 12 12 C) 11 10 D) 11 13在C语言提供的合法的关键字是 DA) swicth B) cher C) Case D) default若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 CA)1 B)2 C)2.0 D)2.5C语言提供的合法的数据类型关键

12、字是 BA) Double B) short C) integer D) Char在C语言中,合法的长整型常数是 AA) 0L B) 4962710 C) 0.054838743 D) 2.1869e10二、填空题scanf函数的格式化字符串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,则多余的输出项_忽略_。如果格式说明的个数多于输出项的个数,则多余多余的格式将输出_。以下程序的运行结果是_52.00_。#include void main()int i=5,j=9; float x=2.3,y=45.; printf(“%8.2fn”,i%(int)(x+y)*j

13、/2/3+y);若有定义:char c=010;则变量c中包含的字符个数为_1个_。若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n+后x的值为_10_,n的值为_6_。若a是int型变量,则计算下面表达式A=25/3%3后a的值为_2_。若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为_12_,计算表达式x=a=4,6*2后的x 值为_4_。若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_26_。若s是int型变量,且s6,则表达式s%2+(s+1)%2的值为_1_。在VC+中,一个int型数据在内存中占4个字节,则int型数据的取

14、值范围为_-21474836482147483647_。若有以下定义int m=5,y=2;,则计算表达式y+=y-=m*=y后的y值是_-16_。设有定义语句:int i=3; float f=456.789; 则表达式1.2+i+A+f值的数据类型是_double_。三、思考以下问题1 几种基本数据类型各占几个字节?2 标识符分哪几类,各有什么用途?3 为什么要定义符号常量?4 变量名定义有什么规则?5 C语言有哪些几类运算符号,又有哪几类表达式?习题3一、 选择题能正确表示a和b同时为正或同时为负的逻辑表达式是 DA) (a=0 | b=0) & (a0 | b=0 & b=0) & (

15、a0 & b0 & a+b0 以下条件表达式中能完全等价于条件表达式x的是( B )。A) (x=0) B) (x!=0)C) (x=1) D) (x!=1) 设ch是char型变量,值为A,则表达式ch=(ch=A & ch=Z)?ch+32:ch的值是: BA) Z B) aC) z D) A 设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是 DA) a&b B) a=bC) a|b+c&b-c D) !(ab)&(n=cd) 后n的值为 B A) 1 B) 2C) 3 D) 0 设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为

16、Cx=y=z=1;t=+x | +y & +z;A) 不定值 B) 4C) 1 D) 0 已知 int x=10,y=20,z=30,则执行 if (xy) z=x;x=y;y=z;语句后,x、y、z 的值是( B )。A) x=10,y=20,z=30 B) x=20,y=30,z=30C) x=20,y=30,z=10 D) x=20,y=30,z=20 设a为整型变量,不能正确表达数学关系10a15的C语言表达式是: AA) 10a10&a15 D) !(a=15) 语句:printf(%d,(a=2) & (b=-2);的输出结果是 DA)无输出 B)结果不确定C)-1 D)1 执行下

17、列程序片段时输出结果是。 C int x=13,y=5; printf(“%d”,x%=(y/=2);A)3 B)2 C)1 D)0下列程序的输出结果是。 B main ( ) int x=023;printf(“%d”,-x); A)17 B)18 C)23 D)24已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是。 D int a1,a2; char c1,c2; scanf(“%d%d”,&a1,&a2); scanf(“%c%c”,&c1,&c2);A)1020AB B)10 20 ABC)10 20 AB D

18、)10 20AB执行下列程序片段时输出结果是。 B int x=5,y; y=2+(x+=x+,x+8,+x); printf(“%d”,y);A)13 B)14 C)15 D)16有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,则正确的数据输入方式是 。 DA)132 B)1,3,2C)a=1 b=3 c=2 D)a=1,b=3,c=2二、读程序或程序段,写出结果1. char c1=a,c2=c; printf(“%d,%c”,c2-c1,c2-a+C); 结果:2,E2 #include “stdio.h” ma

19、in() char ch1,ch2; ch1=A+5-3 ; ch2=A+6-3; printf(“%d,%c”,ch1,ch2); 结果:-87,D3. #include “stdio.h” main() int x;float y; scanf(“%3d%f”,&x,&y); printf(“x=%d,y=%f”,x,y); 当执行时从第一列输入数据1234空格678回车, 则x和y的值分别是多少? 结果:x=123,y=4.0000004. main ( ) int a=12345; float b=-198.345, c=6.5; printf(“a=%4d,b=%-10.2e,c=%

20、6.2fn”,a,b,c); 结果:a=12345,b=-1.98e+002,c= 6.505. main ( ) int x=-2345; float y=-12.3; printf(“%6d,%06.2f”,x,y); 三、填空题1. C语言的程序是由一个或者多个文件组成的,每个文件又是由一个或多个 函数 组成的。2.C语句可以分为 表达式语句, 函数调用语句,复合语句,空语句和控制语句等5种类型。3.C控制语句有 3 种。4.一个表达式要构成一个C语句,必须 加分号 。5.复合语句是用一对 大括号 界定的语句块。6.printf函数和scanf函数的格式说明都使用 # 字符开始。7.sc

21、anf处理输入数据时,遇到下列情况时该数据认为结束:(1)遇空格、“回车”、“跳格”键。(2) 遇宽度结束 ,(3) 遇非法输入 。8.已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是 。9.C语言本身不提供输入输出语句,其输入输出操作是由 函数 来实现的。10.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令: #include 。四、程序设计1. 编写一个程序,从键盘接受3个整数,作为三角形的三边,求出三角形的 面积答案:#include #include main() int a

22、,b,c; double p,S; printf(请输入三边长度(如3,4,5): ); scanf(%d,%d,%d,&a,&b,&c); if(a+b=c|b+c=a|a+c=b) printf(您所输入的三边不构成三角形!); else p=(a+b+c)/2; S=sqrt(p*(p-a)*(p-b)*(p-c); printf(此三角形面积为:%f,S); 2. 编写一个程序,输入华氏温度,输出相应的摄氏温度。转换公式是:c=(f-32)/1.8 ,c表示摄氏温度,f表示华氏温度。答案:#includevoid main()double c,f; printf(请输入一个华氏温度:)

23、; scanf(%lf,&f); c=(f-32.0)/1.8; printf(摄氏温度为:%5.2fn,c);3. 输入秒数,将它转换,用小时、分钟、秒来表示。例如输入7278秒,则输出:2小时1分18秒。答案:#include main()int s,f,m; m=7278; s=m/3600; f=m%3600/60; m=m%3600%60;printf(%d:%d:%d,s,f,m);习题41、 选择题: D B A A A D A C C B D B D D A2、读程序写结果 运行结果: 6 运行结果: s=2,t=3 运行结果: 4 第一次输入:x=0; y=2; z=3; 运

24、行结果: *#第二次输入:x=1; y=2; z=1; 运行结果: $*3、编写程序 编程实现:输入2个一位的正整数,如果同是奇数,输出2个数的平方值;如果同是偶数,输出2个数的立方值;否则,输出原数。 程序: #include main( )int a, b; printf(“input a b:”); scanf(“%d %d”, &a, &b); if(a%2=1 & b%2=1) printf(“n %d, %d”, a*a, b*b);else if(a%2=0 & b%2=0) printf(“n %d, %d”, a*a*a, b*b*b); else printf(“n %d,

25、 %d”, a, b); 编程实现:输入1个不多于四位的正整数, 求出它是几位数; 分别打印出每一位数字; 按逆序打印出该数,例如原数是321输出123 程序: #includemain() int n,n1,n2,n3,m; printf(“input nnn:”); scanf(“%d”, &n);if(n99) m=3; n1=n%10; n2=n%100/10; n3=n/100; printf(“n %d, %d, %d, %d ”, m, n1, n2, n3); printf(“n %d ”, n1*100+n2*10+n3); else if(n9) m=2; n1=n%10;

26、 n2=n/10; printf(“n %d, %d, %d ”, m, n1, n2);printf(“n %d ”, n1*10+n2); else m=1; n1=n; printf(“n %d, %d ”, m, n1); printf(“n %d ”, n1); 有一分段函数: x (x1) y = 2x-1 (1x10) 3x-11 (x10) 请编写一程序,输入一个x,打印输出y值。 程序: #includemain() float x,y; printf(“input x:”); scanf(“%f”, &x); if(x=10) y=3*x-11;else if(x=1 &

27、x10) y=2*x-1; else y=x;printf(“n %f”, y);习题51、 选择题: C B B C C B B B A C C C A D C2、读程序写结果: 运行结果: *#*# 运行结果: x=11111 x=1112 x=113 x=14 x=5 运行结果: 0111223、编程 找出100200之间的不能被3整除的数 程序: #includemain( ) int i; for(i=101; i200; i+) if(i%3!=0) printf(“ %d n”, i); 已知四位数a2b3能被23整除,编程求出此数 程序: #includemain( ) int

28、 a,b; for(a=1; a=9; a+) for(b=0; b=9; b+) if(a*1000+200+b*10+3)%23=0) printf(“%dn ”, a*1000+200+b*10+3); 将输入的数字字串(回车结束)转换为对应的整数 程序: #include#includemain( ) char c=getchar( ); int n; long int s=0; while(c!=n) if(isdigit(c)n=c-0; s=s*10+n; c=getchar( ); printf(“s=%d ”, s); 求100以内最小的自然数n,使1*1+2*2+3*3+n

29、*n5500 程序1: #includemain( )( int n,s=0; for(n=1; s5500; n+) s=s+n*n; printf(“%dn ”, n); 程序2: #includemain( )( int n,s=0; for(n=1; n5500) break; printf(“%dn ”, n); 求1/1!+1/2!+.+1/10! (结果保留10位小数) 程序: #includemain( ) int i, n=1; double s=0.0; for(i=1; i=10; i+) n=n*i; s=s+1.0/n; printf(“s=%16.10lf ”, s

30、); 求1000以内的完数。完数就是其真因子的和等于其本身的数。 程序: #includemain( )int a, i, s; for( a=1; a1000; a+ ) s=0; for( i=1; ia; i+) if(a%i=0) s=s+i; if(a=s) printf(“%dn”, a); 输出九九乘法表(正三角形式) 程序: #includemain( ) int i, j; for(i=1; i=9; i+) for(j=1; j=i; j+) printf(“ %2d*%2d=%2d ”, i, j, i*j); printf(“n ”); 输出如下图形。 # # # #

31、# # # 程序: #includemain( ) int i,j; for(i=1;i=4;i+) printf(“n”); for(j=1;j=4-i;j+) putchar( ); for(j=1;j=1;i-) printf(“n”); for(j=1;j=4-i;j+) putchar( ); for(j=1;j=i*2-1;j+) putchar(#); 输入2个正整数,求两数的最大公约数和最小公倍数。 程序: #includemain( ) int a , b , c ,t; printf ( Input two integers (0) : ) ; scanf ( %d%d ,

32、 &a , &b ) ; if(a 0 ) c = a % b ; a = b ; b = c ; printf ( n gys: %d , a ) ; printf ( n gbs: %d , t/a ) ; 习题61. 选择题:(1)B (2)()B()B()C()D()A ()C ()B (10)D (1)D (12)B2. 读程序:(1)2322 (2)a11:83. 程序填空:(1) a8=data; k=0 temp=ak; k=8(2) str0:str1 str2 t4. (1)#include main( ) float xscj6=90,85,92,77,80,62,ave

33、,sum=0;int i=0;while (i6) sum+=xscji; i+; ave=sum/6;printf(平均分: %0.1fn,ave); printf(高于平均分有:); for(i=0;iave)printf(%0.1f ,xscji); (2)#include #define N 10main()int i,j,t,aN,k; for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN;i+) for(j=i+1;jaj)k=j; if(k!=i) t=ai;ai=ak;ak=t;printf(n);for(i=0;iN;i+)printf(%6d,a

34、i); ()#include main( )int j,k,a34; printf(nInput array a:); for (j=0;j3;j+) for (k=0;k4;k+) scanf(%d, &ajk); printf(n Output array a:n); for (j=0;j3;j+) for (k=0;k4;k+) printf(%4d,ajk); printf(n); (4)main( )int a34,max,min,i,j,m1,n1,m2,n2;for (i=0;i3;i+) for (j=0;j4;j+) scanf(%d, &aij); min=a00; max

35、=a00;m1=n1=m2=n2=0;for (i=0;i3;i+) for (j=0;j4;j+)if (aijmax) max=aij; m2=i;n2=j; printf(min=a%d%d:%5dn,m1,n1,am1n1);printf(max=a%d%d:%5dn,m2,n2,am2n2);printf(n); ()#includevoid main( )int i,j; int d44= 1,2,3,4,5,6,7,8,4,3,2,1,1,2,3,4;for(i=0;i4;i+)for(j=0;j4;j+)if(dijdji) dij=dji;for(i=0;i4;i+) pri

36、ntf(n);for(j=0;j=i) printf(%6d,dij); else printf(%6c, );(6)#include #define M 15#define N 40main() int aM,bM,cN,i,j,k; gets(a); gets(b); printf(a=%s,a); printf(b=%s,b);printf(n); for (i=0;ai!=0;i+) ci=ai; printf(c=%s, c); printf(%d,i); printf(n); for (j=i;bj-i!=0;j+) cj=bj-i; printf(c=%s,c); printf(

37、n); for (k=0;kj;k+) printf(%c,ck); printf(n);(7)#include#includestring.hmain()int i,count=0;char str40;printf(inputs str1:);gets(str);for(i=0;stri!=0;i+)if( stri=a&stri+1=b)count+;i+;printf(%d,count);(8)#include#includestring.hmain()int i,max;char str1020,m20;printf(inputs str:n );for(i=0;i10;i+)get

38、s(stri);strcpy(m,str0);for(i=1;i10;i+)if(strlen(m)strlen(stri)strcpy(m,stri);max=i;printf(max=%s,strmax);习题75. 选择题:(1)C (2)B()D()A()B()C()C ()B ()D (10)C (1)D (12)B(13)D (14)C(15)D(16)C(17)C(18)D(19)B (20)A 6. 编程题:(1)#include #include int Is_prime(int i) int j = 0; for(j = 2; j i; j+) if(0 = (i%j) return 0; return 1; main( ) int i; printf(Please input a number:); scanf(%d,& i); if(1 = Is_prime(i) printf(%d is a primen, i); else printf(%d is not a primen, i); (2)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!