习题解答14章.docx
- 文档编号:4108121
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:19
- 大小:33.04KB
习题解答14章.docx
《习题解答14章.docx》由会员分享,可在线阅读,更多相关《习题解答14章.docx(19页珍藏版)》请在冰豆网上搜索。
习题解答14章
习题一2
习题二3
习题三4
习题四10
C语言程序设计习题解答
习题一
一、单项选择题
C2.A3.D
二、填空题
1.顺序结构选择结构循环结构
2.算法
3.语言简洁、运算符丰富、结构化语言
4.可移植性强、代码效率高、书写格式自由
5.错误隐蔽、有时会难以理解、有时会难以修改
6.群举法(枚举法)、递推法(迭代法)、递归法
7.做什么怎么做
三、应用题
1.
include
voidmain()
{
printf(“*************************\n”);
printf(“Clanguageprogram\n”);
printf(“*************************\n”);
}
2.
include
voidmain()Z\+
{
inta,b,c,max;
scanf(“%d%d%d”,&a,&b,&c);
if(a>b)max=a;
elsemax=b;
if(max printf(“Max=%d\n”,max); } 习题二 一、单项选择题 1.A,D,E2.B,E3.B,D,E,F,H4.B,F5.A,B,E 二、填空题 1.⑴int⑵char⑶double⑷long⑸char⑹char⑺int⑻long 2.⑴0⑵0⑶2⑷4⑸4⑹8⑺0⑻2 3.2111 4.不做 5.sin(25*3.14159/180)+cos(30*3.14159/180) 6.2 8.5 三、给出各个程序的运行结果 1.运行结果如下: 3 21 5 5 2.运行结果如下: 6,9 9,27 习题三 一、单项选择题 1.D2.B3.D4.C5.B6.C7.B8.A9.C10.D 11.D12.D13.B14.A15.A16.B17.C18.C19.B20.B 21.D22.C23.C24.D25.C26.C27.D28.D29.B30.A 二、填空题 1.从标准设备(键盘)上读入一个字符向标准设备(键盘)上输出一个字符 #include 2.以十进制形式输入一个整数表示从标准输入设备(键盘)读取输入的3个整型数 表示掉过3个整数不读取用来输入一个字符 3.以十进制形式输出一个整数以十六进制形式输出一个整数 以十进制小数形式输出,输出的数据长度为7位,其中有两位为小数 以字符形式输出一个字符 4.分程序;;5.-16.非00 7.a%7==0else8.39.2 10.forwhiledo-while11.Continue12.a=16,y=42 13.1014.y=1915.22222 16.3917.718.5,5 19.n=420.-321.8 三、程序阅读分析题 1. 2. 3.04.5675.thisnumberisahuiwen 四、编程题 1.编写一个程序,要求用户输入两个整数,判定其中一个是否能整除另一个。 #include intmain() { inta,b; while(scanf("%d%d",&a,&b)==2) { if(a%b)printf("不能整除\n"); elseprintf("能整除\n"); } return0; } 2.编程实现: 输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一: ①能同时被3,5,7整除; ②能被其中两数(要指出哪两个)整除; ③能被其中一个数(要指出哪一个)整除; ④不能被3,5,7任一个整除。 #include voidmain() { inta; printf("请输入一个整数\n"); scanf("%d",&a); if(a%3==0&&a%5==0&&a%7==0) printf("%d能同时被3,5,7整除\n",a); elseif(a%3! =0&&a%5==0&&a%7==0) printf("%d能同时被5,7整除\n",a); elseif(a%3==0&&a%5! =0&&a%7==0) printf("%d能同时被3,7整除\n",a); elseif(a%3==0&&a%5==0&&a%7! =0) printf("%d能同时被3,5整除\n",a); elseif(a%3==0&&a%5! =0&&a%7! =0) printf("%d能被3整除\n",a); elseif(a%3! =0&&a%5==0&&a%7! =0) printf("%d能被5整除\n",a); elseif(a%3! =0&&a%5! =0&&a%7==0) printf("%d能被7整除\n",a); elseprintf("%d不能被3,5,7整除\n",a); } 3.市郊长途电话收费标准如下: 通话时间在三分钟以下收费一角,三分钟以上则每超过一分钟加一角。 在7: 00—21: 00之间通话者,按收费标准全价收费;在其它时间通话者,按收费标准的一半收费。 请计算某人在x时间通话y分钟,应缴多少电话费。 (通话时间利用整数输入实现) #include main() { floatx,y=0; intt; scanf("%f%d",&x,&t); if(t>7&&t<21) { if(x<3) y=0.1; else do { y=0.2+y; x=x-1; }while(x-3>0); } else { if(x<3) y=0.1/2; else do { y=(0.2+y)/2; x=x-1; }while(x-3>0); } printf("%f",y); } 4.输入a、b、c三条边,判断它是否构成三角形。 若能构成三角形,则计算三角形面积。 #include #include main() { floata,b,c,S=0,x=0; printf("输入三角形三条边的边长: "); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) { x=(a+b+c)/2.0; S=sqrt(x*(x-a)*(x-b)*(x-c)); printf("area=%.3f\n",S); } Else printf("不能构成三角形\n"); } 5.打印出所有”水仙花数”。 所谓”水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。 例如,153是一个”水仙花数”,因为153=13+53+33。 #include"stdio.h" #include"math.h" main() { inti; inta,b,c; for(i=100;i<=999;i++) { a=i%10;/*取个位数*/ b=i/10%10;/*取十位数*/ c=i/100;/*取百位数*/ if(i==a*a*a+b*b*b+c*c*c) printf("%d",i); } } 6.编写一个程序,在屏幕上显示如下图形(图形的层数读者自行设定): * *** ***** ******* ***** *** * #include #include main() { inti,j,k; for(i=-3;i<=3;i++) { for(j=1;j<=abs(i);j++) printf("%c",32); for(j=1;j<=7-2*abs(i);j++) printf("*"); printf("\n"); } } 7.求斐波那契(Fibonacci)数列: 1,1,2,3,5,8,......的前40个数。 斐波那契数列的定义: F1=1(n=1) F2=1(n=2) Fn=Fn-1+Fn-2(n≥3) #include main() { intf1,f2,f; inti; f1=f2=1; printf("%d\n%d\n",f1,f2); for(i=1;i<=38;i++)/*已经有两个数,只要再产生38个数即可*/ { f=f1+f2; f1=f2; f2=f; printf("%d\n",f); } } 8.编程实现求1+2+3+…+n之和,并输出当其和第一次大于或等于100时的值及n值。 #include main() { inti,s,t=0; i=1;s=0; while(i<=100) { s=s+i; if(s>=100&&t<1)/*设定t只求第一次和大于100的内容*/ { printf("第一次和大于或等于100时和为%d\n",s); printf("第一次和大于或等于100时n为%d\n",i); t+=1; } i=i+1; } printf("s=%d\n",s); } 9.整元换零钱问题。 把1元兑换成1分、2分、5分的硬币,共有多少种不同的换法? #include main() { inti,j,k,n; n=100,k=0; for(i=0;i<=n/5;i++) for(j=0;j<=(n-i*5)/2;j++) { printf("5cent=%d\t2cent=%d\t1cent=%d\n",i,j,n-i*5-j*2); k++; } printf("totaltimes=%d\n",k); } 10.编写解鸡兔同笼问题的程序。 用户输入头的数目和脚的数目,输出鸡、兔各有多少只。 #include main() {intx,y,a,b; printf("输入鸡兔头的数目: "); scanf("%d",&x); printf("输入鸡兔脚的数目: "); scanf("%d",&y); a=x-(y-2*x)/2; b=(y-2*x)/2; printf("鸡有%d只,兔有%d只",a,b); } 11.打印杨辉三角形,即(x+y)n展开式的各项系数。 并且在程序运行开始时,问用户n的值为多少,接着打印如下形式至指定行数。 1 11 121 1331 14641 ... #include intmain() {intn,k,j,c; printf("Input="); scanf("%d",&n); for(k=1;k<=n;k++) { //printf("%*s",4*(n-k));/*格式控制语句,有和没有是两种显示方式*/ c=1; printf("%4d",c); for(j=1;j<=k-1;j++) { c=c*(k-j)/j; printf("%8d",c); } printf("\n"); } return0; } 12.个位数是6,且能被3整除的五位数共有多少个? #include main() {inta,count=0; longi; for(i=10000;i<100000;i++) { a=i%10; if(a==6&&i%3==0) count++; } printf("这样的数共计: %d",count); } 习题四 一、单项选择题 1.C2.D3.D4.D5.C6.D7.B8.A9.B10.B 二、填空题 1.一15014float2.8 3.连续数组名4.按行存储 5.046.350 7.368.9 9.710.#include 三、程序阅读分析题 1.i==ja[i][j]a[i][j]printf("\n") 2.k=32 3.gbcdefa 4.012345 123456 234567 345678 456789 5678910 5.you&me 四、编程题 1.设数组V中的数据元素递增有序,现将x插入到数组V的适当位置,使数组元素的值仍保持有序。 #include voidmain() { intV[15]={65,70,73,75,79,81,85,88,90};/*有9个初值,有序*/ intn=9,x=77;/*数组中当前有n个数据,将x插入数组V中,仍保持有序*/ inti; for(i=n-1;i>=0&&V[i]>x;i--)/*将V数组中的数据从后往前比较*/ V[i+1]=V[i];/*若大于x,后移一个位置*/ V[i+1]=x;/*将x插入数组V中*/ n++;/*数组中数据个数增1*/ for(i=0;i printf("%d",V[i]); printf("\n"); } 2.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。 #include voidmain() { intarray[30],average[6]={0}; inti,j; for(i=0;i<30;i++) array[i]=2*(i+1); for(j=0;j<6;j++) { for(i=5*j;i<5*(j+1);i++) average[j]+=array[i]; average[j]/=5; printf("%d",average[j]); } printf("\n"); } 3.输入一个字符串,在指定位置插入一个字符。 #include voidmain() { charstr[81],ch; inti,position; printf("输入一个字符串: "); gets(str); printf("输入要插入字符的位置: "); scanf("%d",&position); printf("输入要插入的字符: "); scanf("%*c%c",&ch); for(i=0;str[i]! ='\0';i++); while(i>=position-1) { str[i+1]=str[i]; i--; } str[position-1]=ch; printf("在指定位置插入字符后的字符串: %s\n",str); } 4.输入一行字符,分别统计其中十个数字字符'0','1',…,'9'出现的次数。 #include voidmain() { charstr[81]; intcount[10]={0},i; printf("输入一行字符: \n"); gets(str); for(i=0;str[i]! ='\0';i++) if(str[i]>='0'&&str[i]<='9') count[str[i]-'0']++; for(i=0;i<10;i++) printf("\'%c\': %d\n",'0'+i,count[i]); } 5.输入矩阵A(2行3列)和矩阵B(3行4列),计算它们的乘积C=A·B。 (矩阵乘积计算公式: Cij=∑AikBkj) #include voidmain() { inta[2][3],b[3][4],c[2][4]; inti,j,k; printf("输入2行3列矩阵数据: \n"); for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("输入3行4列矩阵数据: \n"); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&b[i][j]); for(i=0;i<2;i++) for(j=0;j<4;j++) { c[i][j]=0; for(k=0;k<3;k++) c[i][j]+=a[i][k]*b[k][j]; } printf("两矩阵的乘积矩阵是: \n"); for(i=0;i<2;i++) { for(j=0;j<4;j++) printf("%5d",c[i][j]); printf("\n"); } } 6.下面是一个5×5阶的螺旋方阵。 试编程打印出此形式的n×n(n<10,顺时针方向旋进)。 12345 161718196 152425207 142322218 131211109 #include #defineN5 voidmain() { inta[N][N],i,j,k,n; i=0; j=0; n=1; for(k=1;k<=N*N;k++) { if(i==n-1&&j a[i][j++]=k; elseif(j==N-n&&i a[i++][j]=k; elseif(i==N-n&&j>n-1) a[i][j--]=k; else a[i--][j]=k; if(i==n&&j==n-1) n++; } for(i=0;i { for(j=0;j printf("%5d",a[i][j]); printf("\n"); } } 7.编一程序,实现字符串复制,不使用strcpy()函数。 #include voidmain() { charstr1[81],str2[]="Iamastudent."; inti; for(i=0;(str1[i]=str2[i])! ='\0';i++); printf("%s\n%s\n",str1,str2); } 8.编一程序,求字符串的长度,不使用strlen()函数。 #include voidmain() { charstr[81]; intn; printf("输入一个字符串: "); gets(str); n=0; while(str[n]! ='\0') n++; printf("字符串的长度是: %d\n",n); } 9.有一篇文章,共有3行文字,每行有80个字符。 要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。 #include voidmain() { charstr[3][81]; charcategory[5][10]={"UPPER","LOWER","DIGIT","SPACE","OTHER"}; inti,j,count[5]={0}; printf("输入3行文字: \n"); for(i=0;i<3;i++) gets(str[i]); for(i=0;i<3;i++) for(j=0;str[i][j]! ='\0';j++) if(str[i][j]>='A'&&str[i][j]<='Z') count[0]++; elseif(str[i][j]>='a'&&str[i][j]<='z') count[1]++; elseif(str[i][j]>='0'&&str[i][j]<='9') count[2]++; elseif(str[i][j]=='') count[3]++; else count[4]++; for(i=0;i<5;i++) printf("%s: %d\n",category[i],count[i]); } 10.某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH)。 有30人参加考试。 为评定奖学金,要求统计并输出一个表格,表格内容包括学号、各科分数、总分和平均分,并标出三门课均在90分以上者(该栏标志输出为“Y”,否则为“N”),表格形式如下: NOMTENPHSUMV>90 ——————————————————— 197879227692Y 29291902739lY 390818225384N 可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统计处理。 #include #defineN30 voidmain() { intstu[N][4],sum; inti,j; chargreat90; for(i=0;i { printf("输入第%d个学生的数学、英语和物理成绩(空格分隔): ",i+1); stu[i][0]=i+1; for(j=1;j<4;j++) scanf("%d",&stu[i][j]); } printf("NOMTENPHSUMV>90\n"); printf("-----------------------------------\n"); for(i=0;i { sum=0; great90='Y'; printf("%5d",stu[i][0]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 解答 14