C语言课后习题参考答案_第1页
C语言课后习题参考答案_第2页
C语言课后习题参考答案_第3页
C语言课后习题参考答案_第4页
C语言课后习题参考答案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章局部习题参考答案一、单项选择题:DABDDDAAABBCD整理课件第3章局部习题参考答案一、单项选择题:CACBBCDBBBADCCBDCCBB二、填空题:a!=b||a<=cx>20&&x<30||x<-1000非01x%3==0&&x%7==0或x%21==0整理课件三、编程题2、#include<stdio.h>#include<math.h>voidmain(){floata,b,c,p,s;printf("请输入三角形的三边长:");scanf("%f%f%f",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf("三角形面积为:%.2f\n",s);}elseprintf("输入的边长不能构成三角形!\n");}第3章习题整理课件3、#include<stdio.h>voidmain(){intx,y;scanf("%d",&x);

if(x>-5&&x<0)y=x-1;

elseif(x==0)y=x;

elseif(x>0&&x<8)y=x+1;

elsey=10;

printf("y=%d\n",y);}if(x>-5&&x<0)y=x-1;if(x==0)y=x;if(x>0&&x<8)y=x+1;if(x<=-5||x>=8)y=10;if(x<=-5||x>=8)y=10;elseif(x<0)y=x-1;elseif(x==0)y=x;elsey=x+1;第3章习题整理课件4、键盘输入一字符,大写转小写,小写转大写,其他原样输出。#include<stdio.h>voidmain(){

charch;scanf("%c",&ch);if(ch>='A'&&ch<='Z')ch=ch+32;elseif(ch>='a'&&ch<='z')ch=ch-32;printf("%c\n",ch);}ch=getchar();if(ch>='A'&&ch<='Z') printf("%c\n",ch+32);elseif(ch>='a'&&ch<='z')

printf("%c\n",ch-32);else printf("%c\n",ch);第3章习题整理课件8.#include<stdio.h>voidmain(){ intyear,flag=1; doublemoney,rate,total; printf("请输入存款本金和年限:"); scanf("%lf%d",&money,&year); if(year==1)rate=0.00215; elseif(year==2)rate=0.0023; elseif(year==3)rate=0.00245; elseif(year==5)rate=0.00275; elseif(year==8)rate=0.0032; elseflag=0; if(flag==1) { total=money*(1+rate*12*year); printf("总金额为:%.2lf\n",total); } elseprintf("输入的期限不正确!\n"); }第3章习题整理课件#include<stdio.h>voidmain(){ intyear,flag=1; doublemoney,rate,total; printf("请输入存款本金和年限:"); scanf("%lf%d",&money,&year); switch(year)

{ case1:rate=0.00215;break; case2:rate=0.0023;break; case3:rate=0.00245;break; case5:rate=0.00275;break; case8:rate=0.0032;break; default:printf("输入的期限不正确!\n");flag=0; } if(flag==1) { total=money*(1+rate*12*year); printf("总金额为:%.2lf\n",total); }}整理课件第4章局部习题参考答案一、单项选择题BCDBDBCDBBCCCCCBACDD二、编程题2.编程输出1~200之间所有能被3整除、且个位数为6的整数。方法2:#include<stdio.h>voidmain(){

inti;

for(i=6;i<=200;i=i+10)

if(i%3==0)printf("%5d",i);

printf("\n");}方法1:#include<stdio.h>voidmain(){inti;for(i=1;i<=200;i++)

if(i%3==0&&i%10==6)

printf("%5d",i);

printf("\n");}整理课件3.编程从键盘输入k的值及k个整数,统计其中的正数、零和负数的个数。#include<stdio.h>voidmain(){intx,k,i,p=0,z=0,m=0;printf("请输入待输入数据的个数:");scanf("%d",&k);printf("请输入%d个整数:",k);for(i=1;i<=k;i++){scanf("%d",&x);if(x>0)p++;elseif(x==0)z++;elsem++;}printf("正数、0、负数个数分别为:%d,%d,%d\n",p,z,m);}第4章习题整理课件6.编程求e=1+1/1!+1/2!+1/3!+…+1/n!,直到最后一项小于10-5为止。#include<stdio.h>voidmain(){ floatsum,n,m,c; sum=1;n=1;m=1;c=1; while(c>=1E-5) { m=m*n; c=1/m; sum=sum+c; n=n+1; } printf("e=%f\n",sum);}#include<stdio.h>voidmain(){

inti=1;

doubles=1,e=1;

while(1/s>=1E-5) {

s=s*i;

e=e+1/s;

i++; } printf("e=%lf\n",e);}第4章习题整理课件7.输入两个正整数m和n,求其最小公倍数。#include<stdio.h>voidmain(){ intm,n,i; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); for(i=m;;i++) if(i%m==0&&i%n==0) break; printf("%d,%d的最小公倍数为%d\n",m,n,i);}#include<stdio.h>voidmain(){ intm,n,i; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); i=m; while(i%m!=0||i%n!=0)

i++; printf("%d,%d的最小公倍数为%d\n",m,n,i);}第4章习题整理课件8.输入假设干学生的成绩,输入负数时表示输入结束,求所有学生的最高分。#include<stdio.h>voidmain(){intcj,max=0;printf("输入成绩,以负数结束:");scanf("%d",&cj);while(cj>=0){if(max<cj)max=cj;scanf("%d",&cj);}printf("最高分:%d\n",max);}#include<stdio.h>voidmain(){intcj,max=0;printf("输入成绩,以负数结束:");while(1){scanf("%d",&cj);if(cj<0)break;if(max<cj)max=cj;

}printf("最高分:%d\n",max);}第4章习题整理课件13.有36块砖,由36人搬:男人一次搬4块,女人一次搬3块,两个小孩抬1块,要求一次刚好全部搬完。问男、女、小孩各多少人?#include<stdio.h>voidmain(){intx,y,z;//x,y,z分别表示男,女,小孩数for(x=0;x<9;x++)for(y=0;y<12;y++){z=36-x-y;if(4*x+3*y+z/2==36&&z%2==0)printf("%d%d%d\n",x,y,z);}}第4章习题整理课件14.猴子摘桃问题。T10=1Tn=(Tn+1+1)*2求T1=?nyt=1,i=9开始i≥1结束t=(t+1)*2i=i-1输出t#include<stdio.h>voidmain(){ inti,t; t=1; for(i=9;i>=1;i--) t=(t+1)*2; printf("第一天桃子数量为:%d\n",t);}第4章习题整理课件15.求数列2/1,3/2,5/3,8/5,…的前n项之和。#include<stdio.h>voidmain(){ inta,b,t,i,n; doublesum=0.0; printf("请输入n:"); scanf("%d",&n); a=2,b=1; for(i=1;i<=n;i++) { sum=sum+(double)a/b; t=a;a=a+b;b=t; } printf("sum=%f\n",sum);}第4章习题整理课件第5章局部习题参考答案一、单项选择题BBADCBDBCCDDDDCBAACD整理课件补1:输入6个整数到数组a中,将其逆序输出。补2:输入6个整数到数组a中,将其逆序存储,然后输出。补1:#include<stdio.h>voidmain(){

inti,a[6];

for(i=0;i<6;i++)

scanf("%d",&a[i]);

for(i=5;i>=0;i--)

printf("%d",a[i]);

printf("\n");}补2:#include<stdio.h>voidmain(){inti,j,a[6],t;

printf("请输入6个整数:");

for(i=0;i<6;i++)

scanf("%d",&a[i]);

for(i=0,j=5;i<j;i++,j--)

{t=a[i];a[i]=a[j];a[j]=t;}

printf("逆序后数据为:");

for(i=0;i<6;i++)

printf("%d",a[i]);

printf("\n");}012345375261a第5章习题整理课件二、编程题1.#include<stdio.h>voidmain(){ inta[10],i,k,sum; floatave; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]);

sum=0,k=0; for(i=0;i<10;i++) if(a[i]>0) {sum+=a[i];k++;} ave=(float)sum/k; printf("正数的个数为:%d,平均值为:%.2f\n",k,ave);}第5章习题整理课件2.方法一:#include<stdio.h>voidmain(){ inta[100],i,n,score; floatsum,ave; i=0,sum=0; while(1)

{ printf("请输入第%d个学生成绩:",i+1); scanf("%d",&score);

if(score<0)break;

a[i]=score;sum+=a[i]; i++; } n=i;

ave=sum/n; printf("平均分为:%.2f\n",ave); printf("低于平均分的成绩有:"); for(i=0;i<n;i++) if(a[i]<ave)printf("%d",a[i]); printf("\n");}第5章习题整理课件2.方法二:#include<stdio.h>voidmain(){ inta[100],i=0,n,score; floatsum=0,ave;

printf("请输入学生成绩,以负数结束:"); scanf("%d",&score); while(score>=0)

{ a[i]=score; sum+=a[i]; i++; scanf("%d",&score); } n=i; ave=sum/n; printf("平均分为:%.2f\n",ave); printf("低于平均分的成绩有:"); for(i=0;i<n;i++) if(a[i]<ave)printf("%d",a[i]); printf("\n");}第5章习题整理课件4.-改:从键盘输入一个3×3的矩阵,求该矩阵主对角线与副对角线上的元素之和。#include<stdio.h>voidmain(){

inta[3][3],i,j,sum=0;

printf("请输入3×3矩阵元素:\n");for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%d",&a[i][j]);if(i==j||i+j==2)sum=sum+a[i][j];}printf("主副对角线元素和:%d\n",sum);}第5章习题整理课件5.#include<stdio.h>#defineM3#defineN4voidmain(){ inti,j; floata[M][N],b[M],sum; printf("请输入%d×%d矩阵:\n",M,N); for(i=0;i<M;i++) { sum=0; for(j=0;j<N;j++) { scanf("%f",&a[i][j]); sum+=a[i][j]; }

b[i]=sum/N; } printf("各行平均值为:"); for(i=0;i<M;i++) printf("%7.2f",b[i]); printf("\n");}第5章习题整理课件8.#include<stdio.h>#include<string.h>voidmain(){ chara[20]; inti; printf("请输入字符串:"); gets(a); for(i=strlen(a)-1;i>=0;i--) printf("%c",a[i]); printf("\n");}第5章习题整理课件9.#include<stdio.h>voidmain(){ chars1[80],s2[40]; inti,j; printf("请输入第1个字符串:"); gets(s1); printf("请输入第2个字符串:"); gets(s2); i=0; while(s1[i]!='\0') i++; j=0; while(s2[j]!='\0')

{s1[i]=s2[j];i++;j++;} s1[i]='\0'; printf("连接后的字符串为:%s\n",s1);}第5章习题整理课件10.#include<stdio.h>voidmain(){ chars1[80],s2[80]; inti; printf("请输入一个字符串:"); gets(s2); for(i=0;s2[i]!='\0';i++) s1[i]=s2[i]; s1[i]='\0'; printf("复制后的字符串为:%s\n",s1);}第5章习题整理课件13.//冒泡法升序排序#include<stdio.h>#include<string>voidmain(){intn,i,j;chart,s[80];printf("请输入字符串:");gets(s);n=strlen(s);for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(s[j]>s[j+1])t=s[j],s[j]=s[j+1],s[j+1]=t;printf("排序后字符串:");puts(s);}//选择法升序排序#include<stdio.h>#include<string>voidmain(){intn,i,j,m;chart,s[80];printf("请输入字符串:");gets(s);n=strlen(s);for(i=0;i<n-1;i++){m=i;for(j=i+1;j<n;j++)if(s[j]<s[m])m=j;if(m!=i)t=s[i],s[i]=s[m],s[m]=t;}printf("排序后字符串:");puts(s);}第5章习题整理课件第6章局部习题参考答案一、单项选择题CAAABDCBBBCADADCDBAA注:第20小题不做要求整理课件二、编程题3.#include<stdio.h>voidmain(){intmin(int,int,int);inta,b,c,d,e,m1,m2;printf("请输入5个整数:");scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);m1=min(a,b,c);m2=min(m1,d,e);printf("最小值为:%d\n",m2);}intmin(intx,inty,intz){intm;if(x<y)m=x;elsem=y;if(z<m)m=z;returnm;}第6章习题整理课件4.#include<stdio.h>#include<math.h>voidmain(){intprime(intm);inti;for(i=2;i<=100;i++)if(prime(i))printf("%5d",i);printf("\n");}intprime(intm){intk,n;n=(int)sqrt(m);for(k=2;k<=n;k++)if(m%k==0)return0;return1;}第6章习题整理课件5.#include<stdio.h>intfgcd(intm,intn)//最大公约数函数{inti;i=m<n?m:n;for(;;i--)if(m%i==0&&n%i==0)returni;}intflcd(intm,intn)//最小公倍数函数{inti=m>m?m:n;for(;;i++)if(i%m==0&&i%n==0)returni;}voidmain(){inta,b,gy,gb;printf("请输入两个整数:");scanf("%d%d",&a,&b);gy=fgcd(a,b);gb=flcd(a,b);printf("%d,%d的最大公约数为:%d\n",a,b,gy);printf("%d,%d的最小公倍数为:%d\n",a,b,gb);}第6章习题整理课件6.#include<stdio.h>intf(inta,intn){inti,t=0;for(i=1;i<=n;i++)t=t*10+a;returnt;}voidmain(){inta,n,i,s=0;printf("请输入两个整数a,n:");scanf("%d%d",&a,&n);for(i=1;i<=n;i++)s=s+f(a,i);printf("结果为:%d\n",s);}第6章习题整理课件8.#include<stdio.h>#defineN6intmax(inta[]){inti,m;m=a[0];for(i=1;i<N;i++)if(m<a[i])m=a[i];returnm;}voidmain(){inti,b[N];printf("请输入%d个整数:",N);for(i=0;i<N;i++)scanf("%d",&b[i]);printf("最大数为:%d\n",max(b));}第6章习题整理课件9.#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidmain(){inti,n,a[100];//最多100个元素

printf("请输入元素个数:");scanf("%d",&n);printf("请输入%d个元素:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,n);printf("排序结果为:");for(i=0;i<n;i++)printf("%d",a[i]);printf("\n");}第6章习题整理课件12.#include<stdio.h>intfib(intk){intf;if(k==1)f=0;elseif(k==2)f=1;elsef=fib(k-1)+fib(k-2);returnf;}voidmain(){inti,n;printf("请输入项数:");scanf("%d",&n);printf("前%d项fibonacci数列为:",n);for(i=1;i<=n;i++)printf("%d",fib(i));printf("\n");}第6章习题整理课件第7章局部习题参考答案一、单项选择题DBCCCACBADCACCDDDCDCCBCAC注:15~25小题不做要求二、填空题1.202152.⑴s=p+3⑵s=s-2⑶100⑷*(s+1)⑸23.1104.abcdea5.malloc(sizeof(int)*11)——不做要求整理课件三、编程题〔用指针完成〕1.#include<stdio.h>voidswap(int*px,int*py){intt;t=*px;*px=*py;*py=t;}voidmain(){inta,b,c;printf("请输入三个整数:");scanf("%d%d%d",&a,&b,&c);if(a<b)swap(&a,&b);if(a<c)swap(&a,&c);if(b<c)swap(&b,&c);printf("三个数从大到小为:%d%d%d\n",a,b,c);}第7章习题整理课件2.#include<stdio.h>voidswap(int*px,int*py){intt;t=*px;*px=*py;*py=t;}voidmain(){inta[10],i;int*pmax,*pmin;//两个指针分别指向最大,最小数

printf("请输入10个整数:");for(i=0;i<10;i++)

scanf("%d",&a[i]);pmax=pmin=a;for(i=1;i<10;i++)if(*pmax<a[i])pmax=&a[i];elseif(*pmin>a[i])pmin=&a[i];swap(pmax,&a[9]);swap(pmin,&a[0]);printf("交换后的10个数为:");for(i=0;i<10;i++)

printf("%d",a[i]);printf("\n");}第7章习题整理课件3.#include<stdio.h>voidmain(){chara[100],*p=a;intflag=0;printf("请输入一个字符串:");gets(a);while(*p!='\0'){if(*p=='k'){flag=1;break;}p++;

}if(flag==1)printf("已找到!\n");elseprintf("没找到\n");}第7章习题整理课件5.#include<stdio.h>voidscat(char*s1,char*s2){char*p1=s1,*p2=s2;while(*p1!='\0')p1++;while(*p2!='\0'){*p1=*p2;p1++;p2++;}*p1='\0';}voidmain(){chara[80],b[40];printf("请输入第1个字符串:");gets(a);printf("请输入第2个字符串:");gets(b);scat(a,b);printf("b连接到a后字符串为:%s\n",a);}第7章习题整理课件6.#include<stdio.h>#include<string.h>voidmain(){inthw(char*s);chars[80];printf("请输入一个字符串:");gets(s);if(hw(s))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论