C语言程序设计实用教程 参考答案.docx
- 文档编号:17148099
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:22
- 大小:20.36KB
C语言程序设计实用教程 参考答案.docx
《C语言程序设计实用教程 参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实用教程 参考答案.docx(22页珍藏版)》请在冰点文库上搜索。
C语言程序设计实用教程参考答案
第2章课后习题参考答案
一、(略)
二、单选题
1、C2、D3、C4、A5、C6、D7、C8、B9、D10、A
三、填空题
0
四、写程序运行结果
1、2,12、03、164、35、1
五、编程题
解:
设鸡有X只,兔有Y只,根据题意可得方程如下:
x+y=a
2x+4y=b
解方程组可得到:
x=(4*a-b)/2
y=(b-2a)/s
编程如下:
#include
#include
main()
{
intx,y,a,b;
printf(“Pleaseinputtwointergernumbers:
\n”);
scanf(“%d,%d”,&a,&b);
x=(4*a-b)/2;
y=(b-2*a)/2;
printf(“Thereare%dchicken.\n”,x);
printf(“Thereare%drabbit.\n”,y);
}
2、(题意看书上:
求三角形面积)
#include
#include
main()
{inta,b,c;
floats,area;
printf(“Pleaseinput3numbersfortriangle:
\n”);
scanf(“%d,%d,%d”,&a,&b,&c);
s=0.5*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%f”,area);
}
第3章课后习题参考答案
单选题
B2、BC3、A4、D5、B6、C
7、C8、C9、A10、A11、C12、C13、B14、C15、B16、B
写出下列程序的运行结果
1、a=20,b=40,c=202、233、684、a=%d,b=%d5、1651.56.5
b=-3.141,-3.1415e+00,-3.1415e+00
7、x=4y=118k=49x=4.900000y=410*
**
***
****
填空题
1、
(1)d,e
(2)(a>b)(3)(d>c)输出显示:
max=7
2、
(1)k=1;break;
(2)k=2;break;(3)k=3;break;(4)k=4;break;(5)k=5;break;
34、(i%3==0)&&(i%5==0)&&(i%7==0)5、i=0,j=0,n;scanf(“%d”,&n);
四、编程题
1.要求从大到小打印三个整数,a,b,c.
main()
{
inta,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a
{t=a;a=b;b=t;}
if(a {t=a;a=c;c=t;} if(b {t=b;b=c;c=t;} printf("bigtosmall: %d%d%d\n",a,b,c); } 2.编程求一元二次方程的根 #include main() { floata,b,c,disc,x1,x2,realpart,imagpart; printf("inputcanshua,b,c"); scanf("%f,%f,%f",&a,&b,&c); printf("Theequation"); if(fabs(a)<=1e-6) printf("isnota2cifangcheng."); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("hastwoequalroots: %f\n",-b/2*a); elseif(disc>1e-6) { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("hasdistinctrealroots: %fand%f\n",x1,x2); } else { realpart=-b/2*a; imagpart=sqrt(-disc)/(2*a); printf("hascomplexroots: \n"); printf("%f+%fi\n",realpart,imagpart); printf("%f-%fi\n",realpart,imagpart); } } 3. main() { floata,r,rate,bonus; printf("inputa(jiangjin): "); scanf("%f",&a); if(a<500) rate=0; elseif(a>=500&&a<1000) rate=(a-500+1)*0.05; elseif(a>=1000&&a<2000) rate=(a-1000+1)*0.08+500*0.05; elseif(a>=2000&&a<3000) rate=(a-2000+1)*0.1+1000*0.08+500*0.05; else rate=(a-3000+1)*0.15+1000*0.1+1000*0.08+500*0.05; bonus=a-rate; printf("rate=%f,bonus=%f\n",rate,bonus); } 3’ main() { floata,r,rate,bonus,t; printf("inputa(jiangjin): "); scanf("%f",&a); t=a/500; if(t>6)t=6; switch((int)(t)) { case0: rate=0;break; case1: rate=(a-500+1)*0.05;break; case2: case3: rate=(a-1000+1)*0.08+500*0.05;break; case4: case5: rate=(a-2000+1)*0.1+1000*0.08+500*0.05;break; case6: rate=(a-3000+1)*0.15+1000*0.1+1000*0.08+500*0.05;break; } bonus=a-rate; printf("rate=%f,bonus=%f\n",rate,bonus); } 4.编程,将2000到3000年之间的闰年输出 main() { inty; for(y=2000;y<=3000;y++) { if(y%4==0&&y%100! =0||y%400==0) printf("%d",y); } } 5.从键盘输入若干字符,统计其中字母符号(区分大小写),数字符号和其他字符的个数。 #include main() { charc; intbletter=0,sletter=0,digit=0,other=0; printf("inpursomechars: \n"); while((c=getchar())! ='\n') { if(c>='a'&&c<='z')sletter++; elseif(c>='A'&&c<='Z')bletter++; elseif(c>='0'&&c<='9')digit++; elseother++; } printf("bletter: %d,sletter: %d,digit: %d,other: %d\n",bletter,sletter,digit,other); } 6、求阶乘的前20项的和 main() { floats=0,t=1; intn; for(n=1;n<=20;n++) {t=t*n;s=s+t;} printf(“1! +2! +3! +…….+20! =%e\n”,s); } 7.编程求所有的水仙花数。 main() { inti,j,k,n; for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(i*i*i+j*j*j+k*k*k==n) printf("%4d",n); } printf("\n"); } 8.(题意看书上) main() { inti,j,k,n; for(n=200;n<300;n++) { i=n/100; j=n/10-i*10; k=n%10; if(i*j*k==42&&i+j+k==12) printf("%4d",n); } printf("\n"); } 9.编程计算1——100之间能同时被3和4整除的所有的整数的和。 main() { intn,sum=0; clrscr(); for(n=1;n<100;n++) { if(n%3==0&&n%4==0) {printf("%d",n); sum=sum+n; } } printf("\nsum=%d",sum); } 10、编程计算1——100之间所有的偶数的和。 main() { intn,s=0; for(n=1;n<100;n++) {if(n%2==0) s=s+n;} printf(“s=%d”,s); } 11.(题意看书上) main() { intt; printf("studentsnumbermaybe: "); for(t=500;t<1000;t++) { if(t%5==2&&t%7==3&&t%3==1) printf("%4d",t); } printf("\n"); } 第4章课后习题参考答案 一选择题CCDABC 二程序填空 1、 (1)&a[i] (2)continue 2、{s[j]=s[i];j++;} 三编程 main() {inta[3][3],sum=0; intij; printf(“pleaseinputdata: \n”); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][j]; printf(“sum=%6d\n”,sum); } 插入法排序 main() {inta[10]; inti,j,x; printf(“Pleaseinput10numbers: \n”); for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=1;i<10;i++) {x=a[i]; j=x-1; while(j>=0&&a[j]>x) {a[j+1]=a[j];j--;} a[j+1]=x; } 3#include #defineN15//定义字符常量表示数组长度 main() {inti,j,number,top,bott,mid,loca,a[N],flag=1,sign=1; charc; printf(“Pleaseinputdata: \n”);//数组数据的输入 scanf(“%d”,&a[i]); i=1; while(i {scanf(“%d”,&a[i]); if(a[i]>=a[i-1])//按照从小到大的输入 i++; else printf(“Inputthisdataagain: ”); printf(“\n”); for(i=0;i printf(“%d”,a[i]);//数组输出显示 printf(“\n”); flag=1;//如果是有序数组就将Flag=1 while(flag) {printf(“Pleaseinputnumbertolookfor: ”); scanf(“%d”,&number);//输入要查找的数据 loca=0;//查找成功与否的开关变量 top=0;//查找区间的开始元素下标 bott=N-1;//查找区间的结束元素下标 if((numbera[N-1]))//要查找的数据超出范围 loca=-1;//没有找到 while((sign==1)&&(top<=bott)) {mid=(bott+top)/2;//折半(取中间位置的数据) if(number==a[mid]) {loca=mid; printf(“Find%d,itspositionis%d\n”,number,loca+1); sign=0;//找到 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实用教程 参考答案 语言程序设计 实用教程