c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx

上传人:b****3 文档编号:5514851 上传时间:2022-12-18 格式:DOCX 页数:82 大小:61.08KB
下载 相关 举报
c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx_第1页
第1页 / 共82页
c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx_第2页
第2页 / 共82页
c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx_第3页
第3页 / 共82页
c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx_第4页
第4页 / 共82页
c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx_第5页
第5页 / 共82页
点击查看更多>>
下载资源
资源描述

c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx

《c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx》由会员分享,可在线阅读,更多相关《c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx(82页珍藏版)》请在冰豆网上搜索。

c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案.docx

c语言程序设计教程韩立毛徐秀芳书后练习题参考标准答案

c语言程序设计教程韩立毛徐秀芳书后练习题参考答案

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

练习题1参考答案

一、选择题

序号

1

2

3

4

5

6

7

8

参考答案

A

C

A

D

C

C

C

A

二、填空题

1.程序设计语言主要分为以下三类:

机器语言、汇编语言和高级语言。

2.在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。

3.C程序开发过程的一般步骤为:

源程序的编辑、编译、连接和运行。

4.C程序源文件的扩展名为.c,编译成功后产生的文件扩展名为.obj,连接成功后产生文件扩展名为.exe。

三、应用题

练习题2参考答案

一、选择题

序号

1

2

3

4

5

6

7

8

9

10

参考答案

B

A

C

C

B

A

B

B

D

C

序号

11

12

13

14

15

参考答案

A

B

C

A

C

二、填空题

1.通常一个字节包含8个二进制位。

在一个字节中能存放的最大(十进制)整数是255(无符号),127(带符号),最小(十进制)整数是-128,它的二进制数的形式是10000000。

2.在C语言中,十进制数30的八进制数表示形式是036,十六进制数表示形式是0x1e,在内存中它的二进制数表示形式是0000000000011110。

3.条件“2020&&x<30||x<-100。

4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为6,b值为4,c值为2。

5.已知inty;floatx=-3;,执行语句y=x%2;后,变量y的值为语句出错。

6.字符串"ab\034\\\x79"的长度为5。

7.在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为4;一个double型数据在内存中所占的字节数为8。

8.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为1。

9.表达式pow(2.8,sqrt(double(x)))值的数据类型为double。

10.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为26。

11.若a是int型变量,则执行表达式a=25/3%3后a的值为2。

12.若i为int整型变量且赋值为6,则运算i++后表达式的值是6,变量i的值是7。

13.若x为int型变量,执行语句:

x=10;x+=x-=x-x;则x的值为20。

14.若x和y为double型变量,则表达式x=1,y=x+3/2的值是2.000000。

15.(-b+sqrt(b*b-4*a*c))/(2*a)的数学式子是[-b+√(b^2-4ac)]/2a

16.sqrt(p*(p-a)*(p-b)*(p-c))的数学式子是√[p*(p-a)*(p-b)*(p-c)]。

17.判断某一年份是否为闰年的表达式是(year%4==0||year%100==0)&&year%400!

=0)。

18.用随机函数rand()产生一个在[-20,20]两位整数的表达式是x=rand()%41-20。

三、阅读分析下列程序。

1.写出下列程序的输出结果。

18

2.已知字母B的ASCII码为66,写出下列程序的输出结果。

67,E

3.写出下列程序的输出结果。

a=4,b=3

练习题3参考答案

一、选择题

序号

1

2

3

4

5

6

7

8

9

10

参考答案

D

B

D

D

C

D

D

B

B

A

二、填空题

1.C语句句尾用分号结束。

2.若有变量定义:

inta=1,b=2,c=3,d=4,x=5,y=6;则表达式(x=a>b)&&(y=c>d)的值为0。

3.使用强制转换方法将正整数转换成字符。

本题程序如下:

本程序的执行结果为输入一个正整数(小于255):

97

a的ASCII码为97。

4.下面程序的输出是-100,50

i=-100,j=50

i=-100

j=50。

5.执行以下程序时,若从第一列开始输入数据,为使变量a=2,b=8,x=6.5,y=56.62,

el='C',c2='b',正确的数据输入形式是a=2b=8x=6.5y=56.62c1=Cc2=b。

三、程序设计题

1.编写程序交换两个变量a,b的值,并输出。

如输入时a=3,b=5,输出a=5,b=3。

#include

voidmain()

{

inta,b,c;

printf(“输入两个数:

a,b”);

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

c=a;

a=b;

b=c;

printf(“a=%d,b=%d”,a,b);

}

2.编写程序输入小写字符boy,输出大写字符BOY。

#include

voidmain()

{

charc;

printf(“Input:

”);

scanf(“%c”,&c);

c=c-32;

printf(“%c”,c);

}

3.已知华氏温度与摄氏温度的转换公式为:

C=(F-32)*5/9。

编写程序当输入华氏温度F时,输出对应的摄氏温度。

#include

voidmain()

{floatF;

scanf(“%f”,&F);

printf(“%f”,(F-32)*5/9);}

4.设圆的半径r=1.5,圆柱高h=3,编写程序求圆周长、圆面积、圆球表面积、圆球体积及圆柱体积。

用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。

#include

intmain()

{floath,r,l,s,sq,vq,vz;

floatpi=3.141592;

printf(“请输入圆半径r,圆柱高h:

”);

scanf(“%f,%f”,&r,&h);

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=3.0/4.0*pi*r*r*r;

vz=pi*r*r*h;

printf(“圆周长为:

l=%6.2f\n”,l);

printf(“圆面积为:

s=%6.2f\n”,s);

printf(“圆球表面积为:

sq=%6.2f\n”,sq);

printf(“圆球体积为:

vq=%6.2f\n”,vq);

printf(“圆柱体积为:

vz=%6.2f\n”,vz);

ruturn0;}

5.编写程序输入梯形的上底a,下底b和高h,输出该梯形的面积。

#include

voidmain()

{floata,b,h,s;

printf(“请输入梯形上底,下底和高:

\n”);

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

s=(a+b)*h/2;

printf(“梯形面积为:

%f\n”,s);}

6.编写程序将"China"译成密码,密码规律是:

用原来的字母后面第4个字母代替原来的字母。

例如,字母"A"后面第4个字母是"E",用"E"代替"A"。

因此,"China"应译为"Glmre"。

请编写程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为'C','h','i','n','a',经过运算,使c1,c2,c3,c4,c5分别变为'G','l','m','r','e'。

分别用putchar函数和printf函数输出这5个字符。

#include

intmain()

{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);

return0;}

#include

intmain()

{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;

putchar(c1);

putchar(c2);

putchar(c3);

putchar(c4);

putchar(c5);

return0;}

 

练习题4参考答案

一、选择题

序号

1

2

3

4

5

6

7

8

9

10

参考答案

C

B

A

A

C

C

B

A

A

B

二、填空题

1.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是abs(x)>5&&floor(x)==x。

2.以下程序运行后的输出结果是20,0。

3.若从键盘输入58,则以下程序输出的结果是585858。

4.以下程序输出的结果是0。

5.以下程序的输出结果是2。

6.若inti=10;则行下列程序后,变量i的正确结果是13。

三、程序设计题

1.编写程序输入有3个整数a、b、c,并按照从小到大的顺序输出。

#include

intmain()

{inta,b,c,t;

printf(“pleaseinputabc\n”);

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

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=c;c=t;}

printf(“%d,%d,%d\n”,a,b,c);

return0;}

2.有一个函数:

编写一个程序,输入x的值,输出y的值。

#include

intmain()

{intx,y;

printf(“输入x:

”);

scanf(“%d”,&x);

if(x<1)

{y=x;

printf(“x=%d,y=x=%d\n”,x,y);}

elseif(x<10)

{y=2*x-1;

printf(“x=%d,y=2*x-1=%d\n”,x,y);}

else

{y=3*x-11;

printf(“x=%d,y=3*x-11=%d\n”,x,y);}

return0;}

3.输入学生的百分制成绩,要求输出学生的成绩、等级以及相应的评语。

设用‘A’、‘B’、‘C’、‘D’、‘E’五个等级,且90分以上为等级‘A’,评语为“成绩优秀”,80-89分为等级‘B’,评语为“成绩良好”,70-79分为等级‘C’,评语为“成绩中等”,60-69分为等级‘D’,评语为“成绩及格”,60分以下为等级‘E’,评语为“成绩不及格”。

分别用if条件语句和switch开关语句编写程序。

方法一:

if条件语句

#include

voidmain()

{

intscore;

printf("输入成绩:

");

scanf("%d",&score);

if(score>100||score<0)

printf("输入错误!

\n");

elseif(score>=90)

printf("成绩为%d,等级为A,成绩优秀\n",score);

elseif(score>=80)

printf("成绩为%d,等级为B,成绩良好\n",score);

elseif(score>=70)

printf("成绩为%d,等级为C,成绩中等\n",score);

elseif(score>=60)

printf("成绩为%d,等级为D,成绩及格\n",score);

else

printf("成绩为%d,等级为E,成绩不及格\n",score);

}

方法二:

switch开关语句

#include

voidmain(){

intscore;

printf("输入成绩:

");

scanf("%d",&score);

if(score>100||score<0)

printf("输入错误!

\n");

else

switch(score/10)

{

case10:

case9:

printf("成绩为%d,等级为A,成绩优秀\n",score);break;

case8:

printf("成绩为%d,等级为B,成绩良好\n",score);break;

case7:

printf("成绩为%d,等级为C,成绩中等\n",score);break;

case6:

printf("成绩为%d,等级为D,成绩及格\n",score);break;

default:

printf("成绩为%d,等级为E,成绩不及格\n",score);

}

}

4.编写程序输入三个整数,判断它们是否能够构成三角形。

若能构成三角形,则输出三角形的类型(等边三角形、等腰三角形、一般三角形),并计算三角形的面积;若不能构成三角形,则输出“不能构成三角形”的信息。

#include

#include

voidmain()

{

floata,b,c,s,t;

printf("inputa,b,c\n");

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

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

{

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

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

if(a==b&&b==c)

{printf("这是等边三角形,面积为%f\n",s);}

elseif((a==b)&&(b!

=c)||(b==c)&&(a!

=c)||(a==c)&&(a!

=b))

{printf("这是等腰三角形,面积为%f\n",s);}

elseprintf("这是一般三角形,面积为%f\n",s);

}

else

printf("不能构成三角形");

}

5.编写程序在屏幕上显示一张如下所示的时间表:

*****Time*****

1morning

2afternoon

3night

Pleaseenteryourchoice(1-3):

操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示"Goodmorning",选择2时显示"Goodafternoon",选择3时显示"Goodnight",对于其他选择显示"Selectionerror!

"。

#include

voidmain()

{

intn;

printf("*****Time******\n1morning\n");

printf("2afternonn\n3night\n");

printf("Pleaseenteryourchoice(1-3):

\n");

scanf("%d",&n);

switch(n){

case1:

printf("Goodmorning\n");break;

case2:

printf("Goodafternoon\n");break;

case3:

printf("Goodnight\n");break;

default:

printf("Selectionerror!

\n");

}

}

6.设银行整存整取不同期限的月利率分别为:

一年定期为0.63%;二年定期为0.66%;三年定期为0.69%;五年定期为0.75%;八年定期为0.84%。

要求输入存款的本金和期限,求到期能从银行得到的本金和利息的合计。

分别用if语句和switch语句编与程序。

#include

voidmain()

{

constdoublerate[]={0.0063,0.0066,0.0069,0.0075,0.0084};

intyears=0;

floatinit=0;

doublesum=0;

printf("\nInputinitialamountofmoney:

");

scanf("%f",&init);

printf("\nTypeinsaveperiodinyears:

");

scanf("%d",&years);

if(years==1||years==2||years==3||years==5||years==8)

{

if(years==1)

sum=init*(1+rate[0]*12*years);

else

if(years==2)

sum=init*(1+rate[1]*12*years);

else

if(years==3)

sum=init*(1+rate[2]*12*years);

else

if(years==5)

sum=init*(1+rate[3]*12*years);

else

sum=init*(1+rate[4]*12*years);

printf("\nTotalamountafter%dyears:

%.2f\n",years,sum);

}

else

{

printf("\nWrongnumber,Pleasetypeinyearsagain:

");

scanf("%d",&years);

}

}

7.编写程序计算个人所得税。

个人所得税的计算方法:

(实发工资-3500)*税率-扣除数,设个人所得税起征点为3500元。

共分为7级,具体如下:

级数

应纳税额

税率(%)

扣除数

1

不超过1500元的

3

0

2

超过1500元至4500元的部分

10

105

3

超过4500元至9000元的部分

20

555

4

超过9000元至35000元的部分

25

1005

5

超过35000元至55000元的部分

30

2755

6

超过55000元至80000元的部分

35

5505

7

超过80000元的部分

45

13505

#include

voidmain()

{

floata;//实发工资

floatb;//应纳税部分工资

floats;//税率

floatkouchu;//扣除数

floatptax;//个人所得税

printf("输入工资:

");

scanf("%f",&a);

b=a-3500;

if(b>0&&b<=1500)

{s=0.03;kouchu=0;}

elseif(b<=4500)

{s=0.1;kouchu=105;}

elseif(b<=9000)

{s=0.2;kouchu=555;}

elseif(b<=35000)

{s=0.25;kouchu=1005;}

elseif(b<=55000)

{s=0.3;kouchu=2755;}

elseif(b<=80000)

{s=0.35;kouchu=5505;}

else

{s=0.45;kouchu=13505;}

ptax=b*s-kouchu;

printf("个人所得税为%f\n",ptax);

}

8.编写程序计算货款。

设按购买货物款的多少分别给予不同的优惠折扣,购货不足250元,没有折扣;购货250元(含250元,下同),不足500元,减价5%;购货500元,不足1000元,减价7.5%;购货1000元,不足2000元,减价10%;购货2000元及以上,减价15%。

#include

voidmain()

{floatm,d,t;

printf("请输入购物金额:

");

scanf("%f",&m);

if(m<250)

d=0;

elseif(m<500)

d=0.05;

elseif(m<1000)

d=0.075;

elseif(m<2000)

d=0.1;

else

d=0.15;

t=m*(1-d);

printf("实际应付金额:

%f",t);

}

9.给一个不多于5位的正整数,编写程序实现:

(1)求出它是几位数;

(2)分别输出每一位数字;(3)按逆序输出各位数字。

#include

intmain()

{inti,j,a,b,c,d,k=0,n=0,s=100000,t=10,p;

scanf("%d",&a);

p=a;//保存原始输入值,后面用到

if(p/s!

=0)//超过5位数,直接错误提示,程序结束。

printf("输入错误!

\n");

else

{printf("逆序输出各位数字:

");

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

{b=a;

if(b!

=0)

{k++;

b=a%t;//对10求余可得个十百千万位

printf("%d",b);

a=a/t;

}

}

printf("\n%d是个%d位数\n",p,k);

printf("正序输出各位数字:

");

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

{

c=p;

d=c/s%10;//除以s后对10求余可得万千百十个位

s=s/10;//s要依次/10,求解后面的数值

if(d!

=0)

printf("%d",d);

}

printf("\n");

}

return0;

}

10.编写程序对数据进行加密。

设加密方法为:

对任意给定的4位整数,每一位数字均加2,若某位数字加2后大于9,则取其除以10的余数,如数据6987加密后的数据为8109。

#include

voidmain()

{

inta,b,c,d,m;

scanf("%d",&m);

a=m%10+2;if(a>=10)a=a%10;

b=m/10%10+2;if(b>=10)b=b%10;

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

当前位置:首页 > 经管营销

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

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