C语言习题参考答案缩小版.docx

上传人:b****5 文档编号:6938621 上传时间:2023-01-12 格式:DOCX 页数:29 大小:36.41KB
下载 相关 举报
C语言习题参考答案缩小版.docx_第1页
第1页 / 共29页
C语言习题参考答案缩小版.docx_第2页
第2页 / 共29页
C语言习题参考答案缩小版.docx_第3页
第3页 / 共29页
C语言习题参考答案缩小版.docx_第4页
第4页 / 共29页
C语言习题参考答案缩小版.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言习题参考答案缩小版.docx

《C语言习题参考答案缩小版.docx》由会员分享,可在线阅读,更多相关《C语言习题参考答案缩小版.docx(29页珍藏版)》请在冰豆网上搜索。

C语言习题参考答案缩小版.docx

C语言习题参考答案缩小版

附录D习题参考答案

习题1答案习题1答案略。

习题2答案

一、选择题

1.A2.C3.D4.C5.B6.A7.B8.B9.C10.D

二、程序分析题

1.1,65,1.5,6.52.163.c,1004.4.0000005.10,26.-27.38.k=11,k=13,k=b

三、填空题

1.62.scanf(%d,%d,%d:

&i,&j,&k);3.7.0000004.0405.6.6

6.ch=C,i=67,f1=67.00,db=67.007.20,408.n1=%d\nn2=%d\n9.-3

10.x=1,y=2,z=2

x=1,y=3,z=3

x=2,y=1,z=1

四、编程题

2.从键盘输入一个大写字母,要求改用小写字母输出。

main()

{charc1;

scanf("%c",&c1);

printf("%c",c1+32);

}

1.编写一个求立方的宏,其中数值要求可以输入任意整数。

#include"stdio.h"

#defineSQR(n)((n)*(n)*(n))

main()

{inti,j;

scanf("%d",&i);

j=SQR(i);

printf("求得的立方是%d\n",j);

4.输入一个华氏温度,要求输出摄氏温度,公式为c=5/9(F-32),其中F代表华氏温度,c代表摄氏温度,输出要求有文字说明,取2位小数。

main()

{floatx,y;

scanf("%f",&x);

y=5.0/9*(x-32);

printf("所求得的摄氏温度为:

%5.2f\n",y);

}

}

3.输入三角形的三边长要求是整数,求三角形的周长。

main()

{intx;

scanf("%d,%d,%d",&x,&y,&z);

printf("周长是:

%d\n",c);

}

习题3答案

一、选择题

1.B2.A3.D4.A5.D6.B

二、填空题

1.x=-x或x=abs(x);2.m%i==03.continue4.switch(c)5.x>=0

三、程序改错题答案略

四、程序分析题

1.432.10,4,33.164.235.226.6

7.0.18.a=2,b=19.210.7

2.输入10个整数,统计并输出正数、负数和零的个数。

main()

{intx,zs=0,fs=0,zr=0,i;

printf("input10integerdata:

");

for(i=1;i<=10;i++)

{scanf("%d",&x);

if(x>0)zs++;

elseif(x==0)zr++;

elsefs++;

}

printf("zs=%dfs=%dzr=%d\n",zs,fs,zr);

}

五、编程题。

1.输入三个单精度数,输出其中最小值。

main()

{floatx,y,z,min;

printf("inputthreefloatnumbers:

");

scanf("%f%f%f",&x,&y,&z);

if(x

elsemin=y;

if(min>z)min=z;

printf("min=%f\n",min);

}_

3.输入三角形的三边长,输出三角形的面积。

#include"math.h"

4.输入两个正整数,输出它们的最大公约数和最小公倍数。

main()

{inta,b,maxgy,mingb;

printf("inputtwointegerdata:

");

scanf("%d%d",&a,&b);

maxgy=a

a:

b;

while(a%maxgy!

=0||b%maxgy!

=0)maxgy--;

mingb=a>b?

a:

b;

while(mingb%a!

=0||mingb%b!

=0)mingb++;

printf("maxgy=%dmingb=%d\n",maxgy,mingb);

}

main()

{floata,b,c,s,area;

printf("inputthreeedges:

");

scanf("%f%f%f",&a,&b,&c);

if((a+b>c)&&(b+c>a)&&(c+a>b))

{s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("area=%.2f\n",area);

}

else

printf("Notriangle\n");

}

6.用switch~case结构编写一程序,输入月份1~12后,输出该月的英文名称。

5.用if~else结构编写一程序,求一元二次方程ax2+bx+c=0的根。

#include"math.h"

main()

{floata,b,c,disk,x1,x2;

scanf("%f%f%f",&a,&b,&c);

disk=b*b-4*a*c;

if(disk>=0)

{x1=(-b+sqrt(disk))/(2*a);

x2=(-b-sqrt(disk))/(2*a);

printf("x1=%f\nx2=%f\n",x1,x2);

}

else

{printf("x1=%f+%f*i\n",-b/(2*a),sqrt(-disk)/(2*a));

printf("x2=%f-%f*i\n",-b/(2*a),sqrt(-disk)/(2*a));

}

}

#include"stdio.h"

main()

{intmonth;

charch;

while

(1)

{printf("\ninputmonth(1-12):

");

scanf("%d",&month);

switch(month)

{case1:

printf("January\n");break;

case2:

printf("February\n");break;

case3:

printf("March\n");break;

case4:

printf("April\n");break;

case5:

printf("May\n");break;

case6:

printf("June\n");break;

case7:

printf("July\n");break;

case8:

printf("August\n");break;

case9:

printf("September\n");break;

case10:

printf("October\n");break;

case11:

printf("November\n");break;

case12:

printf("December\n");break;

default:

printf("inputerror\n");

}

getchar();

printf("\ncontinue?

(Y/N):

");

ch=getche();

if(ch!

='y'&&ch!

='Y')break;

}

}_

8.打印出所有的“水仙花数”。

所谓“水仙花数”是指一个三位数,其各位数的立方和等于该数本身。

如:

153=13+53+33,则153是一个水仙花数。

main()

{inti,j,k;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)

printf("%8d",i*100+j*10+k);

}

7.求Sn=a+aa+aaa+…+aa…a(最后一项为n个a)的值,其中a是一个数字。

如:

2+22+222+2222+22222(此时n=5),n的值从键盘输入。

main()

{inta,n,i;

floats=0,result=0;

printf("inputa(1-9):

");

scanf("%d",&a);

printf("inputn:

");

scanf("%d",&n);

for(i=1;i<=n;i++)

{s=s*10+a;

result+=s;

}

printf("\nresult=%f\n",result);

10.编程序按下列公式计算e的值(精度要求为

<10-6)。

main()

{floati,s=1,sum=0;

i=1;

while(1/s>=1e-6)

{sum+=1/s;

i++;

s*=i;

}

printf("e=%f\n",sum+1);

}_

}

9.计算

main()

{floatsum=0,i;

for(i=1;i<=100;i++)

if(i<=50)

sum+=1/i+1/(i*i);

else

sum+=1/i;

printf("sum=%f\n",sum);

}

11.编程序按下列公式计算y的值(精度要求为

<10-6)。

12.有一篮子苹果,两个一取余一,三个一取余二,四个一取余三,五个一取刚好不剩,问篮子至少有多少个苹果?

main()

{inttotal=5;

while(total%2!

=1||total%3!

=2||total%4!

=3)

total+=5;

printf("total=%d\n",total);

}

main()

{floati,s=2,sum=0;

i=1;

while(1/s>=1e-6)

{sum+=1/s;

i++;

s=i*i+1;

}

printf("sum=%f\n",sum);

}_

习题4答案

一、选择题

1.D2.C3.A4.C5.D6.C7.D8.D9.C10.D

11.B12.B13.A14.C15.B16.B

二、程序分析题

1.192.33.194.2558

5.*****

*****

*****

*****

*****

三、程序填空题

1.k=i

2.strlen(str)-1

3.n%base

4.s[i]+=a[i+j]

5.scanf("%s",a);

6.9

7.g.i=4142

g.s[0]=42

g.s[1]=41

g.s=1

四、编程题

1.输入10个整型数并存入一维数组,要求输出值和下标都为奇数的元素个数。

main()

2.有5个学生,每个学生有四门课程,将有不及格课程的学生成绩输出。

main()

{inta[5][4]={{78,87,93,65},

{66,57,70,86},

{69,99,76,76},

{78,59,87,90},

{90,67,97,87}};

inti,j,k;

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

for(j=0;j<4;j++)

if(a[i][j]<60)

{printf("%4d",i+1);

for(k=0;k<4;k++)

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

printf("\n");

break;

}

}

{inta[10],i,num=0;

printf("enterarraya:

\n");

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

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

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

if(i%2==1&&a[i]%2==1)num++;

printf("num=%d\n",num);

}_

_

3.从键盘上输入一个字符串,统计字符串中的字符

个数。

不允许使用求字符串长度函数strlen()。

#include"stdio.h"

main()

{charstr[81],*p=str;

intnum=0;

printf("inputastring:

\n");

gets(str);

while(*p++)num++;

printf("length=%d\n",num);

}_

4.在n个数中查找某一个数。

#defineN5

5.矩阵转置

#defineN4

main()

{inti,j,a[N][N],t;

for(i=0;i

for(j=0;j

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

for(i=0;i

for(j=0;j

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

for(i=0;i

{

for(j=0;j

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

printf("\n");

}getch();

}

main()

{inta[N],i,x;

printf("input%dnumbers:

\n",N);

for(i=0;i

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

printf("inputxtolookfor:

");

scanf("%d",&x);

for(i=0;i

if(a[i]==x)

{

printf("find:

%ditisa[%d]\n",x,i);

exit(0);

}

printf("%dnotbeenfound.\n",x);

}

6.输入一行字符,将其中的小写字母转换为大写字

母,其余字符不变。

#include"stdio.h"

main()

{charc[81];

inti;

for(i=0;(c[i]=getchar())!

=’\n’;i++);

c[i]=’\0’;

for(i=0;c[i]!

=’\0’;i++)

{

if(c[i]>=’a’&&c[i]<=’z’)

c[i]-=32;

printf("%c",c[i]);

}

}

7.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

#include"stdio.h"

main()

{charstr[81],c,i;

intword=0,num=0;

gets(str);

for(i=0;(c=str[i])!

='\0';i++)

8.输入3个复数的实部和虚部放在一个结构体数组中,根据复数的模由小到大顺序对数组进行排序并输出。

(注:

复数的模=sqrt(实部*实部+虚部*虚部))

#include"math.h"

main()

{structcomplex

{floatx;

floaty;

floatm;

}a[N],t;

inti,j,k;

for(i=0;i

{scanf("%f%f",&a[i].x,&a[i].y);

a[i].m=sqrt(a[i].x*a[i].x+a[i].y*a[i].y);

}

for(i=0;i

{k=i;

for(j=i+1;j

if(a[k].m

k=j;

t=a[i];a[i]=a[k];a[k]=t;

}

for(i=0;i

printf("%.2f+%.2fi\n",a[i].x,a[i].y);

}

if(c=='')

word=0;

elseif(word==0)

{word=1;num++;}

printf("Thereare%dwordsintheline.\n",num);

}

9.已知某年的元旦是星期几,打印该年某一月份的日历表。

#include"stdio.h"

typedefstruct

{intyear,mon,day;

enumweekday{sun,mon,tue,wed,thu,fri,sat}week;

}daily;

main()

{dailydays;

printf("Whichyear?

");scanf("%d",&days.year);

printf("year%4d,Month1,day1isweekday?

\n",days.year);

printf("0-Sun,1-Mon,2-Tue,3-Wed,4-Thu,5-Fri,6-Sat:

");

scanf("%d",&days.week);

days.mon=days.day=1;

montable(days);

}

montable(dailyd)

{inti,s,ds;dailymd;

md.year=d.year;md.day=1;

printf("Whichmonth?

");scanf("%d",&md.mon);

for(s=0,i=1;i<=md.mon;i++)

{switch(i)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

ds=31;break;

case2:

ds=(md.year%4==0&&md.year%100!

=0||md.year%400==0)?

29:

28;break;

case4:

case6:

case9:

case11:

ds=30;

}

s+=ds;

}

s-=ds;

md.week=(s+d.week)%7;

printf("--==%4dYear,%2dMonth==--\n",md.year,md.mon);

printf("......................................\n");

printf("%5s%5s%5s%5s%5s%5s%5s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");

printf("......................................\n");

for(i=0;i

for(i=1;i<=ds;i++)

{printf("%5d",i);

if(++md.week==7){md.week=0;printf("\n");}

}

if(md.week!

=0)printf("\n");

printf("......................................\n");

}

 

习题5答案

一、选择题

1.C2.C3.C4.C5.A6.A7.D8.A9.D10.A

二、程序分析题

1.42.5.03.104.325.100,30,10,1016.a*b*c*d*7.43218.539.210.2

三、填空题

1.sum+array[i]average(score)

2.n*fun(n-1)

3.a[i][j]

4.s1[i+j]=s2[j]'\0'

5.a[i+1]=x

四、编程题。

1.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。

#include"math.h"

mian()

{intn;

scanf("%d",&n);

if(prime(n))

printf("\n%disprime.",n);

else

printf("\n%disnotprime.",n);

}

intprime(intm)

{intf=1,i,k;

k=sqrt(m)

for(i=2;i<=k;i++)

if(m%i==0)break;

if(i>=k+1)f=1;

elsef=0;

returnf;

}

2.编写函数计算

,用主函数调用它。

 

floatfun(intn)

{inti,f=1;

floats=0,t;

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

{t=1.0/(2*i+1)

s=s+f*t;

f=-1*f;

}

returns;

}

main()

{intn;

scanf("%d",&n);

printf("%f",fun(n));

}

3.将一个字符串中另一个字符串中出现的字符删除。

main()

{voidfun(chara[],charb[]);

chars1[20]="Iamaboy.",s2[20]="Youareaboy.";

fun(s1,s2);

printf("\n%s",s1);

}

voidfun(chara[],charb[])

{inti=0,j=0;

while(a[i]!

='\0')

{while(b[j]!

='\0')

{if(a[i]==b[j])

{for(j=i;a[j]=a[j+1];j++);

i--;

break;

}

j++;

}

i++;j=0;

}

}

4.用牛顿迭代法求根。

方程为ax3+bx2+cx+d=0,系数a、b、c、d由主函数输入。

求x在1附近的一个实根。

求出根后,由主函数输出。

#include"math.h"

floatfun(floata,floatb,floatc,floatd)

{floatx=1,x0,f,f1;

do

{x0=x;

f=((a*x0+b)*x0+c)*x0+d;

f1=(3*a*x0+2*b)*x0+c;

x=x0-f/f1;

}while(fabs(x-x0)>=1e-5);

return(x);

}

main()

{floata,b,c,d;

scanf("%f,%f,%f,%f",&a,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1