C语言程序设计习题参考答案.docx
- 文档编号:4865680
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:42
- 大小:32.61KB
C语言程序设计习题参考答案.docx
《C语言程序设计习题参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题参考答案.docx(42页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题参考答案
第一章C语言概述参考答案
一、1.C2.B 3.C 4.D 5.D 6.B 7.A 8.A 9.B 10.A
二、1、函数2、位3、分号4、main5、{}6、换行7、注释8、函数首部、函数体
9、main10、编辑、编译、连接、运行
三、1.错 2.错 3.对 4.对 5.对 6.对 7.错 8.对
四、
1、#include
/*包含头文件,为了使用printf和scanf语句,注意句末无分号*/
voidmain()
{
printf(“***********\n”);/*\n的作用相当于回车*/
printf(“Iamastudent.\n”);
printf(“***********\n”);
}
2、#include
voidmain()
{inta,b;
printf(“Pleaseinputa,b:
\n”);
scanf(“%d,%d”,&a,&b);/*注意输入两个数之间用逗号分隔*/
if(a>b)printf(“%d”,a);
elseprintf(“%d”,b);
}
3、#include
voidmain()
{
inta,b,c,max;
printf(“Pleaseinputa,b,c:
\n”);
scanf(“%d,%d,%d”,&a,&b,&c);
max=a;
if(a
if(max printf(“Thelargestnumberis%d”,max); } 第二章数据与运算参考答案 一、1.B2.D 3.D 4.A 5.C 6.B 7.C 8.B 9.A 10.A 11.D 12.A 13.B 14.A 15.C 二、1、82、283、54、05、double6、8,10 7、128、D9、5210、25,21,3711、48 12、20200.00000014、9,11,9,1015、11.50 13、aa口bb口口口cc口口口口口口abc A口N 三、1.错2.对3.对 4.错 5.错 6.对 7.错 8.错 9.错 10.对 四、 1、1)第1步: (int)(x+y)=(int)(7.2)=7 第2步: a%3*7%2/4=7%3*7%2/4=1*7%2/4=1/4=0 第3步: x+0=x=2.5(计算机显示为2.500000) 1、2) 第1步: (float)(a+b)/2=(float)(2+3)/2=(float)(5)/2=5.0/2=2.5 第2步: (int)x%(int)y=(int)(3.5)%(int)(2.5)=3%2=1 第3步: 2.5+1=3.5(计算机显示为3.500000) 2、1)(a=a+a=12+12=24) 2、2)(a=a-2=12-2=10) 2、3)(a=a*(2+3)=12*5=60) 2、4)(a=a/(a+a)=12/24=0,注意a是整型) 2、5)已知n的值等于5a=0 2、6)(从右向左解开: a=a*a=144;a=a-a=0;a=a+a=0) 五、编程题 1、参考答案: #include voidmain() {charc1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’; c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4; printf(“passwordis%c%c%c%c%c\n”,c1,c2,c3,c4,c5); } 运行结果: passwordisGlmre 也可以用循环和数组: #include voidmain() { charc[]={“China”}; printf(“passwordis“); for(inti=0;i<=4,i++) printf(“%c”,c[i]+=4); printf(“\n”); } 2、参考答案: #include voidmain() { charc1=97,c2=98; printf(“%d,%d\n”,c1,c2); printf(“%c,%c\n”,c1,c2); } 3、参考答案: #include #include voidmain() {doublea,b,c,total,average,square,squareroot; printf("请输入三个双精度实数: "); scanf("%lf%lf%lf",&a,&b,&c); total=a+b+c; average=total/3.0; square=a*a+b*b+c*c; squareroot=sqrt(square); printf("三个数的和=%-15.3f,三个数的平均值=%-15.3f\n",total,average); printf("三个数的平方和x=%.3f,x的平方根=%.3f\n",square,squareroot); } 运行结果: 请输入三个双精度实数: 1.234.567.89 三个数的和=13.680,三个数的平均值=4.560 三个数的平方和x=84.559,x的平方根=9.196 4、参考答案: #include #include voidmain() {floata,b,c,k,area; printf("请输入三角形三条边的边长: "); scanf("%f%f%f",&a,&b,&c);/*由键盘输入三角形三边边长*/ if((a+b<=c)||(a+c<=b)||(b+c<=a)) {printf("您输入的三条边无法构成三角形。 \n"); exit (1);/*结束程序*/ } k=(a+b+c)/2; area=sqrt(k*(k-a)*(k-b)*(k-c));/*函数sqrt(x)是求x的平方根*/ printf("该三角形的面积是%6.2f\n",area); } 运行结果: 请输入三角形三条边的边长: 3.45.67.4 该三角形的面积是9.05 5、参考答案: #include voidmain() {longa1,a2,a3,a4; printf("请输入两个整数: "); scanf("%ld%ld",&a1,&a2); a3=a1/a2; a4=a1%a2; printf("两数进行整数除的商是%ld,余数是%ld\n",a3,a4); } 运行结果: 请输入两个整数: 654321789 两数进行整数除的商是829,余数是240 6、参考答案: 要求得到某数(例如f=1.875)的第二位小数位,先把f乘以100(f*100),值为187.5,然后取f*100的整数部分(int)(f*100),值为187,最后由(int)(f*100)%10得到其个位数程序如下: #include voidmain() {inta,b,c; floatf; printf("请输入两个整数: "); scanf("%d%d",&a,&b); f=1.0*a/b; c=(int)(f*100)%10; printf("两数进行实数除,商是%f,商的第二位小数位是%d\n",f,c); } 运行结果: 请输入两个整数: 158 两数进行实数除,商是1.875000,商的第二位小数位是7 7、参考答案: #include voidmain() {unsignedu,high4,low4; printf("请输入一个无符号整数: "); scanf("%u",&u); low4=(u&0xf);/*u的低四位保留原值,其余位置0*/ high4=(u&0xf000)>>12;/*u的高四位保留原值,其余位置0,并右移12位*/ printf("%u的十六进制是%x\n",u,u); printf("十六进制表示%u的低四位是%x,高四位是%x\n",u,low4,high4); } 运行结果: 请输入一个无符号整数: 54332 54332的十六进制是d43c 十六进制表示54332的低四位是c,高四位是d 8、参考答案: #include voidmain() {charc1,c2,t; printf("请输入两个半角的小写英文字母: "); c1=getchar(); c2=getchar(); c1-=32; c2-='a'-'A';/*与32等价*/ t=c1; c1=c2; c2=t; printf("%c%c\n",c1,c2); } 运行结果: 请输入两个半角的小写英文字母: db BD 9、参考答案: #include voidmain() {intk; inthour,minute,second; printf("请输入秒数: "); scanf("%d",&k); hour=k/3600; k%=3600; minute=k/60; second=k%60; printf("%d小时%d分钟%d秒。 \n",hour,minute,second); } 运行结果: 请输入秒数: 7278 2小时1分钟18秒。 10、参考答案: #include voidmain() {floata,b,c,d,real,imag; printf("请输入第一个数的实部和虚部: "); scanf("%f%f",&a,&b); printf("请输入第二个数的实部和虚部: "); scanf("%f%f",&c,&d); real=a*c-b*d; imag=a*d+b*c; printf("两个复数积的实部和虚部分别是%f,%f\n",real,imag); } 运行结果: 请输入第一个数的实部和虚部: 1.12.2 请输入第二个数的实部和虚部: 3.34.4 两个复数积的实部和虚部分别是-6.050000,12.100000 第3章C程序的基本控制结构参考答案 一、单选题: 1、B2、D3、A4、B5、B6、A7、B8、D9、C10、C11、C12、B 13、C14、D15、D16、C17、B18、B 二、填空题: 1、6.62、Z3、5,6,A,B4、1F5、22 6、x=-x7、98、month9、! ! ! 10、2711、3,3,312、151515 13、014、D15、ch=ch+3216、sum=sum+grade17、intk1=0,k2=0,k3=0 18、c>='a'&&c<='z'19、x=(i-1)*4+j 三、改错题 1、错误语句: if(year%400! =0) 正确语句: if(year%400==0) 2、错误语句: scanf(“%d”,x); 正确语句: scanf(“%d”,&x); 3、错误语句: max=(temp temp: c; 正确语句: max=(temp>c)? temp: c; 4、错误语句: if(x%5==0||x%7==0) 正确语句: if(x%5==0&&x%7==0) 5、错误语句: inti,num; 正确语句: inti,num=0; 6、错误语句: while(fabs(t)>10-6) 正确语句: while(fabs(t)>1e-6) 7、错误语句: intf1,f2; 正确语句: longintf1,f2; 四、编程题: 1、从键盘输入一个圆的半径,输出圆的面积。 输出时要有文字说明,取小数点后2位。 #include voidmain() {floatr,s; scanf(“%f”,&r); s=3.14*r*r; printf(“s=%.2f”,s);} 2、输入一个整数,判断是奇数还是偶数。 #include voidmain() {inti; scanf(“%d”,&i); if(i%2==0) printf(“%d是一个偶数”,i); else printf(“%d是一个奇数”,i); } 3、从键盘输入一个三角形的边长,输出三角形面积,取2位小数。 当三角形不成立时输出“它不是一个三角形”。 #include #include voidmain() {floata,b,c,s,area; scanf(“%f,%f,%f”,&a,&b,&c); if(a+b>c&&b+c>a&&c+a>b) {s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%.2f\n”,area);} else printf(“它不是一个三角形”); } 4、从键盘输入一个字符,判断其是否是大写字母,如果是大写字母,则转换为小写字母,否则不转换。 #include voidmain() {charc; c=getchar(); if(c>=’A’&&c<=’Z’) c=c+32; printf(“%c”,c); } 5、从键盘输入一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 其中‘A’对应的是90分(含90分)以上的成绩,‘B’对应的是80~89分的成绩,‘C’对应的是70~79的成绩分,‘D’对应的是60~69分的成绩,‘E’对应的是小于60分的成绩。 如果输入的数值小于0或大于100要有“输入成绩错误”的信息显示。 #include voidmain() {intscore,c; scanf(“%d”,&score); c=score/10; switch(c) { case0: case1: case2: case3: case4: case5: printf(“E”);break; case6: printf(“D”);break; case7: printf(“C”);break; case8: printf(“B”);break; case9: case10: printf(“A”);break; default: printf(“error”); } } 6、编写程序,求1+2+3+…+200。 #include voidmain() { inti,s; i=1; s=1; for(i=1;i<=200;i++) s=s+i; printf("1+2+3+…+200=%d\n",s); } 7、有一分数序列: 2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和。 #include voidmain() {inti,temp; floatf2=2,f1=1,sum=0; for(i=1;i<=20;i++) {sum=sum+f2/f1; temp=f2; f2=f2+f1; f1=temp; } printf("sum=%9.6f\n",sum); } 8、求1! +2! +3! +4! +…+20! #include voidmain() {inti; floatsum=0,f=1; for(i=1;i<=20;i++) {f=f*i; sum=sum+f; } printf("sum=%e\n",sum); } 9、用牛顿迭代法求方程4x3-8x2+6x-12=0在1.5附近的根。 #include #include voidmain() {floatx=1.5,x0,y,f1; do {x0=x; y=((4*x0-8)*x0+6)*x0-12; f1=(12*x0-16)*x0+6; x=x0-y/f1; } while(fabs(x-x0)>=1e-6); printf("x=%10.2f\n",x);} 10、打印出以下图案。 * *** ***** ******* ***** *** * #include voidmain() {inti,j,k; for(i=1;i<=4;i++) {for(j=1;j<=4-i;j++) printf(""); for(k=1;k<=2*i-1;k++) printf("*"); printf("\n"); } for(i=1;i<=3;i++) {for(j=1;j<=i;j++) printf(""); for(k=1;k<=5-2*(i-1);k++) printf("*"); printf("\n"); } } 第四章数组参考答案 一、选择题: 1、B2、C3、D4、C5、C6、B7、D8、B9、B10、A 二、填空题: 1、首地址2、按行存放3、一个字符4、′\0′5、字符数组名或字符串 6、907、68、j-1str[j-1]9、6210、s1[i]=s2[i];三、改错题 1、错误语句: inta[3][]={2,4,6,8,10,12,14,16,18}; 正确语句: inta[][3]={2,4,6,8,10,12,14,16,18}; 2、错误语句: if(str[2]>string)string=str[2]; 正确语句: if(strcmp(str[2],string)>0)strcpy(string,str[2]); 3、错误语句: charc[5]={'C','h','i','n','a'}; 正确语句: charc[6]={'C','h','i','n','a'};或charc[]={“China”}; 4、错误语句: inta[3]={3*0}; 正确语句: inta[4]; 5、错误语句: scanf(“%d%d%d”,&a); 正确语句: for(i=0;i<3;i++)scanf(“%d”,&a[i]); 或scanf(“%d%d%d”,&a[0],&a[1],&a[2]); 四、编程题 1、用数组来处理,求解Fibonacci数列前40项: 1,1,2,3,5,8,13,21…。 #include voidmain() { inti; intt[40]={1,1}; for(i=2;i<40;i++) t[i]=t[i-2]+t[i-1]; for(i=0;i<40;i++) { if(i%5==0)printf("\n"); printf("%15d",t[i]); } } 2、用选择法对20个整数排序(由大到小)。 #include voidmain() {inti,j,min,t,x[20]; for(i=0;i<20;i++) scanf("%d",&x[i]); for(i=0;i<19;i++) {min=i; for(j=i+1;j<20;j++) if(x[min]>x[j])min=j; t=x[i]; x[i]=x[min]; x[min]=t; } for(i=0;i<20;i++) printf("%6d",x[i]); } 3、有一个3×5的矩阵,要求编程序求出其中值最小的那个元素的值,以及其所在的行号和列号。 #include voidmain() { inti,j,s=0,t=0,min; inta[3][5]; for(i=0;i<3;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); min=a[0][0]; for(i=0;i<3;i++) for(j=0;j<5;j++) if(a[i][j] {min=a[i][j]; s=i; t=j; } printf("min=%d,s=%d,t=%d\n",min,s,t); } 4、编一程序,将两个字符串连接起来,不要用strcat函数。 #include voidmain() {charstr1[80],str2[20]; inti=0,j=0; scanf("%s",str1); scanf("%s",str2); printf("str1: %s\n",str1); printf("str2: %s\n",str2); while(str1[i]! ='\0')i++; while(str2[j]! ='\0') {str1[i]=str2[j]; i++; j++;} str1[i]='\0'; printf("%s\n",str1); } 5、求一个5×5矩阵对角线元素之和(左上至右下之对角线)。 #include voidmain() {floata[5][5],sum=0; inti,j; for(i=0;i<5;i++) for(j=0;j<5;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)