C语言程序设计课后题答案

上传人:hao****an 文档编号:161926422 上传时间:2022-10-16 格式:DOC 页数:38 大小:95.51KB
收藏 版权申诉 举报 下载
C语言程序设计课后题答案_第1页
第1页 / 共38页
C语言程序设计课后题答案_第2页
第2页 / 共38页
C语言程序设计课后题答案_第3页
第3页 / 共38页
资源描述:

《C语言程序设计课后题答案》由会员分享,可在线阅读,更多相关《C语言程序设计课后题答案(38页珍藏版)》请在装配图网上搜索。

1、二级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 ; (20) 存储单元 (21) 3.

2、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 * r ;printf(%fn,

3、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.0 ; c = 4.0 v =

4、 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)D (13)D (14)A

5、(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 =127, x=177, x=7f,

6、 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分钟换算成用小时和分钟表示,然后进行输出。程序如下main( ) int hour,minute; hour=560/60; minute=560%60; printf(hour=%d,minute=%d,hour,minute);3.31 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。程序如下includemai

7、n( ) 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 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。程序如下main( ) double a,b,c,average=0; printf(input a,b,c(double):n); scanf(%lf%lf%lf,&a,&b

8、,&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。程序如下main( ) int a,b,c,t=0; printf(input a b c:n); scanf(%d%d%d,&a,&b,&c); t=c;c=b;b=a;a=t; printf(a=%d

9、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.21 当a0时,请将以下语句改写成switch语句。if( a30 ) m=1;els

10、e if( a40 ) m=2;else if( a50 ) m=3;else if( a if(m1BR age=y1-y0; printf(nAge=%d,age); 4.23 编写程序,输入一个整数,打印出它是奇数还是偶数。程序如下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三个数,打印出最大者。程序如下main( ) int a,b,c,max =

11、 0; printf(input (int)a b and c:n); scanf(%d%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语句main( ) float x; printf(input x:n); scanf(%f,&x); if(x-5&x0&x10) printf(y=%f,x+1)

12、; if(x=10)printf(input error);源程序二:(2)嵌套的if语句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语句main( ) float x; printf(input x:n); scanf(%f,&x); if(x-5&x10) if(x-5 &x0 &x10) flag=1;switch(flag

13、)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 (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的值。程序如下main()int

14、 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!(1)用for循环,计算前50项(2)用while循环,要求直至最后一项的值小于1e4。程序如下源程序一:(1)用for循环实现main( ) int i,n; double sum=1,t=1; printf(input n:n); scanf(%d,&n); for(i=1;i1e-4) /* fabs求浮点型数据的绝对值 */ t=t*i;

15、 sum=sum+1/t; i+; printf(e=%lf,sum);5.19 编写程序,输出从公元1000年至2000年所有闰年的年号 每输出3个年号换一行。 判断公元年是否闰年的条件是:(1)公元年数如能被4整除,而不能被100整除,则是闰年。(2)公元年数能被400整除也是闰年。程序如下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) /* 控制换行 */ printf(n); 5.20 编写程序,打印

16、以下图形:*程序如下#includemain( ) int i,j; for(i=1;i=7;i+) /*控制行数*/ for(j=1;j=7;j+) /*控制星数*/ if(j7-fabs(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) ctype.h (15) 0 (16) 10A20B30C40D (1

17、7) 7.29 101.298 AB (7.29101.298AB) (19) A B C三、编程题6.21 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.程序如下includemain( ) int i=0; char ch; while(ch=getchar( )!=n) printf(%4c%4d,ch,ch); i+; if(i%3=0) printf(n); 6.21 请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如,若输入:2 4 8 3 (代表Enter键)则

18、输出整数:2483程序如下#includemain()char ch;while(ch=getchar()!=EOF)if(ch= )continue;else printf(%c,ch);6.22 请编写程序统计输入的行数,输入用EOF结束输入。程序如下#includemain()char ch;int i=0;while(ch=getchar()!=EOF)if(ch=n) i+;printf(%d,i);6.23 请编写程序统计输入的一行中小写字母的个数。程序如下#includemain()int i=0;char ch;while(ch=getchar()!=n)if(ch=a)&(c

19、h=z)i+;printf(%d,i);6.24 请编写输出以下图案的程序,图案的行数由输入的值确定。ABBBCCCCCDDDDDDDEEEEEEEEEEE程序如下#includemain()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) 1

20、2 (9) 9.000000 (10) 4 (11) n=1 ,s (12) z=1 ; i= y , z = z * x (13) 1 , s * i , 0 ,f ( k )三、程序设计和编程题7.14 以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。fun(int n)int k,yes;for(k=2;k=n/2;k+)if(n%k=0) return yes=0;return yes=1;正确答案是:fun(int n)int k,yes=1;for(k=2;k s=s+1/i*t; t=-t; return s; 7.17 编写函数,根据整型形参m的值,计算如

21、下公式的值。t11/(2 x 2)-1/(3 x 3)-.-1/(m x m)例如:若m5,则应输出0.536389。程序如下main()float t=1;float f2(int);int i,m;scanf(%d,&m);for(i=2;i if(*maxBR *min = a ; /* 假定a的值为最小,把a值赋给指针变量*min */if(*minb) *min = b;if(*minc) *min = c;main()double a,b,c,max,min;printf(Enter a b c (double):n);scanf(%lf%lf%lf,&a,&b,&c);max_m

22、in(a,b,c,&max,&min);printf(max=%lf,min=%lf,max,min); *End of Chapter 8*第九章 数 组*一、选择题(1) D (2) A (3) A (4) A (5) C (6) A (7) B (8) D (9) C (10) C (11)C (12)D (13)D (14)A (15) A (16)A (17)C (18)C 二、填空题(19) 9 , 0 (20) 6 (21) 12 (22) 3 (23) 2721 (24) -850 , 2 , 0 (25) k = p , k (26) (c = getchar ( ) ) ,

23、 c - 65三、编程题9.27 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数.用下标为0元素统计字符1的个数,下标为1的元素统计字符2的个数,.程序如下#includevoid count(int a)int i;char ch;while(ch=getchar()!=n)for(i=0;i10;i+)if(i=ch-0)if(i=0)a9+;elseai-1+;main( )int i,a10=0;count(a);for(i=0;i10;i+)printf(a%d=%dn,i,a); 9.28 编写函数,对具有10个整数的数组进行如下操作:从第n个元素开始直到最后一个

24、元素,依次向前移动一个位置.输出移动后的结果. 程序如下fun (int a,int n)int i;for(i=n;i9;i+)a=ai+1;main()int a10=0,1,2,3,4,5,6,7,8,9,n,i;scanf(%d,&n);fun(a,n);for(i=0;i9;i+)printf(%d ,a);9.29 编写函数把数组中所有奇数放在另一个数组中返回.程序如下#include#includeint fun(int a,int b)int i,j=0;for(i=0;i10;i+)if(a%2=1)bj+=a;return(j);main()int i,j,a10,b10;

25、clrscr();printf(n*Enter 10 integer number:*n);for(i=0;i printf(%d ,b);getch(); 9.30 编写函数对字符数组中的输入字母,按由大到小的字母顺序进行排序。程序如下#includevoid alpha_sort(char a,int n);void alpha_rout(char a,int n);main()char a20;int n;clrscr();printf(*The original alphabetic is*:n);gets(a);n=strlen(a);alpha_sort(a,n);alpha_ro

26、ut(a,n);void alpha_sort(char a,int n)int i,j,p,t;for(j=0;jBR p=j;for(i=j+1;iBR if(apBR if(p!=j)t=aj;aj=ap;ap=t;void alpha_rout(char a,int n)int i;printf(n*The alphabetic of sorting is*:n);for(i=0;iBR printf(%c,a); 9.31 输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后, 数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。(1)插在最前

27、 (2)插在最后 (3)插在中间程序如下#include#define M 10void sort(int aM,int bM+1,int n)int i;for(i=0;iBR if(a0aM-1)if(nBR b=a;elseb=n;break; else if(na)b=a;else b=n; break; if(iBR for(;iBR bi+1=a;elseb=n;main()int i,n,aM,bM+1;clrscr();printf(Enter ten integer number(be sorted):n);for(i=0;iBR scanf(%d,&a);printf(En

28、ter a numbern);scanf(%d,&n);sort(a,b,n);printf(Result of insertn);for(i=0;i0)remainder=decimal%2;decimal=decimal/2;ai+=remainder;if(decimal=0;i-)printf(%d,a);9.33 编写函数调用随机函数产生0到19之间的随机数,在数组中存入15个互不重复的整数。要求在主函数中输出结果。若已定义x为int类型,调用随机函数步骤如下:include stdio.h.x=rand()%20 /*产生0到19的随机数*/程序如下#includevoid ran

29、d1(int a)int i=0,j,x,flag;while(i if(aj=x)i-;flag=0;break;if(flag=1)a=x;i+;main()int i,a15;clrscr();rand1(a);for(i=0;i a1k=0;for(j=0;jBR a1k+=aj;void column_sum(int aMM,int a2)int i,j,k;for(i=0,k=0;iBR a2k=0;for(j=0;jBR a2k+=aj;void diagonal_sum(int aMM,int a3)int i,j;for(i=0;iBR for(j=0;jBR if(i=j)

30、a30+=aj;if(i+j=M-1)a31+=aj;main()int i,j,aMM,a1M,a2M,a32=0;clrscr();i=M;printf(*Enter %d x %d phalanx*n,i,i);for(i=0;iBR for(j=0;jBR scanf(%d,&aj);line_sum(a,a1);column_sum(a,a2);diagonal_sum(a,a3);for(i=0;iBR printf(line%d=%dn,i,a1);for(i=0;iBR printf(column%d=%dn,i,a2);for(i=0;i for(j=0;jBR cj=aj+

31、bj;main()int i,j,k,aMM,bMM,cMM=0;i=M;printf(*Enter NO.1 Matrix( %d x %d)*n,i,i);for(i=0;iBR for(j=0;jBR scanf(%d,&aj);i=M;printf(*Enter NO.2 Matrix( %d x %d)*n,i,i);for(i=0;iBR for(j=0;jBR scanf(%d,&bj);add(a,b,c);i=M;printf(*Output result Matrix( %d x %d)*n,i,i);for(i=0;iBR for(j=0;jBR printf(%5d,c

32、j);printf(n); 9.36 编写函数打印出以下形式的乘法九九表。* A MULTIPLICATION TABLE *(1) (2) (3) (4) (5) (6) (7) (8) (9)-(1) 1 2 3 4 5 6 7 8 9 (2) 2 4 6 8 10 12 14 16 18 (3) 3 6 9 12 15 18 21 24 27 (4) 4 8 12 16 20 24 28 32 36 (5) 5 10 15 20 25 30 35 40 45(6) 6 12 18 24 30 36 42 48 54 (7) 7 14 21 28 35 42 49 56 63 (8) 8

33、16 24 32 50 48 56 64 72 (9) 9 18 27 36 45 54 63 72 81 -程序如下#includemain()int i,j;clrscr();printf(* A MULTIPLICATION TABLE *n);printf(1) (2) (3) (4) (5) (6) (7) (8) (9)n);printf(-n);for(i=1;i=9;i+)printf(t(%d),i);for(j=1;j=9;j+)printf(%4d,i*j);printf(n);printf(-n); 9.37 调用随机函数为5 x 4的矩阵置100以内的整数,输出该矩阵

34、,求出每行元素之和并把和值最大的那一行与第一行上的元素对调。若已定义x为int类型,调用随机函数步骤如下:include stdio.h.x=rand( )%100 /*产生0到100的随机数*/ 程序如下#include#includevoid rand1(int *p)int i,j;for(i=0;i5;i+)for(j=0;j4;j+,p+)*p=rand()%100;void exchange(int a54)int i,j,max,temp,b5=0;for(i=0;i5;i+)for(j=0;j4;j+)b+=aj;for(i=0;i for(j=0,i=0;j4;j+) tem

35、p=aj; aj=amaxj;amaxj=temp; main()int i,j,a54;clrscr();rand1(a);printf(*The origient Matrix*n);for(i=0;i5;i+) for(j=0;j4;j+)printf(%5d,aj);printf(n);exchange(a);printf(*The exchange Matrix*n);for(i=0;i5;i+) for(j=0;j4;j+)printf(%5d,aj);printf(n);9.38 调用随机函数为5 x 5 的矩阵置100以内的整数,输出该矩阵,然后逆置该矩阵。即将第一列的元素放在第一行上、第二列的元素放在第二行上、其它依次类推。 程序如下#include#includevoid Rand1(int *p)int i,j;for(i=0;i5;i+)for(j=0;j5;j+,p+)*p=rand()%100;void Reverse_Matrix(int a55)int i,j,temp;for(i=0;i temp=aj;aj=aj;aj=temp;main()int i,j,a55;clrscr();Rand1(a);printf(*The Result of rand() Function()*n);for(i=0

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