C语言答案.docx
- 文档编号:29564379
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:62
- 大小:31.51KB
C语言答案.docx
《C语言答案.docx》由会员分享,可在线阅读,更多相关《C语言答案.docx(62页珍藏版)》请在冰豆网上搜索。
C语言答案
C语言习题答案
第1章
1.选择题
12345
CBABD
2.填空题
(1)main
(2)main(3)有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性
(4)顺序、分支和循环(5)自顶向下,逐步细化、模块化设计、限制使用goto语句
第2章
1.选择题
123456789012345
ACCDADDBBABBACB
2、填空题
(1)数字、字母、下划线
(2)0(3)4、8(4)(a+b)*c/(a-b)(5)-60(6)-16
(7)9(8)6、4、2(9)0(10)10、6(11)12、4(12)5.500000
(13)0(14)16(15)6.6
3、编程题
(1)编写一个程序求各种类型数据的存储长度。
#include
main()
{
printf("int:
%dbyte\n",sizeof(int));
printf("shortint:
%dbyte\n",sizeof(shortint));
printf("longint:
%dbyte\n",sizeof(longint));
printf("float:
%dbyte\n",sizeof(float));
printf("double:
%dbyte\n",sizeof(double));
printf("longdouble:
%dbyte\n",sizeof(longdouble));
printf("char:
%dbyte\n",sizeof(char));
}
(2)
#include
#defineRAT1.60934
main()
{
floatk;
printf("inputthekm:
");
scanf("%f",&k);
printf("mile:
%f\n",k/RAT);
}
第3章
1.选择题
1234567890
(1)~(10):
DDCDDDCDCC
2.解析题
(1)x=170,x=ㄩㄩㄩ170,x=ㄩㄩㄩ252,x=ㄩㄩㄩㄩaa,x=ㄩㄩㄩ170
x=170,x=170ㄩㄩㄩ,x=ㄩㄩㄩ170,x=%6d
a=513.789185,a=ㄩㄩ513.79,a=513.78918457,a=513.78918457
(2)a=3ㄩb=7x=8.5ㄩy=71.82c1=Aㄩc2=a
3.编程题
(1)
main()
{
intx,y;
scanf("%d%d",&x,&y);
printf("商数=%d,余数=%d",x/y,x%y);
}
(2)
main()
{
doublex,y,z,avg;
scanf("%lf%lf%lf",&x,&y,&z);
avg=(x+y+z)/3;
printf("%.1f",avg);
}
第4章
1.选择题
(1)~(10)CCAADCCABD
2.填空题
(1)①a>0&&b>0||a>0&&c>0||b>0&&c>0
②a
③a>5||-a>5
④(a<=0)&&((int)a)!
=a
⑤(a%b)!
=0
(2)①!
(x>0)②1③!
(x>=0&&x<=5)
(3)3、2、2
(4)ch>='A'&&ch<='Z'ch=ch-32
(5)x<=10&&x>2x<=2&&x>-1y=-1;
(6)a+b>c&&a+c>b&&b+c>aa==b&&a==ca==b||a==c||b==c
(7)x<0c=x/10y!
=-2
3.编程题
(1)
#include
main()
{
intx;
printf("pleaseinputanumber:
");
scanf("%d",&x);
if(x%2==0)printf("xisaevennumber");
elseprintf("xisaoddnumber");
}
(2)
#include
main()
{
intx,y;
printf("pleaseinputanumber:
");
scanf("%d",&x);
if(x>-5&&x<0){y=x;printf("%d",y);}
elseif(x==0){y=x-1;printf("%d",y);}
elseif(x>0&&x<10){y=x+1;printf("%d",y);}
elseprintf("thenumberiserror");
}
(3)
#include
main()
{inta,m;
printf("pleaseinputanumber:
");
scanf("%d",&a);
switch(a/10)
{case0:
case1:
case2:
m=1;break;
case3:
m=2;break;
case4:
m=3;break;
case5:
m=4;break;
default:
m=5;break;
}
printf("%d",m);
}
(4)
#include
main()
{
floatprice,tax;
printf("pleaseinputthepriceofproduct:
");
scanf("%f",&price);
if(price>=10000)tax=price*0.05;
elseif(price>=5000)tax=price*0.03;
elseif(price>=1000)tax=price*0.02;
elsetax=0;
printf("%f",tax);
}
(5)
#include
main()
{
floatscore;
printf("pleaseinputthescoreofstudent:
");
scanf("%f",&score);
if(score>=85)printf("VERYGOOD");
elseif(score>=60)printf("GOOD");
elseprintf("BAD");
}
(6)
#include
main()
{
intx,y,z;
printf("inputtwonumber:
");
scanf("%d%d",&x,&y);
if(x<10||x>99||y<10||y>99)
printf("inputdataerror!
\n");
else
{z=(x/10)*1000+(y/10)*100+(x%10)*10+y%10;
printf("%d\n",z);
}
}
第5章
1.选择题
(1)d
(2)c(3)a(4)d(5)a(6)d(7)d(8)b(9)d(10)b
(11)c(12)a(13)d(14)d(15)c
2.填空题
(1)fahrcelsius=5.0/9*(fahr-32)fahr+=step
(2)5、4、6(3)3*i-2
(4)y--z*=x(5)8ㄩ5ㄩ2(6)j++i%j==0j>=i(或j==i)
(7)sum 3.改错题 (1)第一处改正: For改为for 第二处改正: for(k=1;k<=4;k++)或for(k=0;k<4;k++) 第三处改正: ave=sum/4改为ave=sum/4.0 (2)第一处改正: i++改为j++ 第二处改正: m=100*i+10*j+k (3)第一处改正: temp=1 第二处改正: temp>=eps 第三处改正: r*2 (4)第一处改正: &n 第二处改正: ==== (5)第一处改正: t=m/10改为t=m%10 第二处改正: t=0改为t==0 第三处改正: m=m%10改为m=/10 4.编程题 (1)分式累加和。 #include main() { ints; floatn,t,sum; t=1;sum=0;n=1;s=1.0; while(n<=100) { sum=sum+t; n=n+1; s=-s; t=s/n; } printf("sum=%10.6f\n",sum); } (2)1~10的阶乘 #include main() { inti; longintn=1; for(i=1;i<=10;i++) { n=n*i; printf(i%5==0? "%2d! =%-10ld\n": "%2d! =%-10ld",i,n); } } (3)由*组成的等腰三角形 #include main() { intn,i,j; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n+i-1;j++) if(j<=n-i)printf(""); elseprintf("*"); printf("\n"); } } (4)完数 main() { intm,s,i; for(m=2;m<1000;m++) {s=0; for(i=1;i if((m%i)==0)s=s+i; if(s==m) {printf("%ditsfactorsare",m); for(i=1;i if(m%i==0)printf("%d,",i); printf("\n"); } } } (5)打靶 #include main() { inth10,h7,h5; for(h10=0;h10<=8;h10++) for(h7=0;h7<=8;h7++) for(h5=0;h5<=8;h5++) if(h10+h7+h5==8&&h10*10+h7*7+h5*5==53) printf("h10=%d\th7=%d\th5=%d\n",h10,h7,h5); } (6)猴子吃桃子问题。 采取逆向思维的方法,从后往前推断。 //代码一 main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } //代码二 main() { inti=9,sum=1; for(;i>0;sum=2*(sum+1),i--); printf("sum=%d\n",sum); } (7)牛顿迭代法 一般地: f(x)=a0xn+a1xn-1+….+an-1x+an=0 求f(x)在X0附近的根 计算公式: Xn+1=Xn-f(Xn)/f’(Xn) 精度: ε=|Xn+1-Xn|<1.0e-m,m=5。 所求的根: 满足精度的Xn #include #include main() {floatx,x0,f,f1; x=1.5;//可改为scanf("%f",&x); do {x0=x; f=2*x0*x0*x0-4*x0*x0+3*x0-6; f1=6*x0*x0-8*x0+3;//f的导数,即它的切线 x=x0-f/f1;//切线与x轴的交点 }while(fabs(x-x0)>=1e-5); printf("Therootis%8.7f\n",x); } (8)利用辗除法,直到b为0为止 main() {intp,r,n,m,temp; printf("inputtwointegern,m: "); scanf("%d,%d",&n,&m); if(n {temp=n; n=m; m=temp; } p=n*m; while(m! =0) { r=n%m; n=m; m=r; } printf("greatestcommondivisoris: %d\n",n);//最大公约数 printf("leasecommonmultipleis: %d\n",p/n);//最小公倍数 } 第6章 1.选择题 1234567890 CCDCCAADBD 2.写出程序的运行结果 (1)sum=6 (2)Max=9,row=1,col=0 (3) 0 10 210 3210 (4)-5 3、填空 (1)i=j=k=0i<4&&j==5j<5&&i==4 (2)i=1&&j-1 (3)n>0n%10+0x30或n%10+'0's[j]='\0' (4)s[i]、s[0],s[1]、str,s[1]、s[2],str 4.改错题 (1)第一处改正: n=strlen(str) 第二处改正: str[j]=='' 第三处改正: str[j]! ='' (2)第一处改正: ch=str[i] 第二处改正: (j>=0)&&(ch (3)第一处改正: s1[i]! ='\0' 第二处改正: j=0; (4)第一处改正: cnt=0 第二处改正: if(! (m%i)) 第三处改正: i 5.编程题 (1) VC提供的intrand(void)产生的实际上是0~32767(short型的最大数)的伪随机数,伪随机数总是以一个相同的数为起始值(种子),运用递推的原理来生成的。 所以,如果只使用rand函数,每次运行所形成的伪随机数列也相同,失去了随机意义。 但这样便于程序调试。 VC的rand()函数默认以1为种子。 要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。 VC提供的voidsrand(unsignedintseed)将seed作为种子,如果以time函数值(即当前时间)作为种子数,那么就可以保证随机性了,因为两次调用rand函数的时间通常是不同的。 也可以使用srand函数来人为指定种子数。 若要产生a~b之间的一个随机数,则可用a+rand()%(b-a+1)表示。 若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数;若要得到随机到百分位的随机小数,则需要先得到0~100的整数,然后均除以100,其它情况依此类推。 #include #include #include main() { inta[12],count=0,i; srand((unsigned)time(NULL)); for(i=0;i<12;i++) a[i]=5+rand()%11; for(i=0;i<12;i++) { printf("%5d",a[i]); count++; if(count%4==0)printf("\n"); } } (2) #include #defineN5 main() { inta[N],max,min,i,sum=0,count=0; floatav; for(i=0;i scanf("%d",&a[i]); max=min=a[0]; for(i=0;i { sum+=a[i]; if(a[i]>max)max=a[i]; if(a[i] } av=(float)sum/5; for(i=0;i if(a[i]>av)count++; printf("max: %d\nmin: %d\nav: %f\ncount: %d",max,min,av,count); } (3) #include main() { intscore[30];/*={61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80, 81,85,89,90,33,44,55,91,92,93};//不必赋初值,这是为调试程序方便*/ inti,count90=0,count80=0,count70=0,count60=0; for(i=0;i<30;i++) { printf("intputNO.%dstudent'sscore: ",i+1); scanf("%d",score+i); } for(i=0;i<30;i++) { if(score[i]>=90) { count90++; count80++; count70++; count60++; } elseif(score[i]>=80) { count80++; count70++; count60++; } elseif(score[i]>=70) { count70++; count60++; } elseif(score[i]>=60) count60++; } printf("0~59: %d\n60~69: %d\n70~79: %d\n80~89: %d\n90~100: %d",30-count60,count60-count70,count70-count80,count80-count90,count90); printf("\n60orhigher: %d\n70orhigher: %d\n80orhigher: %d\n90orhigher: %d\n",count60,count70,count80,count90); } (4) 1、 #include main() { chara[45]; inti,j,k; for(i=0;i<45;i++)a[i]=''; for(i=0;i<5;i++) { for(j=0;j a[9*i+j]=''; for(k=0;k<5;k++) a[9*i+j+k]='*'; } j=0; for(i=0;i<45;i++) { printf("%c",a[i]); j++; if(j%9==0)printf("\n"); } } 2、 #include main() { chara[5][9]; inti,j,k; for(i=0;i<5;i++) for(j=0;j<9;j++) a[i][j]=''; for(i=0;i<5;i++) { for(j=0;j a[i][j]=''; for(k=0;k<5;k++) a[i][j+k]='*'; } for(i=0;i<5;i++) { for(j=0;j<9;j++) printf("%c",a[i][j]); printf("\n"); } } (5) #include #defineN4 main() { inti,j,a[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}; printf("\nTheoriginalarray: \n"); for(i=0;i { for(j=0;j printf("%2d",a[i][j]); printf("\n"); } for(i=1;i { for(j=0;j { a[i][j]=a[i][j]+a[j][i]; a[j][i]=0; } } printf("\nTheresultis: \n"); for(i=0;i { for(j=0;j printf("%2d",a[i][j]); printf("\n"); } } 第7章 1.选择题 123456789012345 DADBDCADACBDDBD 2.填空 (1)函数 (2)main函数(3)函数首部、函数体(4)形式参数、实际参数、实参、形参(5)常量、变量、表达式(6)函数定义时函数值、返回值 (7)max(max(a,b),c))、(x>y? x: y) (8) ****** ###### ****** ****** ###### ****** ****** ###### ****** (9)str[]=abdef (10)low<=high(high+low)/2 3.改错题 (1)第一处: void改为int 第二处: i<=n&&(n%i==0)改为i<=n&&(n%i! =0)或i =0) 第三处: n! =i改为n==i (2)第一处: 删除; 第二处: for(j=1;j<=50;i++)改为for(j=1;j<=50;j++) 第三处: returni (3)第一处: doublefun(doubleb,x0)改为doublefun(doubleb,doublex0) 第二处: if(abs(x1-x0)>=1e-6)改为if(fabs(x1-x0)>=1e-6) 4、编程题 (1) #include longact(longn) { if(n==1||n==0)return1; else { returnn*act(n-1); } } main() { i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 答案