C程序设计教程课后习题答案.pdf
《C程序设计教程课后习题答案.pdf》由会员分享,可在线阅读,更多相关《C程序设计教程课后习题答案.pdf(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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!*a=12,b=5a=17,b=223、r=5.50,s=95.033098四、编程题1.用 printf()函数在屏幕上输出自己的班级、学号、姓名。#includestdio.hvoid main()printf(“班级:BX1109n);printf(”学号:111003530901n);printf(姓名:王孟荣n“);2.
2、从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。#includevoid main()(int x,y,a,b,c;float d;printf(Please Input Two lntegers: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 章习题一、选择题1 5 BCDCD6 10 DBBCA二、填空题1.单精度浮点型、双精度浮点型、字符型2.03.x%10*10+x/104.5.55.5.7 206.sin(sqrt(x*x)/(a*b)
3、7.8.1111011 173 7B9.3 310.3三、程序分析题1.7,8,102.233.5 F4.(int)i=12z12.505.461579112四、编程题1.编写程序,求表达式c=21%9(float)a+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+Vb*b;printf(,c=%5.2fn,z c);2.编写程序,从键盘输入两个整数存入变量a 和 b 中,求 a2-b
4、2的值并输出。#includevoid main()(int a,b,c;printf(Please input data a,b:);scanf(%d%d,&a,&b);c=a*a-b*b;printf(c=%dnz c);)第 3 章习题一、选择题1 2 3 4 5 6 7 8 9 10D C A,B A B B B、CB D D二、填空题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=ll2.a=123 f=4573.x=345y=3.4600004.a=l,b=3a=3,b=l5.(题目需修改为:从键盘输入一个除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)/sqrt(3
6、*(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=%.2fnzs);3.编写程序,在屏幕上输入你姓名的第一个字母,显示出该字母以及下面的信息:Hello!This is a c program.My name is 第一个字母include void main()(char name;name=getchar();putch
7、ar(name);printf(nHello!n);printf(This is a c program.n);printf(My name is%cn/name);第 4 章习题一、选择题1 2 3 4 5 6 7 8 9 10B B C B C AC B A C C二、填空题1.!&|2.13.a b4.15.06.x%4=0&x%100!=07.5 68.A9.x10&x5010.-1三、程序分析题1.No2.-23.5324.#&5.(1)2(2)3CCa=2,b=2,c=4四、编程题1.有-个函数如下:x2-2(x5)y=3x+5(5x50)编写程序,输入x 的值,计算相应的y 值输
8、出(保留3 位小数)。#include#includevoid main()float x,y;scanf(%fn,&x);if(x5)y=x*x-2;else if(x50)y=3*x+5;else y=x-sqrt(4*x-l);printf(,x=%f/y=%.3fn,xzy);)2.编写一个程序,根据输入的三角形的二条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、一般三角形)。#include#includevoid main()float a,b,c,s,area;scanf(f,%f,%f,&a,&b,&c);if(a+bc&b+ca&a+cb)s=
9、(a+b+c)/2;area=sqrt(s*(s*(s-a)*(s-b)*(s-c);printf(area=%fn,area);if(a=b&b=c)print等边三角形n“);else if(a=b 1 1 a=c 1 1 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 printf(不能组成三角形n“);3.设奖金税率r 有如下的要求(n 代表奖金):0 n10005%1000n2000r=8%2000n300010%3
10、000n600015%6000n用 switch多分支选择语句编写程序,输入奖金值,计算并输出相应的税率和实际应得奖金值。#includevoid main()float n,r,s;int m;printf(请输入奖金值:”);scanf(%fH/&n);if(n=6000)m=6;else m=n/1000;switch(m)case 0:r=0;break;case 1:r=0.05;break;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=%.O
11、f%,奖金值 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,%cT,&a,&b,&c,&d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;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,bzc,d);5.给出一个不超过4 位数的正整数,判断它
12、是几位数,并按逆向输出各位数字。例 1234,输出为4321o#includevoid main()int num,ij/kzm;printW输入一个少于4 位的正整数:scanf(%d,&num);if(num=0&num1000&num=100)printf(是一个 3 位数n“);m=num%10;/*求个位上的数字*/k=num/10%10;/*求十位上的数字*/j=num/100;/*求百位上的数字*/printf(逆序数为:%d%d%dn”,m,kj);)else if(num=10)printf(是一个 2 位数n);m=num%10;/*求个位上的数字*/k=num/10;/*
13、求十位上的数字*/printf(逆序数为:d%dn,m,k);)elseprintf(是一个 1 位数n);printf(逆序数为:%dn,num);)else printf(是一个无效的数n);第5章习题一、选择题123456789 10BCBCABDBAB二 填空题1.循环 switch2.4,73.64.#5.0 26.187.18.sum=809.c=getchar()n:m10.i%13=0break三 程序分析题1.outputl:21 6output2:5 6outputs:5 7 72.n=73.Max=18Min=34.1*1=12*1=2 2*2=43*1=3 3*2=6
14、3*3=95.0 1 2 31 2 3 02 3 0 13 0 12四、编程题1.从键盘上输入若干字符,以按Enter键结束,统计其中字符A 或 a 的个数。#include stdio.hmain()char ch;int k=0;while(ch=getchar()!=n)if(ch=A 11 ch=a)k=k+l;p irtf(dn”,k);)2.利用=x 的前100项之积计算p 的值。#include main()(double term,result=1;/*累乘项初值应为 1*/int n;for(n=2;n=100;n=n+2)(term=(double)(n*n)/(n-l)*
15、(n+l);/*计算累乘项*/result=result*term;)printf(result=%fnz 2*result);)3.用 1 元 5 角钱人民币兑换5 分、2 分 和 1 分的硬币(每一种都要有)共100枚,问共有儿种兑换方案?每种方案各换多少枚?#includemain()int x,y,z,count=0;for(x=l;x=28;x+)for(y=l;y=73;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只
16、脚,编程求鸡、兔各多少只。/include main()int x,y;for(x=l;x=97;x+)y=98-x;if(2*x+4*y=386)printf(鸡=%d=%d,x,y);5.将一个正整数分解质因数。例如:输入9 0,打印出90=2*3*3*5。#include main()(int nJ;printf(nplease input a number:n);scanf(%d”,&n);printf(%d-;for(i=2;i=n;i+)while(n!=i)(jf(n%i=0)printf(H%d*,i);n=n/i;)else break;)printf(,%dzn);6.从键
17、盘任意输入一个4 位数x,编程计算x 的每一位数字相加之和。例如,输入x 为 1234,则由1234分离出其千位1、百位2、H 立3、个位4,然后计算1+2+3+4=10,并输出10。#include#includemain()int il,i2,i3,i4,k,n;printf(lnputdatais:);scanf(%d,&n);k=fabs(n);/*取绝对值*/il=k/1000;/*分离出千位*/i2=(k-il*1000)/100;/*分离出百位*/i3=(k-il*1000-i2*100)/10;/*分离出十位*/i4=k%10;/*分离出个位*/printf(The sum o
18、f the total bit is%dn,il+i2+i3+i4);)7.打印出所有 水仙花数,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例 如:153是一个水仙花数,因为153=13+53+33。include void main()(int i,j,k,n;printffparcissus 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仅上计算sin(x)的值。要求最后一项的绝对值小于1 0-5
19、,并统计出此时累加了多少项(x 由键盘输入)。include#include main()(int n=l,count=l;float x;double sum,term;/*因为位数多,所以定义为双精度*/printf(nlnputx:);scanf(H%f,&x);sum=x;term=x;/*赋初值*/do(term=-term*x*x/(n+l)*(n+2);sum=sum+term;/*累加*/n=n+2;count+;while(fabs(term)=le-5);printf(sin(x)=%.lf,count=%dn,/sum/count);9.编写个猜数游戏:任意设置个整数,请
20、用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。1 0 次以内猜对,用户获胜;否则,告诉用户设置的数据是什么。include void main()int num=123,x,n;printf(”hint:0number1000n“);/*给出数据范围的提示信息*/for(n=l;nnum)printf(bigger!n);if(xnum)printf(smaller!nu);)if(n=ll)printf(Lost!the number is%dnzx);)10.编程输出以下图案。*#include main()int i,j;for(i=l;i=l;j-)printf(%
21、c;);for(j=0;j=l;i-)(for(j=2O-i;j=l;j-)printfCc;);for(j=O;j2*i-l;j+)printf(*);printf(n);第 6 章习题一、选择题12345678910DADBDCBDBD二 填空题1.02.14 m3.10 74.数据类型5.strcpy(S2,Sl)#include6.0 37.7,68.sum=0i=jaij9.410.Tony三 程序分析题1.max=85min=5sum=180aver=30.002.a=2b=2c=2d=2e=lf=2g=23.j=454.Ti_saCPormTss_Pgm5.1 1 1 5四、编程
22、题1.从键盘输入15个整数,存放在数组中,找HI其中最小数并指出其所在的位置。#include#define N 15main()int min,iJ,aN;printf(Enter N integers:n);for(i=0;iN;i+)scanf(%d,&ai);min=aO;for(i=l;iai)min=ai;j=i;)printf(“d,%d”,min,j);)2.将输入的十进制正整数化为十六进制数。include main()(int i,x,j,a20;printf(请输入一个正整数门;while(l)(scanf(H%d,&x);if(x=0;j-)if(aj=9)printf
23、(%dzaj);else if(aj=15)printf(“%c”,aj+7V-10);printf(n);)3.从键盘输入-行字符,统计其中有多少单词,假设单词之间以逗号分隔。#include void main()(char string81;int i,num=0,word=0;char c;gets(string);for(i=O;(c=stringi)!=0,;i+)if(c=,)word=0;else if(word=0)word=l;num+;)printf(There are%d words in the line.n,num);)4.从键盘输入一字符串,放在字符数组a 中,将
24、字符数组a 中下标值为偶数的元素按从小到大排序。#include#includevoid main()(char a80,tzm;int ijk;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行)。11 112 113 3 11 4 6 4 11 5 10 10 5 1#include#includevoid main()int i,jza1010;
25、for(i=0;i10;i+)ai0=aii=l;for(j=l;ji;j+)aHU=ai-lj-l+ai-lU;)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(%sH,s);d=strlen(s);for
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 教程 课后 习题 答案
限制150内