课本第1到6章习题参考答案Word版

上传人:痛*** 文档编号:86748327 上传时间:2022-05-08 格式:DOC 页数:24 大小:117.50KB
收藏 版权申诉 举报 下载
课本第1到6章习题参考答案Word版_第1页
第1页 / 共24页
课本第1到6章习题参考答案Word版_第2页
第2页 / 共24页
课本第1到6章习题参考答案Word版_第3页
第3页 / 共24页
资源描述:

《课本第1到6章习题参考答案Word版》由会员分享,可在线阅读,更多相关《课本第1到6章习题参考答案Word版(24页珍藏版)》请在装配图网上搜索。

1、第1章习题一、选择题1、A 2、D 3、C 4、D 5、B 6、C 7、C 8、B 9、B 10、A二、填空题1、一,函数体2、main(主),main(主)3、编译,目标4、.c,.obj,.exe5、缩进,无影响,/* */三、程序分析题1、* Very good! *2、 a=12,b=5 a=17,b=223、r= 5.50,s=95.033098四、编程题1用printf()函数在屏幕上输出自己的班级、学号、姓名。#includestdio.hvoid main() printf(班级:BX1109n); printf(学号:111003530901n); printf(姓名:王孟荣

2、n);2从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。#includevoid main()int x,y,a,b,c;float d;printf(Please Input Two Integers:n);scanf(%d%d,&x,&y);a=x+y;b=x-y;c=x*y;d=1.0*x/y;printf(a=%dnb=%dnc=%dnd=%fn,a,b,c,d);第2章习题一、选择题15 BCDCD610 DBBCA二、填空题1单精度浮点型、双精度浮点型、字符型203x%10*10+x/1045.555.7 206sin(sqrt(x*x)/(a*b)7 ,8111

3、1011 173 7B93 3103三、程序分析题1 7,8,102 1,33. 5 F4 (int)i=12, 12.505 461579112四、编程题1编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b的值分别由键盘输入。 #includevoid main( ) int a,b; float c; printf(Please input data a,b: ); scanf(%d%d,&a,&b); c=21%9-(float)a+4/b*b; printf(c=%5.2fn, c); 2. 编写程序,从键盘输入两个整数存入变量a和b中,求a2-b2的

4、值并输出。 #includevoid main( ) int a,b,c; printf(Please input data a,b: ); scanf(%d%d,&a,&b); c=a*a-b*b; printf(c=%dn, c); 第3章习题一、选择题12345678910DCA、BABBB、CBDD二、填空题1. 有穷性 确定性 可行性2. #3. 从终端(键盘)输入一个字符4. m d5. 97,g6. 123.456000, 123.46, 1237. 格式控制符不正确(输入数据时不能控制列宽和小数位数)8. 63,63,77,3f9. %f%f &x,&y10. ch ch三、程

5、序分析题1. c=112. a=123 f=4573. x=345 y=3.4600004. a=1,b=3 a=3,b=15. (题目需修改为:从键盘输入一个除a和z以外的小写字母)程序的功能:从键盘输入一个除a和z以外的小写字母,求出该字母对应的大写字母的前趋和后继字母,然后顺序输出此三个大写字母,每个字母所占列宽为3。运行结果: 假如输入:f 输出: E F G四、编程题1编写程序,计算的值并输出(保留3位小数),其中a、b的值由键盘输入。#include #includevoid main( ) float a, b,x; scanf(%f%f, &a, &b); x=(a*a+b*b

6、)/sqrt(3*(a+b); printf(x=%.3fn,x);2编写程序,从键盘输入一个梯形的上底a、下底b和高h,输出梯形的面积s。#include #includevoid main( ) float a, b,h,s; scanf(%f,%f,%f, &a,&b,&h); s=(a+b)*h/2; printf(梯形面积s=%.2fn,s); 3编写程序,在屏幕上输入你姓名的第一个字母,显示出该字母以及下面的信息: Hello!This is a c program. My name is 第一个字母 #include void main( ) char name; name=ge

7、tchar(); putchar(name); printf(nHello!n); printf(This is a c program.n); printf(My name is %cn,name); 第4章习题一、选择题12345678910BBCBCA CBACC二、填空题1. ! & |2. 13. a b4. 15. 06. x%4= =0 & x%100!=0G:7. 5 68. A9. x10 & x5010. -1三、程序分析题1 No2 -23. 5 3 24 #&5 (1)2 (2)3 CC a=2,b=2,c=4四、编程题1. 有一个函数如下: x2-2 (x5) y=

8、3x+5 (5x50) x- (x50) 编写程序,输入x的值,计算相应的y值输出(保留3位小数)。#include#includevoid main() float x,y; scanf(%f, &x); if(x5) y=x*x-2; else if(x50) y=3*x+5; else y=x-sqrt(4*x-1); printf(x=%f, y=%.3fn, x,y);2编写一个程序,根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、一般三角形)。#include#includevoid main( ) float a, b, c,

9、s, area; scanf(%f,%f,%f, &a,&b,&c); if(a+bc & b+ca & a+cb) s=(a+b+c)/2; area=sqrt(s*(s*(s-a)*(s-b)*(s-c); printf(area=%fn,area); if(a=b & b=c) printf(等边三角形n); else if(a=b | a=c | b=c) printf(等腰三角形n); else if(a*a + b*b= c*c)|(a*a + c*c= b*b)|(b*b + c*c = a*a) printf(直角三角形n); else printf(一般三角形n); else

10、 printf(不能组成三角形n);3设奖金税率r有如下的要求 (n代表奖金) : 0 n1000 5% 1000n2000 r=8% 2000n3000 10% 3000n6000 15% 6000n用switch多分支选择语句编写程序,输入奖金值,计算并输出相应的税率和实际应得奖金值。#includevoid main( ) float n, r, s; int m; printf(请输入奖金值:); scanf(%f, &n); if(n=6000) m=6; else m=n/1000; switch(m) case 0: r=0; break; case 1: r=0.05; bre

11、ak; case 2: r=0.08; break; case 3: case 4: case 5: r=0.1; break; case 6: r=0.15; break; s=n-r*n; printf(税率r=%.0f%, 奖金值n=%.2f, 实际应得奖金值s=%.2fn,r*100, n, s);4. 从键盘输入任意4个数a、b、c、d,按照从大到小的顺序排列后重新输出。#includevoid main( ) int a, b, c, d,t; scanf(%d,%d,%d,%d, &a,&b,&c,&d); if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t

12、; if(ad)t=a;a=d;d=t; if(bc)t=b;b=c;c=t; if(bd)t=b;b=d;d=t; if(cd)t=c;c=d;d=t; printf(%d %d %d %dn, a,b,c,d);5. 给出一个不超过4位数的正整数,判断它是几位数,并按逆向输出各位数字。例1234,输出为4321。#includevoid main( ) int num,i,j,k,m; printf(输入一个少于4位的正整数:); scanf(%d,&num); if(num=0 & num1000 & num=100) printf(是一个3位数n);m=num%10; /*求个位上的数

13、字*/k=num/10%10; /*求十位上的数字*/ j=num/100; /*求百位上的数字*/ printf(逆序数为:%d%d%dn,m,k,j); else if(num=10) printf(是一个2位数n); m=num%10; /*求个位上的数字*/ k=num/10; /*求十位上的数字*/ printf(逆序数为:%d%dn,m,k); else printf(是一个1位数n); printf(逆序数为:%dn,num); else printf(是一个无效的数n);第5章习题12345678910BCBCA BDBAB二 填空题1. 循环 switch2. 4,73. 6

14、4. # # 5. 0 2 6. 18 7. 1 8. sum=80 9. c=getchar() n:m10. i %13= =0 break三 程序分析题1. output1:21 6 output2: 5 6 output3: 5 7 72. n=73. Max=18 Min=34. 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=95. 0 1 2 3 1 2 3 0 2 3 0 1 3 0 1 2四、编程题1. 从键盘上输入若干字符,以按Enter键结束,统计其中字符A或a的个数。#include stdio.hmain() char ch; int k=0; w

15、hile(ch=getchar()!=n) if(ch=A | ch=a) k=k+1; printf(%dn,k);2. 利用=的前100项之积计算p的值。 #include main()double term, result = 1;/*累乘项初值应为1*/int n;for (n=2; n=100; n = n + 2) term=(double)( n * n)/(n-1)*(n+1);/*计算累乘项*/ result = result * term;printf(result = %fn, 2*result);3. 用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100

16、枚,问共有几种兑换方案?每种方案各换多少枚? #includemain()int x,y,z,count=0;for(x=1;x=29;x+) for(y=1;y=72;y+) z=100-x-y; if(5*x+2*y+z=150) count+; printf(%d,%d,%dn,x,y,z);printf(count=%dn,count);4. 鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。#include main()int x, y;for (x=1;x=97;x+) y=98-x;if(2*x+4*y=386) printf(鸡=%d,兔=%d,x,y); 5. 将一个

17、正整数分解质因数。例如:输入90,打印出90=2*3*3*5。#include main() int n,i; printf(nplease input a number:n); scanf(%d,&n); printf(%d=,n); for(i=2;i=n;i+) while(n!=i) if(n%i=0) printf(%d*,i); n=n/i; else break; printf(%d,n);6. 从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和。例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。#inc

18、lude#includemain()int i1,i2,i3,i4,k,n;printf(Inputdatais:);scanf(%d,&n);k=fabs(n);/*取绝对值*/i1=k/1000;/*分离出千位*/i2=(k-i1*1000)/100;/*分离出百位*/i3=(k-i1*1000-i2*100)/10; /*分离出十位*/i4=k%10;/*分离出个位*/printf(The sum of the total bit is %dn,i1+i2+i3+i4);7. 打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为1

19、53=13+53+33。#include void main() int i,j,k,n; printf(parcissus numbers are:n); for (n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n=i*i*i+j*j*j+k*k*k) printf(%dn,n); 8. 利用泰勒级数sin(x)计算sin(x) 的值。要求最后一项的绝对值小于10-5,并统计出此时累加了多少项(x由键盘输入)。#include #include main()int n=1,count=1;float x;double sum,term;

20、/*因为位数多,所以定义为双精度 */printf(Input x: );scanf(%f, &x);sum=x;term=x; /*赋初值*/doterm=-term*x*x/(n+1)*(n+2);sum=sum+term; /*累加 */n=n+2;count+;while(fabs(term)=1e-5);printf(sin(x)=%.1f,count=%dn,sum,count);9编写一个猜数游戏:任意设置一个整数,请用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。10次以内猜对,用户获胜;否则,告诉用户设置的数据是什么。#include void main()

21、int num=123,x,n; printf(hint:0number1000n); /*给出数据范围的提示信息*/ for(n=1;nnum) printf(bigger!n); if(xnum) printf(smaller!n); if(n=11) printf(Lost!the number is %dn,x);10. 编程输出以下图案。*#include main() int i,j; for(i=1;i=1;j-) printf(%c, ); for (j=0;j=1;i-) for (j=20-i;j=1;j-) printf(%c, ); for (j=0;j2*i-1;j+

22、) printf(*); printf(n); 第6章习题一、选择题12345678910DADBDCBDBD二 填空题1. 02. 14 m310 74. 数据类型 5. strcpy(S2,S1) #include 6. 0 3 7. 7,6 8. sum=0 i=j aij 9. 410. Tony三 程序分析题1. max=85 min=5 sum=180 aver=30.002. a=2 b=2 c=2 d=2 e=1 f=2 g=23. j=454. Ti_saCPorm Tss_Pgm5. 1 1 1 5四、编程题1从键盘输入15个整数,存放在数组中,找出其中最小数并指出其所在的

23、位置。#include#define N 15main()int min,i,j,aN; printf(Enter N integers:n); for(i=0;iN;i+)scanf(%d,&ai);min=a0;for(i=1;iai) min=ai; j=i; printf(%d,%d,min,j);2将输入的十进制正整数化为十六进制数。#include main()int i,x,j,a20;printf(请输入一个正整数:);while(1) scanf(%d,&x); if(x=0;j-)if(aj=9)printf(%d,aj);else if(aj=15)printf(%c,a

24、j+A-10);printf(n);3从键盘输入一行字符,统计其中有多少单词,假设单词之间以逗号分隔。#include void main() char string81; int i,num=0,word=0; char c; gets(string); for (i=0;(c=stringi)!=0;i+) if(c=,) word=0; else if(word=0) word=1;num+;printf(There are %d words in the line.n,num);4从键盘输入一字符串,放在字符数组a中,将字符数组a中下标值为偶数的元素按从小到大排序。#include#i

25、ncludevoid main() char a80,t,m; int i,j,k; printf(请输入一字符串:); gets(a); k=strlen(a); for(i=0;i=k-2;i+=2) m=i; for(j=i+2;jaj) m=j;if(m!=i) t=ai;ai=am;am=t; puts(a); printf(n); 5编写程序输出以下杨辉三角形(要求输出10行)。1 1 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 #include#includevoid main() int i,j,a1010; for(i=0;i10;i+) ai0=

26、aii=1; for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i10;i+) for(j=0;j=i;j+)printf(%6d,aij); printf(n); 6编程将s数组中的字符串的正序和反序进行连接,形成一个新串放在t数组中。例如,当s数组中字符串为ABCD 时,则t数组中的内容应为:ABCDDCBA。#include#includemain() char s100, t100; int i,d;printf(Please enter string S:); scanf(%s,s); d=strlen(s); for(i=0;id;i+) ti=s

27、i; for(i=0;id;i+) td+i=sd-1-i; t2*d=0; printf(The result is: %sn,t);7某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。如:输入数字7659,则加密后的数字为4012#includemain() int a,i,aa4,t;printf(输入一个需加密的四位数整数:);scanf(%d,&a);aa0=a%10;aa1=a%100/10;aa2=a%1000/100;aa3=a/1000;f

28、or(i=0;i=3;i+)aai+=5;aai%=10;for(i=0;i=0;i-)printf(%d,aai);printf(n);8编写程序查找数值18在以下二维数组中第一次出现的位置。 3 4 5 188 12 16 5443 34 18 7#include main() int i,j,a34=3,4,5,18, 8,12,16,54, 43,34,18,7; for(i=0;i3;i+) for(j=0;j4)break; printf(数值18第一次出现的位置在%d行,第%d列n,i+1,j+1);9设有4行4列的数组a,其元素aij=3*i+2*j-6。编写程序,实现如下功能

29、:(1) 求第二行4元素的累加和;(2) 求第四列4元素的平均值;(3) 求主对角线4元素中负数的个数。#include void main() int a44,i,j,s=0,m=0;float n=0;for(i=0;i4;i+)for(j=0;j4;j+)aij=3*i+2*j-6;printf(原始数组为:n);for(i=0;i4;i+) for(j=0;j4;j+)printf(%3d,aij);printf(n);for(j=0;j4;j+)s+=a1j;printf(第二行4元素累加和为:%dn,s);for(j=0;j4;j+)n+=aj3;printf(第四列4元素平均值为

30、:%.2fn,n/4.0);for(i=0;i4;i+)if(aii0)m+;printf(主对角线4元素中负数的个数为:%dn,m);10约瑟夫环问题:编号为1,2,3,.,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。分析:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。#include #d

31、efine N 100main() int a100; int i,j,m,n,k=0; printf(输入人数n和任选的一个正整数m:); scanf(%d%d,&n,&m); printf(输入n个人的密码: ); for (i=0;in;i+) scanf(%d,&ai); printf(n出列顺序为: ); for(i=0;in;i+) j=1; while(jm) while(ak=0) /*跳过已出列的人*/ k=(k+1)%n; j+; k=(k+1)%n; while(ak=0) /*跳过已出列的人*/ k=(k+1)%n; printf(%d ,k+1); m=ak; ak=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交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!