C语言教材习题答案.docx

上传人:b****8 文档编号:27575404 上传时间:2023-07-03 格式:DOCX 页数:65 大小:47.37KB
下载 相关 举报
C语言教材习题答案.docx_第1页
第1页 / 共65页
C语言教材习题答案.docx_第2页
第2页 / 共65页
C语言教材习题答案.docx_第3页
第3页 / 共65页
C语言教材习题答案.docx_第4页
第4页 / 共65页
C语言教材习题答案.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

C语言教材习题答案.docx

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

C语言教材习题答案.docx

C语言教材习题答案

习题1

1.1C语言的主要优点有哪些?

它与其他程序设计语言的区别是什么?

答:

(略)

1.2什么是程序?

程序设计的目的是什么?

程序设计的步骤有哪些?

答:

(略)

1.3简要叙述C程序的上机调试过程。

答:

(略)

1.4冯·诺依曼结构指的是什么?

计算机有哪些组成部分?

各部分的功能是什么?

答:

(略)

习题2

2.1简答题

(1)C语言为什么要规定对所有用到的变量要“先定义,后使用”?

这样做有什么好处?

答:

凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用得正确;每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元;指定每一变量属于一个类型;这就便于在编译时;据此检查该变量所进行的运算是否合法。

(2)下列符号中,你可以选用哪些做标识符?

哪些不可以?

为什么?

A3B3aB-bifnext_daye_2OK?

i*j$

答:

可用作标识符的是:

A3B、next_、day、e_2;其余的不可以,因为标识符是由字母或下划线开始的,由字母、下划线、数字组成的字符串,另外,关键字是不能够作为标识符的。

(3)字符常量与字符串常量有什么区别?

答:

在C语言当中,通过“\0”这个特殊字符作为判断字符串结尾的标志,所以,即使一个空字符串,也要占用一个字符;另外,值得注意的是,在字符串中“\0”这个字符是不显示的。

而字符常量在内存空间中,只占用一个字节的空间来存放字符说对应的ASCII码值。

2.2填空题

(1)以下程序的运行结果是。

#include

voidmain()

{

charc1='a',c2='b',c3='c',c4='\101',c5='\116';

printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);

printf("\t\b%c%c\n",c4,c5);

}

运行结果为:

aabbccabc

AN

(2)下面程序的运行结果是。

#include

voidmain()

{chara=2,b='a';

intc;

c=a+b;

a=c;

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

printf("%c,%c,%c\n",a,b,c);

}

运行结果为:

99,97,99

c,a,c

(3)求下面算术表达式的值。

①设x=2.5,a=7,y=4.7,表达式x+a%3*(int)(x+y)%2/4的值是2.500000。

②设a=2,b=3,x=3.5,y=2.5,表达式(float)(a+b)/2+(int)x%(int)y的值是

3.500000。

2.3编程题

(1)要将“China”译成密码,密码规律是,用原来的字母后第4个字母代替原来的字母。

例如,字母‘a’后面第4个字母为‘e’。

因此,“China”应译为“Glmre”。

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

答:

#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(“%c%c%c%c%c\n”,c1,c2,c3,c4,c5);

}

(2)从键盘输入一个小写英文字母,将其转换成大写字母输出结果。

如小写字母c,转换成大写字母时用小写字母的ASCII-32即可。

答:

#include

voidmain()

{charc;

scanf(“%c”,&c);

if(c>’a’&&c<’z’)c=c-32;

printf(“%c”,c);

}

习题3

3.1单项选择题

(1)若有说明语句charc=‘\72’;,则变量c(A)。

A.包含1个字符  B.包含2个字符 

C.包含3个字符 D.说明不合法,c值不确定

(2)下列数据中属于“字符串常量”的是(B)。

A.ABCB.“ABC”C.‘ABC’D.‘A’

(3)C语言中,运算对象必须是整型的运算符是(B)。

A./B.%C.+D.-

(4)若有以下定义:

chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为(D)。

A.floatB.intC.charD.double

(5)执行语句“x=(a=3,b=a--)”后,x,a,b的值依次是(C)。

A.3,3,2B.3,2,2C.3,2,3D.2,3,2

(6)若有代数式3ae/bc,则不正确的C语言表达式是(C)。

A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/b/c*3

(7)设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是(C)。

A.0B.4C.-4D.2

(8)已知a=5,b=8,c=10,d=0;表达式的值为真的是(D)。

A.a*2>8+2B.a&&dC.(a*2-c)||dD.a-b

(9)以下程序运行后的输出结果是(A)。

voidmain()

{

intm=12,n=34;

printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);

}

A.12353514B.12353513C.12343514D.12343513

(10)设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句(s=c1==c2)||(t=c3>c4)后,s,t的值为(D)。

A.1,2B.1,1C.0,1D.1,0

(11)设有定义:

inta=2,b=3,c=4;,则以下选项中值为0的表达式是(A)。

A.(!

a==1)&&(!

b==0);B.(a

c||1;

C.a&&b;D.a||(b+b)&&(c-a)

(12)为表示关系X≥Y≥Z,应使用C语言表达式(D)。

A.(X≥Y)&&(Y≥Z)B.X>=Y>=Z

C.(X>=Y)‖(Y>=Z)D.(X>=Y)&&(Y>=Z)

(13)表达式(int)3.6*3的值为(A)。

A.9B.10C.10.8D.18

(14)以下语句的输出结果是(D)。

inta=-1,b=4,k;

k=(++a<0)&&!

(b--<=0);

printf("%d,%d,%d\n",k,a,b);

A.1,0,4B.1,0,3C.0,0,3D.0,0,4

(15)已有定义intx=3,y=4,z=5;则表达式“!

(x+y)+z-1&&y+z/2”的值是(D)。

A.6B.0C.2D.1

3.2阅读程序写结果

(1)若x和a均是int型变量,计算表达式x=(a=4,6*2)后的x值为12。

(2)若a是int型变量,且a的初值为6,则计算a+=a-=a*a表达式后a的值为-60。

(3)若有以下定义,intm=5,y=2;则计算表达式y+=y-=m*=y后的y值是-16。

(4)若有定义intb=7;floata=2.5,c=4.7;,则下面表达式的值为5.500000。

a+(int)(b/3*(int)(a+c)/2)%4

(5)若x为int类型,请以最简单的形式写出与逻辑表达式!

x等价的C语言关系表达式x==0。

(6)以下程序运行后的输出结果是3。

voidmain()

{

intp=30;

printf("%d\n",(p/3>0?

p/10:

p%3));

}

(7)设y是int型变量,请写出判断y为奇数的关系表达式(y%2)==1。

习题4

4.1单项选择题

(1)若以下选项中的变量已正确定义,则正确的赋值语句是___C___。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3;

(2)以下程序输出结果是___D___。

voidmain()

{

inta=0,b=0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

(3)下列叙述中正确的是__D___。

A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

(4)若有定义:

floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是___C___。

A.switch(x)B.switch((int)x);

{case1.0:

printf("*\n");      {case1:

printf("*\n");

case2.0:

printf("**\n");}      case2:

printf("**\n");}

C.switch(a+b)D.switch(a+b)

{case1:

printf("*\n");       {case1:

printf("*\n");

case2+1:

printf("**\n");}      casec:

printf("**\n");}

(5)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是C。

A.(!

E==0)B.(E>0‖E<0)C.(E==0)D.(E!

=0)

(6)若执行下面的程序时,从键盘上输入5和2,则输出结果是C。

voidmain()

{inta,b,k;

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

k=a;

if(a

elsek=b%a;

printf("%d\n",k);

}

A.5B.3C.2D.0

(7)以下程序执行后的输出结果是B。

#include

voidmain()

{

inty=10;

while(y--);printf("y=%d\n",y);

}

A.y=0B.y=-1C.y=1D.while构成无限循环

(8)C语言中while和do…while循环的主要区别是A。

A.do…while的循环体至少无条件执行一次

B.while的循环控制条件比do…while的循环控制条件更严格

C.do…while允许从外部转到循环体内

D.do…while的循环体不能是复合语句

(9)以下程序段的输出结果是A。

voidmain()

{

intx=3;

do

{

printf("%3d",x-=2);

}while(!

(--x));

}

A.1B.30C.1-2D.死循环

(10)若i和j已定义为int类型,则以下程序段中内循环体的总的执行次数是A。

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

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

{……}

A.20B.25C.24D.30

(11)以下程序执行后,sum的值是D。

voidmain()

{

inti,sum;

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

sum+=i;

printf(“%d”,sum);

}

A.15B.14C.0D.不确定

(12)执行下面程序后,a的值为B。

#include

voidmain()

{

inta,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=20)break;

if(b%3==1){b+=3;continue;}

b-=5;

}

printf("%d",a);

}

A.7B.8C.9D.10

(13)下面程序输出的是B。

#include

voidmain()

{

inty=9;

for(;y>0;y--)

{

if(y%3==0)

{printf("%d",--y);continue;}

}

}

A.741B.852C.963D.875421

(14)以下程序的输出结果是A。

#include

voidmain()

{

inti;

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

{

if(i%2)printf("*");

elsecontinue;

printf("#");

}

printf("$\n");

}

A.*#*#*#$B.#*#*#*$C.*#*#$D.*#*#*$

(15)以下程序中,while次数是C。

voidmain()

{  

int  i=0;

while(i<10)

if(i<1)  continue;  

if(i==5)  break; 

i++;

}  

……

}

A.1B.10C.6D.死循环,不能确定次数

(16)以下程序的输出结果是B。

#include

voidmain()

{

intx=23;

do

printf("%d",x--);

while(!

x);

}

A.321B.23C.不输出任何内容D.陷入死循环

(17)以下程序的输出结果是D。

#include

voidmain()

{intk=4,n=4;

for(;n

{n++;

if(n%3!

=0)continue;

k--;

}

printf("%d,%d\n",k,n);

}

A.1,1B.2,2C.3,3D.4,4

(18)以下程序的输出结果是B。

#include

voidmain()

{

inti=0,a=0;

while(i<20)

{

for(;;)

{

if(i%10==0)break;

elsei--;

}

i+=11;a+=i;

}

printf("%d",a);

}

A.21B.32C.33D.11

4.2阅读程序写结果题

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

voidmain()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

(2)以下程序输出结果是6。

#include

voidmain()

{

intm=5;

if(m++>5)printf("%d\n",m);

elseprintf("%d\n",m--);

}

(3)以下程序运行时若从键盘上输入:

10  20  30<回车>。

输出结果是10300。

#include

voidmain()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

printf("%d%d%d\n",i,j,k);

}

(4)下列程序的运行结果是9。

voidmain()

{intx=-9,y=5,z=8;

if(x

if(y<0)z=0;

elsez+=1;

printf("%d\n",z);

}

(5)以下程序的输出结果是132。

#include

voidmain()

{

inti,m=0,n=0,k=0;

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

switch(i/10)

{

case0:

m++;n++;break;

case10:

n++;break;

default:

k++;n++;

}

printf("%d%d%d\n",m,n,k);

}

(6)以下程序的输出结果是10。

#include

voidmain()

{

inti,j;

for(j=10;j<11;j++)

{

for(i=9;i

if(!

(j%i))break;

if(i>=j-1)printf("%d",j);

}

}

(7)以下程序的输出结果是4。

#include

voidmain()

{

inta,b;

for(a=1,b=1;a<=100;a++)

{if(b>=10)

break;

if(b%3==1)

{b+=3;

continue;

}

}

printf("%d",a);

}

(8)运行以下程序后,从键盘上输入6514,再回车,输出结果为m=1。

#include

voidmain()

{

intm,n;

scanf("%d%d",&m,&n);

while(m!

=n)

{

while(m>n)

m-=n;

while(n>m)

n-=m;

}

printf("m=%d",m);

}

4.3编程题

(1)已知华氏温度与摄氏温度的转换公式为:

C=(F-32)*5/9,编写程序,当输入华氏温度F时,输出对应的摄氏温度。

答:

#include

voidmain()

{floatc,f;

scanf(“%f”,&f);

printf(“%f”,c=(f-32)*5/9);

}

(2)请为如下分段函数编写程序,当输入一个x值,计算输出y的数值:

答:

#include

voidmain()

{intx,y;

scanf(“%d”,&x);

if(x<=1)y=x;

elseif(x<10)y=2*x-1;

elsey=3*x-11;

printf(“y=%d”,y);

}

(3)输入三个数a、b、c,按照大小顺序排序输出。

答:

#include

voidmain()

{floata,b,c,t;

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

if(a

if(a

if(b

printf(“%f,%f,%f”,a,b,c);

}

(4)输入一个字符,请判断是字母、数字还是特殊字符?

答:

#include

voidmain()

{charc;

scanf(“%c”,&c);

if(c>=0&&c<=9)printf(“数字”);

elseif(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)printf(“字母”);

elseprintf(“数字”);

}

(5)编写程序,从键盘输入一个字符,若为大写则转换为小写输出,若为小写则转换为大写输出,其他输入则输出"Error"。

答:

#include

voidmain()

{charc;

scanf(“%c”,&c);

if(c>=’a’&&c<=’z’)printf(“%c”,c-32);

elseif(c>=’A’&&c<=’Z’)printf(“%c”,c+32);

elseprintf(“Error”);

}

(6)编程序按下列公式计算e的值(精度为1e-6)。

e=1+1/1!

+1/2!

+1/3!

+……1/n!

答:

#include

#include

longni(intx1)

{

longx2=1;

inti;

for(i=1;i<=x1;i++)x2=i*x2;

returnx2;

}

voidmain()

{

floatt=1,tt;

ints=1,m=1;

longn=1;

do

{tt=t;

n=ni(m);

t+=(float)s/n;

m++;

}while(fabs(t-tt)>=1e-6);

printf("e=%f\n",t);

}

(7)求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),相加数的个数由键盘控制。

答:

#include

voidmain()

{inta,n,i=1,sn=0,tn=0;

printf(“a,n=:

”);

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

while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;i++}

printf(“a+aa+aaa+…=%d\n”,sn);

}

(8)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?

第10次反弹多高?

答:

#include

voidmain()

{floatsn=100,hn=sn/2;

intn;

for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}

printf("第十次落地时共经过%fm.\n",sn);

printf("第十次反弹%fm.\n",hn);

}

(9)输入十进制整数,将其转变为十六进制数输出。

答:

#include

voidmain()

{inta;

scanf("%d",&a);

printf("十六进制为%x",a);

}

(10)编程实现正弦函数,输入一个角度数值,输出对应的正弦数值,已知

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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