C程序设计教程与实验第17章习题参考解答.docx
- 文档编号:5908884
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:21
- 大小:21.03KB
C程序设计教程与实验第17章习题参考解答.docx
《C程序设计教程与实验第17章习题参考解答.docx》由会员分享,可在线阅读,更多相关《C程序设计教程与实验第17章习题参考解答.docx(21页珍藏版)》请在冰豆网上搜索。
C程序设计教程与实验第17章习题参考解答
第1章习题解答
一、选择题
1~5ADCDB
6~10CCBBA
二、填空题
1.1,函数体
2.main(),main()
3.编译,目标
4..c,.obj,.exe
5.缩进,无影响,/**/
三、程序分析题
1.*****************
Verygood!
*****************
2.a=12,b=5
a=17,b=22
3.r=5.50,s=95.033098(计算结果四舍五入)
第2章习题解答
一、选择题
1~5BCDCD
6~10DBBCA
二、填空题
1.单精度浮点型、双精度浮点型、字符型
2.0
3.x%10*10+x/10
4.5.5
5.5.720
6.sin(sqrt(x*x))/(a*b)
7.,
8.11110111737B
9.33
10.3
三、程序分析题
1.7,8,10
2.1,3
3.5F
4.(int)i=12,12.50
5.4
61
57
9
112
第3章习题答案:
一、选择题
1
2
3
4
5
6
7
8
9
10
D
C
A、B
A
B
B
B、C
B
D
D
二、填空题
1.有穷性确定性可行性
2.#
3.从终端(键盘)输入一个字符
4.md
5.97g
6.123.456000,123.46,123
7.格式控制符不正确(输入数据时不能控制列宽和小数位数)
8.63,63,77,3f
9.%f%f&x,&y
10.
三、程序分析题
1.c=11
2.a=123f=457
3.x=345
y=3.460000
4.a=1,b=3
a=3,b=1
5.(题目需修改为:
从键盘输入一个除a和z以外的小写字母)
程序的功能:
从键盘输入一个除a和z以外的小写字母,求出该字母对应的大写字母的前趋和后继字母,然后顺序输出此三个大写字母,每个字母所占列宽为3。
运行结果:
假如输入:
f
输出:
EFG
第四章习题答案:
一、选择题
1
2
3
4
5
6
7
8
9
10
B
B
C
B
C
AC
B
A
C
C
二、填空题
1.!
&&||
2.1
3.ab
4.1
5.0
6.x%4==0&&x%100!
=0
7.56
8.A
9.x<0||x>10&&x<50
10.-1
三、编程题
1.
#include
#include
voidmain()
{floatx,y;
scanf("%f",&x);
if(x<5)y=x*x-2;
elseif(x<50)y=3*x+5;
elsey=x-sqrt(4*x-1);
printf("x=%f,y=%.3f\n",x,y);
}
2.
#include
#include
voidmain()
{floata,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
{s=(a+b+c)/2;
area=sqrt(s*(s*(s-a)*(s-b)*(s-c)));
printf("area=%f\n",area);
if(a==b&&b==c)
printf("等边三角形\n");
elseif(a==b||a==b||b==c)
printf("等腰三角形\n");
elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
printf("直角三角形\n");
elseprintf("一般三角形\n");
}
elseprintf("不能组成三角形\n");
}
3.
#include
voidmain()
{floatn,r,s;
intm;
printf("请输入奖金值:
");
scanf("%f",&n);
if(n>=6000)m=6;
elsem=n/1000;
switch(m)
{case0:
r=0;break;
case1:
r=0.05;break;
case2:
r=0.08;break;
case3:
case4:
case5:
r=0.1;break;
case6:
r=0.15;break;
}
s=n-r*n;
printf("税率r=%.0f%%,奖金值n=%.2f,实际应得奖金值s=%.2f\n",r*100,n,s);
}
4.
#include
voidmain()
{inta,b,c,d,t;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a
if(a if(a if(b if(b if(c printf("%d%d%d%d\n",a,b,c,d); } 5. #include voidmain() {intnum,i,j,k,m; printf("输入一个少于4位的正整数: "); scanf("%d",&num); if(num>=0&&num<=9999) {if(num>1000&&num<=9999) {printf("是一个4位数\n"); m=num%10;/*求个位上的数字*/ k=num/10%10;/*求十位上的数字*/ j=num/100%10;/*求百位上的数字*/ i=num/1000;/*求千位上的数字*/ printf("逆序数为: %d%d%d%d\n",m,k,j,i); } elseif(num>=100) {printf("是一个3位数\n"); m=num%10;/*求个位上的数字*/ k=num/10%10;/*求十位上的数字*/ j=num/100;/*求百位上的数字*/ printf("逆序数为: %d%d%d\n",m,k,j); } elseif(num>=10) {printf("是一个2位数\n"); m=num%10;/*求个位上的数字*/ k=num/10;/*求十位上的数字*/ printf("逆序数为: %d%d\n",m,k); } else {printf("是一个1位数\n"); printf("逆序数为: %d\n",num); } } elseprintf("是一个无效的数\n"); } 第5章习题参考答案 一、选择题 1 2 3 4 5 6 7 8 9 10 B C B C A B D B A B 二填空题 1.循环switch 2.4,7 3.6 4.## 5.02 6.18 7.1 8.sum=80 9.(c=getchar() n: m 10.i%13==0 break 三程序分析题 1.output1: 216 output2: 56 output3: 577 2.n=7 3.Max=18 Min=3 4.1*1=1 2*1=22*2=4 3*1=33*2=63*3=9 5.0123 1230 2301 3012 四、编程题 1. #include"stdio.h" main() {charch; intk=0; while((ch=getchar())! ='\n') {if(ch=='A'||ch=='a') k=k+1;} printf("%d\n",k); } 2. #include main() { doubleterm,result=1;/*累乘项初值应为1*/ intn; for(n=2;n<=100;n=n+2) { term=(double)(n*n)/((n-1)*(n+1));/*计算累乘项*/ result=result*term; } printf("result=%f\n",2*result); } 3. #include main() { intx,y,z,count=0; for(x=1;x<=28;x++) for(y=1;y<=73;y++) { z=100-x-y; if(5*x+2*y+z==150) { count++; printf("%d,%d,%d\n",x,y,z); } } printf("count=%d\n",count); } 4. #include main() {intx,y; for(x=1;x<=97;x++) {y=98-x; if(2*x+4*y==386) printf("鸡=%d,兔=%d",x,y); } } 5. #include main() { intn,i; printf("\npleaseinputanumber: \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; } elsebreak; } printf("%d",n); } 第6章习题参考答案 一、选择题 1 2 3 4 5 6 7 8 9 10 D A D B D C B D B D 二填空题 1.0 2.14m 3.107 4.数据类型 5.strcpy(S2,S1)#include 6.03 7.7,6 8.sum=0 i==j a[i][j] 9.4 10.Tony 三程序分析题 1.max=85 min=5 sum=180 aver=30.00 2.a=2 b=2 c=2 d=2 e=1 f=2 g=2 3.j=45 4.Ti_saCPorm Tss_Pgm 5.1115 四、编程题 1.从键盘输入15个整数,存放在数组中,找出其中最小数并指出其所在的位置。 #include #defineN15 main() {intmin,i,j,a[N]; printf("EnterNintegers: \n"); for(i=0;i scanf("%d",&a[i]); min=a[0]; for(i=1;i if(min>a[i]) {min=a[i]; j=i; } printf("%d,%d",min,j); } 2.将输入的十进制正整数化为十六进制数。 #include main() { inti,x,j,a[20]; printf("请输入一个正整数: "); while (1) { scanf("%d",&x); if(x<0) printf("数据输入错误,请重新输入一个正整数: "); elsebreak; } i=0; while(x) { a[i]=x%16; x=x/16; i++; } for(j=i-1;j>=0;j--) if(a[j]<=9) printf("%d",a[j]); elseif(a[j]<=15) printf("%c",a[j]+'A'-10); printf("\n"); } 3.从键盘输入一行字符,统计其中有多少单词,假设单词之间以逗号分隔。 #include voidmain() { charstring[81]; inti,num=0,word=0; charc; gets(string); for(i=0;(c=string[i])! ='\0';i++) if(c==',')word=0; elseif(word==0) {word=1; num++; } printf("Thereare%dwordsintheline.\n",num); } 4.从键盘输入一字符串,放在字符数组a中,将字符数组a中下标值为偶数的元素按从小到大排序。 #include #include voidmain() { chara[80],t,m; inti,j,k; printf("请输入一字符串: "); gets(a); k=strlen(a); for(i=0;i<=k-2;i+=2) {m=i; for(j=i+2;j<=k;j+=2) if(a[m]>a[j]) m=j; if(m! =i) {t=a[i];a[i]=a[m];a[m]=t;} } puts(a); printf("\n"); } 第7章习题参考答案 一、选择题 1 2 3 4 5 6 7 8 9 10 A D D B A D C D B A 二填空题 1.main() 2.main() 3.函数首部 4.解决函数必须“定义在前,使用在后”的原则问题 5.int 6.定义调用 7.地址传递值传递 8.returnvoid 9.voidf(floata,floatb)floatf(floata,floatb) 10.static 三程序分析题 1.a=48 2.8,17 3.2721 4.BASIC C COBOL FORTRAN PASCAL Smalltalk 5.6 123 654 四、编程题 1. #include #include voidmain() {intprime(int); intn; printf("Inputaninteger: "); scanf("%d",&n); if(prime(n)) printf("\n%disaprime.\n",n); else printf("\n%disnotaprime.\n",n); } intprime(intn) {intflag=1,i; for(i=2;i if(n%i==0) flag=0; return(flag); } 2. #include intMyStrcmp(chars[],chart[]); main() { charstr1[20],str2[20]; printf("Inputstring: "); gets(str1); printf("Inputanotherstring: "); gets(str2); if(MyStrcmp(str1,str2)>0) printf("str1>str2\n"); elseif(MyStrcmp(str1,str2)<0) printf("str1 else printf("str1=str2\n"); } intMyStrcmp(chars[],chart[]) { inti; for(i=0;s[i]==t[i];i++) if(s[i]=='\0')return0; return(s[i]-t[i]); } 3. #include voidmain() {voidconcatenate(charstring1[],charstring2[],charstring[]); chars1[100],s2[100],s[100]; printf("inputstring1: "); scanf("%s",s1); printf("inputstring2: "); scanf("%s",s2); concatenate(s1,s2,s); printf("\nThenewstringis%s\n",s); } voidconcatenate(charstring1[],charstring2[],charstring[]) {inti,j; for(i=0;string1[i]! ='\0';i++) string[i]=string1[i]; for(j=0;string2[j]! ='\0';j++) string[i+j]=string2[j]; string[i+j]='\0'; } 4. #include #defineARRSIZE10 voidMaxMinExchang(inta[],intn) { intmaxValue=a[0],minValue=a[0],maxPos=0,minPos=0; inti,temp; for(i=1;i { if(a[i]>maxValue) { maxValue=a[i]; maxPos=i; } elseif(a[i] { minValue=a[i]; minPos=i; } } temp=a[maxPos]; a[maxPos]=a[minPos]; a[minPos]=temp; } main() { inta[ARRSIZE],i; printf("Input%dNumbers: \n",ARRSIZE); for(i=0;i scanf("%d",&a[i]); MaxMinExchang(a,ARRSIZE); printf("AfterMaxMinExchange: \n"); for(i=0;i printf("%4d",a[i]); printf("\n"); } 5. #include #defineN3 intarray[N][N]; voidmain() {voidconvert(intarray[][3]); inti,j; printf("inputarray: \n"); for(i=0;i for(j=0;j scanf("%d",&array[i][j]); printf("\noriginalarray: \n"); for(i=0;i {for(j=0;j printf("%5d",array[i][j]); printf("\n"); } convert(array); printf("convertarray: \n"); for(i=0;i {for(j=0;j printf("%5d",array[i][j]); printf("\n"); } } voidconvert(intarray[][3]) {inti,j,t; for(i=0;i for(j=i+1;j {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } 6. #include #include #defineN10 charstr[N]; voidmain() {voidsort(charstr[]); inti,flag; for(flag=1;flag==1;) {printf("inputstring: \n"); scanf("%s",str); if(strlen(str)>N) printf("stringtoolong,inputagain! "); else flag=0; } sort(str); printf("stringsorted: \n"); for(i=0;i printf("%c",str[i]); printf("\n"); } voidsort(charstr[]) {inti,j; chart; for(j=0;j for(i=0;(i ='\0');i++) if(str[i]>str[i+1]) {t=str[i]; str[i]=str[i+1]; str[i+1]=t; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 教程 实验 17 习题 参考 解答