C语言第三版全部习题答案new.docx
- 文档编号:3565244
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:23
- 大小:21.97KB
C语言第三版全部习题答案new.docx
《C语言第三版全部习题答案new.docx》由会员分享,可在线阅读,更多相关《C语言第三版全部习题答案new.docx(23页珍藏版)》请在冰豆网上搜索。
C语言第三版全部习题答案new
习题1
一、选择题
1.B2.A3.B4.A5.B6.D
二、阅读程序写出结果。
1.IloveChina!
wearestudents.
2.6
三、程序设计题
解:
main()
{
inta,b,c,v;
a=10;
b=20;
c=15;
v=a*b*c;
printf("v=%d",v);
}
本程序运行结果为:
v=3000
习题2
一、选择题
1.C2.B3.A4.A5.A6.C
7.D8.C9.D10.C11.B12.A
二、程序阅读题
1.3,2,-8,2
3.000000,2.500000,-8.000000
2.4,4
3.3123
4.aabbccabc
三、程序设计题:
#defineM5
main()
{intn,c;
n=2;c=M*n;
printf("%d\n",c);}
本程序运行结果为:
10
习题3
一、选择题
1.A2.C3.D4.C5.C
二、程序阅读题
1.x=3,a=2,b=3
2.z=12.700000
3.121
a
212
三、程序填空:
a=a+b
b=a-b
a=a-b
四、程序设计题
#include
main()
{intn;
floatrate=0.0225,capital,deposit;
scanf("%d,%f",&n,&capital);
deposit=capital*pow(1+rate,n);
printf("deposit=%f\n",deposit);}
习题4
一、选择题
1.B2.B3.B4.B5.C6.D
7.C8.A
二、填空题
1.02.x>40&&x<=60||x<1203.最近的4.322
5.-1
三、程序填空:
1.(ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')
2.ch>='0'&&ch<='9'
3.ch==''
4.41
42
四、程序设计题
1.
#include
main()
{charch;
ch=getchar();
if(ch>='A'&&ch<='Z')ch+=32;
elseif(ch>='a'&&ch<='z')ch-=32;
putchar(ch);
putchar('\n');}
2.
解:
main()
{
floatx,y;
scanf("%f",&x);
if(x>-1)
y=2*x;
elseif(x==1)
y=3;
elsey=4+x;
printf("y=%f",y);
}
本程序运行结果为:
-2
y=2.000000
3.
main()
{intx;
scanf("%d",&x);
if(x%2==0)printf("IsEven\n");
elseprintf("IsOdd\n");}
习题5
一、选择题
1.C2.C3.D4.A5.B6.D
7.C8.C9.D10.B
二、程序阅读题
1.sum=3
2.程序的功能是1至10偶数求乘积,奇数求和,运行结果为sum=25mul=3840.000000。
2.前五项为0+1/2+2/3+3/5+5/8
3.******
**
**
******
三、程序填空:
1.ch=getchar()
ch>='a'&&ch<='z'
2.n=0;
i<=300或i<300
i%7==0||i%17==0或!
(i%7)||!
(i%17)或!
(i%17)||!
(i%7)
n%5==0或!
(n%5)
求和:
i<=300:
sum=4220或i<300:
4220
四、程序设计题:
1.编写程序求1-1/2+1/3-1/4+…+1/99-1/100的值
#include"stdio.h"
main()
{
inti,s=-1;
floatsum=1.0;
for(i=2;i<=100;i++)
sum=sum+1.0*s/i;
printf("sum=%f",sum);
}
2.曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。
达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,……,最后能有多少小麦粒呢?
main()
{floati,s=1,t=1;
for(i=1;i<=63;i++)
{t*=2;
s+=t;}
printf("s=%f\n",s);
}
3.打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:
153=13+53+33。
main()
{intk1,k2,k3,i;
for(k1=1;k1<=9;k1++)
for(k2=0;k2<=9;k2++)
for(k3=0;k3<=9;k3++)
{i=k1*k1*k1+k2*k2*k2+k3*k3*k3;
if(i==k1*100+k2*10+k3)
printf("\n%d=%d^3+%d^3+%d^3",i,k1,k2,k3);}}
4.一张纸的厚度为0.1毫米,珠穆琅玛峰的高度为8848.13米,假如纸张有足够大,将纸对折多少次后可以超过珠峰的高度?
main()
{floath=8848.13,h0=0.0001,h1;
intm=0;
h1=h0;
while(h0<=h)
{h0=2*h0;
printf("\nm=%d,high=%f",m,h0);
m++;}
printf("\nm=%d\n",m-1);}
5.输入一行字符以@作结束标志,分别统计其中英文字母、空格、数字和其它字符的个数。
#include"stdio.h"
main()
{charch;
intcha=0,space=0,digit=0,other=0;
while((ch=getchar())!
='@')
{if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')cha++;
elseif(ch=='')space++;
elseif(ch>='0'&&ch<='9')digit++;
elseother++;}
printf("\ncha=%d,space=%d,digit=%d,other=%d",cha,space,digit,other);}
5.一个正数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。
解:
#include
main()
{
intn;
n=1;
while
(1)
{
n=n+1;
if((n+3)%5==0&&(n-3)%6==0)break;
}
printf("n=%d",n);
}
本程序运行结果为:
n=27
6.已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别是多少。
解:
#include
main()
{
intx,y,z,i;
for(x=1;x<=9;x++)
for(y=1;y<=9;y++)
for(z=0;z<=9;z++)
{
i=100*x+10*y+z+100*y+10*z+z;
if(i==532)printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
本程序运行结果为:
x=3,y=2,z=1
8、学校有近千名学生排队,5人一行余2人,7人一行余3人,3人一行余1人,求学生人数。
解:
#include
main()
{
intn;
for(n=1000;n>=10;n--)
if(n%5==2&&n%7==3&&n%3==1)break;
printf("n=%d\n",n);
}
本程序运行结果为:
n=997
9.打印下列图形。
*****
*****
*****
*****
*****
main()
{inti,j;
for(i=1;i<=5;i++)
{for(j=1;j<=5-i;j++)
printf("");
for(j=1;j<=5;j++)
printf("*");
printf("\n");}}
习题6
一、选择题
1.D2.D3.C4.C5.A6.B
7.B8.A9.D10.D11.A12.D
13.A14.C15.D
二、程序阅读题。
1.输出结果:
1357911
24681012
131313131313
2.输出结果:
originalarray:
96541
sortedarray:
14569
三、程序设计题
1、分别用冒泡法和选择排序法对十个随机整数进行排序。
参考教材
2、编写一个程序计算字符串中值为x(x由键盘输入)的字符个数。
#include"stdio.h"
#include"string.h"
main()
{chara[20],x;
intn=0,i=0;
printf("\nPleaseinputstring,endofenterkey:
");
gets(a);
printf("\nPleaseinputx:
");
x=getchar();
while(a[i]!
='\0')
{if(a[i]==x)n++;
i++;}
printf("\n%d",n);}
if(x[i]>ave)printf("%f",x[i]);}
3、求4×5二维数组的周边元素之和
#include
main()
{
inta[4][5]={{3,-2,1,2,3},{0,1,3,-2,2},{3,1,0,4,1},{1,1,3,-2,2}};
inti,j,sum=0;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
if(i==0||j==0||j==4||i==3)sum=sum+a[i][j];
printf("%d",sum);
}
程序运行结果:
17
4.评定奥运会某参赛选手的成绩。
设某参赛选手的某项目有8位评委,要求去掉一个最高分和一个最低分,给出其最后得分。
#include
#defineN10/*定义字符常量*/
main()
{
intx[N],i,max,min,score=0;
printf("Pleaseinput%dintegers:
\n",N);
/*输入N个数,存入数组中*/
for(i=0;i {scanf("%d",&x[i]);score+=x[i];}/*赋初值*/ max=min=x[0];/*将第一个数默认为最大或最小值*/ for(i=1;i { if(max if(min>x[i])min=x[i];/*求最小值*/ } printf("Thelastscoreis: %d\n",(score-max-min)/(N-2); } 5.打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 146 41 ………… #defineN11 main() {inti,j,a[N][N]; for(i=1;i {a[i][i]=1;a[i][1]=1;} for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i {for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n");} printf("\n");} #defineN11 main() { inti,j,a[N][N]; for(i=1;i { a[i][i]=1; a[i][1]=1; } for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i { for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } printf("\n"); } 本程序的运行结果为: 1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881 193684126126843691 6.输入一个含若干个字符的字符串,分别搜索出其中的字母和数字,其余的字符一概忽略。 将字母序列和数字序列分别输出 #include"stdio.h" main() { inti; chart[80]; printf("Enterastring: "); gets(t); for(i=0;t[i];i++) if(t[i]>='a'&&t[i]<='z'||t[i]>='A'&&t[i]<='Z') printf("%c",t[i]); printf("\n"); for(i=0;t[i];i++) if(t[i]>='0'&&t[i]<='9') putchar(t[i]); putchar('\n'); } 7.、一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。 不用strcpy函数。 拷贝时,‘\0’也要拷贝过去。 ‘\0’后面的字符不拷贝。 解: #include"stdio.h" main() { charfrom[80],to[80]; inti; printf("Inputstring: "); scanf("%s",from); for(i=0;i<=strlen(from);i++) to[i]=from[i]; printf("theresult: %s\n",to); } 本程序的运行结果为: theresult: Inputstring: student 8.编写一个程序判定用户输入的正数是否为“回文数”,所谓回文数是指数正读反读都相同。 #include main() {intbuffer[10],i,k,b; longnumber,n; printf("inputapositivenumber: "); scanf("%ld",&number); k=0; n=number; do {buffer[k]=n%10; k=k+1; n=n/10;}while(n! =0); b=1; for(i=0;i<=(k-1)/2;i++) if(buffer[i]! =buffer[k-1-i])b=0; if(b)printf("%ldishuiwenshu\n",number); elseprintf("%ldisnothuiwenshu\n",number);} 习题7 一、选择题 1.B2.D3.C4.B5.B6.D 7.A8.A9.D 二、程序阅读题 1.x=10 2.7 3.sum=6 三、程序填空 1.inti; 2.i%3==0||i%5==0||i%8==0 四、程序设计题 1.写一个判定偶数的函数,在主函数中输入一个整数,输出是否是偶数的信息。 inteven(x) intx; {if(x%2==0)return (1); elsereturn(0);} main() {intx; scanf("%d",&x); if(even(x))printf("xiseven."); elseprintf("xisnoteven.");} 2. 3.输入10个学生的成绩,分别用函数实现: (1)求平均成绩; (2)按分数高低进行排序并输出。 解: main() {floataverage(floatb[]); voidsort(floatb[]); floata[10],j,aver; printf("input10: "); for(j=0;j<10;j++) scanf("%f",&a[j]); aver=average(a);//求平均值,可省略 printf("aver=%.2f\n",aver); sort(a); for(j=0;j<10;j++) printf("%10.2f",a[j]); } floataverage(floatb[])//求平均值,可省略 {intj;floatsum=0,aver; for(j=0;j<10;j++) sum=sum+b[j]; aver=sum/10.0; return(aver); } voidsort(floatb[]) {inti,j,max,k; for(i=0;i<10;i++) {max=b[i];k=i; for(j=i+1;j<10;j++) if(max {max=b[j];k=j;} b[k]=b[i]; b[i]=max; } } 本程序运行结果为: input10: 45128685798485964589 aver=70.60 96.0089.0086.0085.0085.0084.0079.0045.0045.0012.00 习题8 一、选择题 1.D2.A3.C4.C5.D6.C 7.D8.A 二、填空题 三、程序设计题(要求使用指针方法实现) 1.输入三个整数a、b、c,利用指针方法找出其中最大值。 main() { inta,b,c,*p1,*p2,*p3; scanf("%d,%d,%d",&a,&b,&c); p1=&a; p2=&b; p3=&c; if(*p1<*p2)max=*p1elsemax=*p2; if(*p3 printf("\nmax=%d\n",max); } 程序结果: 9,0,10<回车> max=10 2.编一个程序,用指针变量实现输入10个整数存入一维数组,再按逆序重新存放后输出。 #include main() {inta[10],*p,i,t; p=a; for(i=0;i<10;i++) scanf("%d",p+i); for(i=0;i<5;i++) {t=*(p+i);*(p+i)=*(p+9-i);*(p+9-i)=t;} for(i=0;i<10;i++) printf("%5d",*(p+i)); printf("\n"); } 3.从键盘输入一个字符串,存入一个数组中,求出输入的字符串的长度。 #include main() {charstr[80],*p,i,len=0; p=str; gets(p); for(i=0;*(p+i)! ='\0';i++) len++; printf("len=%d\n",len); } 习题9 一、选择题 1.A2.B3.C4.AD5.B6.D 7.B 二、程序阅读题 1.Qian 2.3,3 三、程序填空: 1p<=person+2 2old=p->age 3q->name,q->age 四、程序设计题 1.定义一个结构体变量来表示日期(包括年、月、日),并编程来计算某一日期是本年的第几天,注意考虑闰年的问题。 解: struct {intyear; intmonth; intday; }date; main() {intdays; printf("Pleaseinputdate: (year,month,day)"); scanf("%d,%d,%d",&date.year,&date.month,&date.day); switch(date.month) {case1: days=date.day;break; case2: days=date.day+31;break; case3: days=date.day+59;break; case4: days=date.day+90;break; case5: days=date.day+120;break; case6: days=date.day+151;break; case7: days=date.day+181;break; case8: days=date.day+212;break; case9: days=date.day+243;break; case10: days=date.day+273;break; case11: days=date.day+304;break; case12: days=date.day+334;break; } if((date.year%4==0&&date.year%100! =0||date.year%400==0)&&date.month>=3) days+=1; printf("\n%dmonth%ddayis%ddayof%d.",date.month,date.day,days,date.ye
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第三 全部 习题 答案 new
![提示](https://static.bdocx.com/images/bang_tan.gif)