C语言程序设计习题参考答案.docx

上传人:b****3 文档编号:4865680 上传时间:2022-12-11 格式:DOCX 页数:42 大小:32.61KB
下载 相关 举报
C语言程序设计习题参考答案.docx_第1页
第1页 / 共42页
C语言程序设计习题参考答案.docx_第2页
第2页 / 共42页
C语言程序设计习题参考答案.docx_第3页
第3页 / 共42页
C语言程序设计习题参考答案.docx_第4页
第4页 / 共42页
C语言程序设计习题参考答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

C语言程序设计习题参考答案.docx

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

C语言程序设计习题参考答案.docx

C语言程序设计习题参考答案

第一章C语言概述参考答案

一、1.C2.B 3.C 4.D 5.D 6.B 7.A 8.A 9.B 10.A

二、1、函数2、位3、分号4、main5、{}6、换行7、注释8、函数首部、函数体

9、main10、编辑、编译、连接、运行

三、1.错 2.错 3.对 4.对 5.对 6.对 7.错 8.对

四、

1、#include

/*包含头文件,为了使用printf和scanf语句,注意句末无分号*/

voidmain()

{

printf(“***********\n”);/*\n的作用相当于回车*/

printf(“Iamastudent.\n”);

printf(“***********\n”);

}

2、#include

voidmain()

{inta,b;

printf(“Pleaseinputa,b:

\n”);

scanf(“%d,%d”,&a,&b);/*注意输入两个数之间用逗号分隔*/

if(a>b)printf(“%d”,a);

elseprintf(“%d”,b);

}

3、#include

voidmain()

{

inta,b,c,max;

printf(“Pleaseinputa,b,c:

\n”);

scanf(“%d,%d,%d”,&a,&b,&c);

max=a;

if(a

if(max

printf(“Thelargestnumberis%d”,max);

}

第二章数据与运算参考答案

一、1.B2.D 3.D 4.A 5.C 6.B 7.C 8.B 9.A 10.A 11.D 12.A 13.B 14.A 15.C

二、1、82、283、54、05、double6、8,10

7、128、D9、5210、25,21,3711、48

12、20200.00000014、9,11,9,1015、11.50

13、aa口bb口口口cc口口口口口口abc

A口N

三、1.错2.对3.对 4.错 5.错 6.对 7.错 8.错 9.错 10.对

四、

1、1)第1步:

(int)(x+y)=(int)(7.2)=7

第2步:

a%3*7%2/4=7%3*7%2/4=1*7%2/4=1/4=0

第3步:

x+0=x=2.5(计算机显示为2.500000)

1、2)

第1步:

(float)(a+b)/2=(float)(2+3)/2=(float)(5)/2=5.0/2=2.5

第2步:

(int)x%(int)y=(int)(3.5)%(int)(2.5)=3%2=1

第3步:

2.5+1=3.5(计算机显示为3.500000)

2、1)(a=a+a=12+12=24)

2、2)(a=a-2=12-2=10)

2、3)(a=a*(2+3)=12*5=60)

2、4)(a=a/(a+a)=12/24=0,注意a是整型)

2、5)已知n的值等于5a=0

2、6)(从右向左解开:

a=a*a=144;a=a-a=0;a=a+a=0)

五、编程题

1、参考答案:

#include

voidmain()

{charc1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;

c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;

printf(“passwordis%c%c%c%c%c\n”,c1,c2,c3,c4,c5);

}

运行结果:

passwordisGlmre

也可以用循环和数组:

#include

voidmain()

{

charc[]={“China”};

printf(“passwordis“);

for(inti=0;i<=4,i++)

printf(“%c”,c[i]+=4);

printf(“\n”);

}

2、参考答案:

#include

voidmain()

{

charc1=97,c2=98;

printf(“%d,%d\n”,c1,c2);

printf(“%c,%c\n”,c1,c2);

}

3、参考答案:

#include

#include

voidmain()

{doublea,b,c,total,average,square,squareroot;

printf("请输入三个双精度实数:

");

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

total=a+b+c;

average=total/3.0;

square=a*a+b*b+c*c;

squareroot=sqrt(square);

printf("三个数的和=%-15.3f,三个数的平均值=%-15.3f\n",total,average);

printf("三个数的平方和x=%.3f,x的平方根=%.3f\n",square,squareroot);

}

运行结果:

请输入三个双精度实数:

1.234.567.89

三个数的和=13.680,三个数的平均值=4.560

三个数的平方和x=84.559,x的平方根=9.196

4、参考答案:

#include

#include

voidmain()

{floata,b,c,k,area;

printf("请输入三角形三条边的边长:

");

scanf("%f%f%f",&a,&b,&c);/*由键盘输入三角形三边边长*/

if((a+b<=c)||(a+c<=b)||(b+c<=a))

{printf("您输入的三条边无法构成三角形。

\n");

exit

(1);/*结束程序*/

}

k=(a+b+c)/2;

area=sqrt(k*(k-a)*(k-b)*(k-c));/*函数sqrt(x)是求x的平方根*/

printf("该三角形的面积是%6.2f\n",area);

}

运行结果:

请输入三角形三条边的边长:

3.45.67.4

该三角形的面积是9.05

5、参考答案:

#include

voidmain()

{longa1,a2,a3,a4;

printf("请输入两个整数:

");

scanf("%ld%ld",&a1,&a2);

a3=a1/a2;

a4=a1%a2;

printf("两数进行整数除的商是%ld,余数是%ld\n",a3,a4);

}

运行结果:

请输入两个整数:

654321789

两数进行整数除的商是829,余数是240

6、参考答案:

要求得到某数(例如f=1.875)的第二位小数位,先把f乘以100(f*100),值为187.5,然后取f*100的整数部分(int)(f*100),值为187,最后由(int)(f*100)%10得到其个位数程序如下:

#include

voidmain()

{inta,b,c;

floatf;

printf("请输入两个整数:

");

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

f=1.0*a/b;

c=(int)(f*100)%10;

printf("两数进行实数除,商是%f,商的第二位小数位是%d\n",f,c);

}

运行结果:

请输入两个整数:

158

两数进行实数除,商是1.875000,商的第二位小数位是7

7、参考答案:

#include

voidmain()

{unsignedu,high4,low4;

printf("请输入一个无符号整数:

");

scanf("%u",&u);

low4=(u&0xf);/*u的低四位保留原值,其余位置0*/

high4=(u&0xf000)>>12;/*u的高四位保留原值,其余位置0,并右移12位*/

printf("%u的十六进制是%x\n",u,u);

printf("十六进制表示%u的低四位是%x,高四位是%x\n",u,low4,high4);

}

运行结果:

请输入一个无符号整数:

54332

54332的十六进制是d43c

十六进制表示54332的低四位是c,高四位是d

8、参考答案:

#include

voidmain()

{charc1,c2,t;

printf("请输入两个半角的小写英文字母:

");

c1=getchar();

c2=getchar();

c1-=32;

c2-='a'-'A';/*与32等价*/

t=c1;

c1=c2;

c2=t;

printf("%c%c\n",c1,c2);

}

运行结果:

请输入两个半角的小写英文字母:

db

BD

9、参考答案:

#include

voidmain()

{intk;

inthour,minute,second;

printf("请输入秒数:

");

scanf("%d",&k);

hour=k/3600;

k%=3600;

minute=k/60;

second=k%60;

printf("%d小时%d分钟%d秒。

\n",hour,minute,second);

}

运行结果:

请输入秒数:

7278

2小时1分钟18秒。

10、参考答案:

#include

voidmain()

{floata,b,c,d,real,imag;

printf("请输入第一个数的实部和虚部:

");

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

printf("请输入第二个数的实部和虚部:

");

scanf("%f%f",&c,&d);

real=a*c-b*d;

imag=a*d+b*c;

printf("两个复数积的实部和虚部分别是%f,%f\n",real,imag);

}

运行结果:

请输入第一个数的实部和虚部:

1.12.2

请输入第二个数的实部和虚部:

3.34.4

两个复数积的实部和虚部分别是-6.050000,12.100000

第3章C程序的基本控制结构参考答案

一、单选题:

1、B2、D3、A4、B5、B6、A7、B8、D9、C10、C11、C12、B

13、C14、D15、D16、C17、B18、B

二、填空题:

1、6.62、Z3、5,6,A,B4、1F5、22

6、x=-x7、98、month9、!

!

!

10、2711、3,3,312、151515

13、014、D15、ch=ch+3216、sum=sum+grade17、intk1=0,k2=0,k3=0

18、c>='a'&&c<='z'19、x=(i-1)*4+j

三、改错题

1、错误语句:

if(year%400!

=0)

正确语句:

if(year%400==0)

2、错误语句:

scanf(“%d”,x);

正确语句:

scanf(“%d”,&x);

3、错误语句:

max=(temp

temp:

c;

正确语句:

max=(temp>c)?

temp:

c;

4、错误语句:

if(x%5==0||x%7==0)

正确语句:

if(x%5==0&&x%7==0)

5、错误语句:

inti,num;

正确语句:

inti,num=0;

6、错误语句:

while(fabs(t)>10-6)

正确语句:

while(fabs(t)>1e-6)

7、错误语句:

intf1,f2;

正确语句:

longintf1,f2;

四、编程题:

1、从键盘输入一个圆的半径,输出圆的面积。

输出时要有文字说明,取小数点后2位。

#include

voidmain()

{floatr,s;

scanf(“%f”,&r);

s=3.14*r*r;

printf(“s=%.2f”,s);}

2、输入一个整数,判断是奇数还是偶数。

#include

voidmain()

{inti;

scanf(“%d”,&i);

if(i%2==0)

printf(“%d是一个偶数”,i);

else

printf(“%d是一个奇数”,i);

}

3、从键盘输入一个三角形的边长,输出三角形面积,取2位小数。

当三角形不成立时输出“它不是一个三角形”。

#include

#include

voidmain()

{floata,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c);

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

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

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

printf(“area=%.2f\n”,area);}

else

printf(“它不是一个三角形”);

}

4、从键盘输入一个字符,判断其是否是大写字母,如果是大写字母,则转换为小写字母,否则不转换。

#include

voidmain()

{charc;

c=getchar();

if(c>=’A’&&c<=’Z’)

c=c+32;

printf(“%c”,c);

}

5、从键盘输入一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。

其中‘A’对应的是90分(含90分)以上的成绩,‘B’对应的是80~89分的成绩,‘C’对应的是70~79的成绩分,‘D’对应的是60~69分的成绩,‘E’对应的是小于60分的成绩。

如果输入的数值小于0或大于100要有“输入成绩错误”的信息显示。

#include

voidmain()

{intscore,c;

scanf(“%d”,&score);

c=score/10;

switch(c)

{

case0:

case1:

case2:

case3:

case4:

case5:

printf(“E”);break;

case6:

printf(“D”);break;

case7:

printf(“C”);break;

case8:

printf(“B”);break;

case9:

case10:

printf(“A”);break;

default:

printf(“error”);

}

}

6、编写程序,求1+2+3+…+200。

#include

voidmain()

{

inti,s;

i=1;

s=1;

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

s=s+i;

printf("1+2+3+…+200=%d\n",s);

}

7、有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和。

#include

voidmain()

{inti,temp;

 floatf2=2,f1=1,sum=0;

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

  {sum=sum+f2/f1;

   temp=f2;

f2=f2+f1;

f1=temp;

   }

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

}

8、求1!

+2!

+3!

+4!

+…+20!

#include

voidmain()

{inti;

floatsum=0,f=1;

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

  {f=f*i;

   sum=sum+f;

  }

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

}

9、用牛顿迭代法求方程4x3-8x2+6x-12=0在1.5附近的根。

#include

#include

voidmain()

{floatx=1.5,x0,y,f1;

 do

  {x0=x;

   y=((4*x0-8)*x0+6)*x0-12;

   f1=(12*x0-16)*x0+6;

   x=x0-y/f1;

  }

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

 printf("x=%10.2f\n",x);}

10、打印出以下图案。

*

***

*****

*******

*****

***

*

#include

voidmain()

{inti,j,k;

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

  {for(j=1;j<=4-i;j++)

     printf("");

   for(k=1;k<=2*i-1;k++)

     printf("*");

   printf("\n");

   }

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

  {for(j=1;j<=i;j++)

     printf("");

   for(k=1;k<=5-2*(i-1);k++)

     printf("*");

   printf("\n");

   }

}

第四章数组参考答案

一、选择题:

1、B2、C3、D4、C5、C6、B7、D8、B9、B10、A

二、填空题:

1、首地址2、按行存放3、一个字符4、′\0′5、字符数组名或字符串

6、907、68、j-1str[j-1]9、6210、s1[i]=s2[i];三、改错题

1、错误语句:

inta[3][]={2,4,6,8,10,12,14,16,18};

正确语句:

inta[][3]={2,4,6,8,10,12,14,16,18};

2、错误语句:

if(str[2]>string)string=str[2];

正确语句:

if(strcmp(str[2],string)>0)strcpy(string,str[2]);

3、错误语句:

charc[5]={'C','h','i','n','a'};

正确语句:

charc[6]={'C','h','i','n','a'};或charc[]={“China”};

4、错误语句:

inta[3]={3*0};

正确语句:

inta[4];

5、错误语句:

scanf(“%d%d%d”,&a);

正确语句:

for(i=0;i<3;i++)scanf(“%d”,&a[i]);

或scanf(“%d%d%d”,&a[0],&a[1],&a[2]);

四、编程题

1、用数组来处理,求解Fibonacci数列前40项:

1,1,2,3,5,8,13,21…。

#include

voidmain()

{

inti;

intt[40]={1,1};

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

t[i]=t[i-2]+t[i-1];

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

{

if(i%5==0)printf("\n");

printf("%15d",t[i]);

}

}

2、用选择法对20个整数排序(由大到小)。

#include

voidmain()

{inti,j,min,t,x[20];

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

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

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

  {min=i;

   for(j=i+1;j<20;j++)

     if(x[min]>x[j])min=j;

   t=x[i];

   x[i]=x[min];

   x[min]=t;

   }

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

  printf("%6d",x[i]);

}

 3、有一个3×5的矩阵,要求编程序求出其中值最小的那个元素的值,以及其所在的行号和列号。

#include

voidmain()

{

inti,j,s=0,t=0,min;

inta[3][5];

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

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

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

min=a[0][0];

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

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

if(a[i][j]

{min=a[i][j];

s=i;

t=j;

}

printf("min=%d,s=%d,t=%d\n",min,s,t);

}

4、编一程序,将两个字符串连接起来,不要用strcat函数。

#include

voidmain()

{charstr1[80],str2[20];

 inti=0,j=0;

 scanf("%s",str1);

 scanf("%s",str2);

printf("str1:

%s\n",str1);

printf("str2:

%s\n",str2);

 while(str1[i]!

='\0')i++;

 while(str2[j]!

='\0')

{str1[i]=str2[j];

i++;

j++;}

 str1[i]='\0';

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

}

5、求一个5×5矩阵对角线元素之和(左上至右下之对角线)。

#include

voidmain()

{floata[5][5],sum=0;

 inti,j;

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

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

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

当前位置:首页 > 法律文书 > 调解书

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

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