




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计实用教程 参考答案第2章课后习题参考答案一、(略)二、单选题1、C 2、D 3、C 4、A 5、C 6、D 7、C 8、B 9、D 10、A 三、填空题1、 1 2、 880 3、 10000010 4、00001111 5、11110000 6、 3 .500000 0四、写程序运行结果1、 2,1 2、 0 3、 16 4、3 5、 1五、编程题解:设鸡有X只,兔有Y只,根据题意可得方程如下:x+y=a2x+4y=b解方程组可得到:x=(4*a-b)/2y=(b-2a)/s编程如下:#include #include main( ) int x,y,a,b; printf(“Please input two interger numbers:n”); scanf(“%d,%d”,&a,&b); x=(4*a-b)/2; y=(b-2*a)/2; printf(“There are %d chicken.n”,x); printf(“There are %d rabbit.n”,y);2、(题意看书上:求三角形面积)#include #include main( ) int a,b,c; float s ,area; printf(“Please input 3 numbers for triangle: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章课后习题参考答案单选题B 2、B C 3、A 4、D 5、B 6、C 7、C 8、C 9、A 10、A 11、C 12、C 13、B 14、C 15、B 16、B写出下列程序的运行结果 1、 a=20,b=40,c=20 2、 23 3、68 4、a=%d ,b=%d 5、 1 65 1.5 6.5 6、a=3.140000,3.1400000e+00,3.140e+00,3.140e+00b=-3.141,-3.1415e+00,-3.1415e+00 7、x=4 y=11 8 k=4 9 x=4.900000 y=4 10 * * * *填空题1、 (1) d,e (2) (ab) (3) (dc) 输出显示:max=7 2、 (1)k=1;break;(2)k=2;break;(3)k=3;break;(4)k=4;break;(5)k=5;break;3 4、(i%3=0)&(i%5=0)&(i%7=0) 5、i=0,j=0,n; scanf(“%d”,&n);四、编程题1.要求从大到小打印三个整数,a,b,c.main() int a,b,c,t; scanf(%d%d%d,&a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; printf(big to small:%d %d %dn,a,b,c);2.编程求一元二次方程的根#include main() float a,b,c,disc,x1,x2,realpart,imagpart; printf(input canshu a,b,c); scanf(%f,%f,%f,&a,&b,&c); printf(The equation ); if(fabs(a)=1e-6) printf(is not a 2 ci fangcheng.); else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distinct real roots:%f and %fn,x1,x2); else realpart=-b/2*a; imagpart=sqrt(-disc)/(2*a); printf(has complex roots:n); printf(%f+%fin,realpart,imagpart); printf(%f-%fin,realpart,imagpart); 3.main() float a,r,rate,bonus; printf(input a(jiangjin):); scanf(%f,&a); if(a=500&a=1000&a=2000&a6) t=6; switch(int)(t) case 0: rate=0; break; case 1: rate=(a-500+1)*0.05; break; case 2: case 3: rate=(a-1000+1)*0.08+500*0.05; break; case 4: case 5: rate=(a-2000+1)*0.1+1000*0.08+500*0.05; break; case 6: rate=(a-3000+1)*0.15+1000*0.1+1000*0.08+500*0.05; break; bonus=a-rate; printf(rate=%f,bonus=%fn,rate,bonus);4.编程,将2000到3000年之间的闰年输出main() int y; for(y=2000;y=3000;y+) if(y%4=0&y%100!=0|y%400=0)printf(%d ,y); 5.从键盘输入若干字符,统计其中字母符号(区分大小写),数字符号和其他字符的个数。#include main() char c; int bletter=0,sletter=0,digit=0,other=0; printf(inpur some chars:n); while(c=getchar()!=n) if(c=a&c=A&c=0&c=9) digit+; else other+; printf(bletter:%d,sletter:%d,digit:%d,other:%dn,bletter,sletter,digit,other);6、求阶乘的前20项的和 main( ) float s=0,t=1; int n ; for(n=1;n=20;n+) t=t*n;s=s+t;printf(“1!+2!+3!+.+20!=%en”,s);7.编程求所有的水仙花数。main() int i,j,k,n; for(n=100;n1000;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() int i,j,k,n; for(n=200;n300;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.编程计算1100之间能同时被3和4整除的所有的整数的和。main() int n,sum=0; clrscr(); for(n=1;n100;n+) if(n%3=0&n%4=0) printf(%d ,n); sum=sum+n; printf(nsum=%d,sum);10、编程计算1100之间所有的偶数的和。main( ) int n,s=0; for(n=1;n100;n+) if(n%2=0)s=s+n; printf(“s=%d”,s);11.(题意看书上)main() int t; printf(students number maybe:); for(t=500;t1000;t+) if(t%5=2&t%7=3&t%3=1) printf(%4d,t); printf(n);第4章课后习题参考答案一 选择题 C C D A B C 二 程序填空 1、(1)& ai (2) continue 2、sj=si;j+;三 编程main() int a33,sum=0; int i j; printf(“please input data:n”); for(i=0;i3;i+)for(j=0;j3;j+) scanf(“%d”,&aij);for(i=0;i3;i+)sum=sum+aij;printf(“sum=%6dn”,sum); 插入法排序 main ( ) int a 10; int i,j,x; printf(“Please input 10 numbers:n”); for (i=0;i10;i+) scanf(“%d”,&ai); for(i=1;i=0&ajx) aj+1=aj; j-; aj+1=x;3 #include # define N 15 /定义字符常量 表示数组长度main() int i,j,number,top,bott,mid,loca,aN,flag=1,sign=1; char c;printf(“Please input data:n”);/ 数组数据的输入 scanf(“%d”,&ai);i=1;while(i=ai-1) / 按照从小到大的输入 i+;else printf(“Input this data again:”);printf(“n”);for(i=0;iN;i+) printf(“%d”,ai); /数组输出显示printf(“n”);flag=1; / 如果是有序数组就将Flag=1while(flag) printf(“Please input number to look for:”);scanf(“%d”,&number); / 输入要查找的数据loca=0; / 查找成功与否的开关变量top=0; / 查找区间的开始元素下标bott=N-1; /查找区间的结束元素下标if(numberaN-1) / 要查找的数据超出范围loca=-1; / 没有找到while(sign= =1)&(top=bott) mid=(bott+top)/2; / 折半 (取中间位置的数据) if(number= =amid) loca=mid; printf(“Find %d ,its position is %dn”,number,loca+1); sign=0; /找到 else if (numberamid)bott=mid-1; /查找区间变化else top=mid+1; if(sign= =1|loca= =-1) / 没有找到 printf(“%d is not found.n”,number); printf(“continue or not (Y/N)?”); scanf(“%c”,&c);if(c= =N|c= =n) flag=0; 4矩阵相乘 main( ) int a34,b45,c35; int i, j, k,n=0; /定义矩阵 I,j分别为矩阵a的行和列;j,k分别为矩阵b的行 printf(“n Please input a:n”); 和列for(i=0;i3;i+) for(k=0;k4;k+)scanf(“%d”,&aik); / 输入矩阵aprintf(“Please input b:n”);for(k=0;k4;k+) for(j=0;j5;j+)scanf(“%d”,&bkj); / 输入矩阵bfor(i=0;i3;i+) for(j=0;j5;j+) cij=0; for(k=0;k4;k+) cij+=aik*bkj; / 计算出矩阵cfor(i=0;i3;i+) for(j=0;j5;j+) printf(“%4d”,cij);n=n+1; / 输出矩阵c if(n= = 5) printf(“n”); n=0; / 输出5个数据后换行5 合并字符串(用strcat( ) 函数) # include main( ) char st180,st210; printf(“please input strings:n”); gets(st1); gets(st2); puts(st1); puts(st2);printf(“%sn”,strcat(st1,st2);# include main( ) int i=0,j=0; char st180,st210; printf(please input strings:n); gets(st1); gets(st2); while (st1i!=0) i+; while (st2j!=0) st1i=st2j;i+;j+; st1i=0; puts(st1);5 合并字符串(不用strcat( ) 函数)main ( ) char s180,s210; int i=0, j=0; printf(“n Please input string 1:”); scanf(“%s”,s1); printf(“n Please input string 2:”); scanf(“%s”,s2); while(s1i!=0)i+;while(s2j!=0)s1i+=s2j+;s1i=0;printf(“The new string is:%s”,s1); 6 查找数组中的一个指定字符,并输出该字符的位置# include # include main( ) char a20,ch; int i,j=0,flag=0; printf(“Please input numbers:n”);scanf(“%sn”,a);scanf(“%c”,ch);for (i=0;ai!=0;i+,j+) if(strcmp(ai,ch)=0) flag=1; printf(“Find %c ,its position is %dn”,ch,j);break;if (flag=0)printf(“Not find,%dn”,-1); 0 第5章课后习题参考答案一、选择题1、A 2、C 3、C 4、D 5、C 6、A 7A 8、C 9、B写程序运行结果1、 2 4 2、 18 10编程题1编写函数,通过指针将一个字符串反向。main () int a 10, i, *p; p=a; printf(“Please input a string:n”); for (i=0;i10;i+,p+) scanf(“%c”,p); p=&a9; for (i=0;i10;i+) printf(“%c”,*(p-i );编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其字符的数量。#include main () int bigletter=0,smallletter=0,digit=0; int space=0,other=0,i=0; char *p,s20; printf ( Please input a string:); while(si=getchar( )!=n) i+; p=s; while (*p!=n) if (A=*p&*p=Z) +bigletter;else if ( (a=*p)&(*p=z) +smallletter; else if (*p= ) +space; else if(*p=0) +digit; else other+; p+; printf (bigletter:%d smallletter:%d,bigletter ,smallletter); printf (space:%d other:%d digit:%d,space ,other,digit);有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位?main( ) int i, k,m,n,num50,*p; printf(Please input number of person: n=); scanf(%d,&n); p=num;for(i=0;p=num+n;i+,p+) *p=i+1; i=0;k=0; m=0;p=num;while (mn-1)if (*(p+i)!=0) k+;if (k=3) *(p+i)=0;k=0;m+; i+; if(i=n) i=0;while (*p=0) p+; printf (The last one is NO %dn,*p);第6章课后习题参考答案1、单项选择题1、B 2、 B 3、B 4、D 5、A 6、B 7、C 8、C 9、A 10、B 11、B 12、B 13、D 14、A 15、B 16、A 17、A 18、A 19、D二、编程题从键盘输入三个整数,调用函数求其中最大数。#include main( ) int x,y,z,big; int max(int a, int b, int c); /函数声明,注意前面的类型,后面的分号 printf(“Please input three numbers:n”); scanf(“%d,%d,%d”,&x,&y,&z);big=max(x,y,z); /函数调用,注意前面不再有类型,后面的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版高品质商品房预售协议合同范本解读
- 2025版天强建设工程有限公司承接XX学校教学楼及宿舍楼工程合同
- 2025版通信网络优化通信劳务分包合同规范文本
- 2025版全新民间借款合同利息计算及下载服务
- 2025版泰和泰大豆短量合同审查与诉讼代理服务合同
- 2025年度生猪屠宰与屠宰废弃物处理设施建设合同
- 2025年度多人持股企业股权转让及后续分红权益分配合同
- 2025标准私人别墅购置合同
- 2025版金融创新产品融资咨询与居间服务协议
- 2025年新能源汽车充电桩股份投资与运营管理协议
- 临时用水施工专项方案
- 北京市各县区乡镇行政村村庄村名明细
- 工艺联锁(报警)管理制度
- GB∕T 9286-2021 色漆和清漆 划格试验
- DB35∕T 1844-2019 高速公路边坡工程监测技术规程
- 720全景照片制作方案及发布流程
- 工作责任心主题培训ppt课件(PPT 26页)
- 除尘器基础知识培训资料(54页)ppt课件
- 完整解读新版《英语》新课标2022年《义务教育英语课程标准(2022年版)》PPT课件
- 《国际商务(双语)》课程教学大纲
- 2011版义务教育生物课程标准word版
评论
0/150
提交评论