C语言习题 答案讲解 联系客服

发布时间 : 星期五 文章C语言习题 答案讲解更新完毕开始阅读da29723ab94ae45c3b3567ec102de2bd9605dec5

3、编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。 1、参考答案 main() { int x;

if (x%5==0 && x%7==0) printf(“yes”); else

printf(“no”); }

2、参考答案 main()

{ int x,y,z,a,b;

scanf(“%d %d %d”,&x,&y,&z); a=x*x+y*y*z*z; if (a>1000)

{b=a/1000;printf(“%d”,b);} else printf(“%d”,x+y+z); }

3、参考答案

#include main()

{ float a,b,c,s,area;

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

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

area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%7.2f\\n”,area);} else

printf(“bu neng zhucheng san jiao xing \\n”); }

第2讲

基础练习(A)

一、填空题

1、在if语句中又包含一个或多个if语句称为 if语句的嵌套 。

2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与其之前最近的未配对的if 配对。如果if 与else数目不一样,为实现设计者的企图,可以加 花括号 关系。 3、条件运算符是C语言中唯一的一个 三 目运算符,其结合性为 从右至左 。 4、假设条件表达式的格式为:表达式1?表达式2:表达式

若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较 高 的类型 5、在switch语句中,switch后面括弧内的“表达式”,可以为 任何 类型。 6、若a=1,b=2,则表达式a>b?a:b+1的值是 3 。 7、若w=1、x=2、y=3、z=4,则条件表达式w

else min=b;

可用条件运算符来处理的等价式子为 min=(a

10、设有变量定义:int a=5,c=4;则(--a==++c)?--a:c++的值是 5 ,此时c的存储单元的值为

6 。

13 / 44

二、判断题

1、在switch语句中,每一个的case常量表达式的值可以相同。( 错 ) 2、在switch语句中,各个case和default的出现次序影响执行结果。( 对) 3、在switch语句中,多个case可以共用一组执行语句。(对 ) 4、 条件表达式能取代一般if的语句。( 错 ) 5、 case后的常量表达式类型一定与表达式类型匹配。( 对 ) 三、写出以下程序的运行结果 1、 main() -1 { int a=2,b=3,c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; printf(“%d\\n”,c); }

2、 main() 2 0 0 { int a,b,c; int s,w,t; s=w=t=0; a=-1; b=3; c=3; if(c>0) s=a+b; if(a<=0) { if(b>0) if(c<=0) w=a-b; } else if(c>0) w=a-b; else t=c; printf(“%d %d %d”,s,w,t); }

3、 switch(grade) { case ‘A’: printf(“85-100\\n”); case ‘B’: printf(“70-84\\n”); case ‘C’: printf(“60-69\\n”); case ‘D’: printf(“<60\\n”); default: printf(“error!\\n”); } 若grade的值为 ’C’,则输出结果是 60-69

〈60 error!

能力提高(B)

一、写出下列程序的运行结果

1、 #include 5

5 1

void main(void) { int x,y=1,z; if(y!=0) x=5;

14 / 44

printf(“\\t%d\\n”,x); if(y==0) x=4; else x=5; printf(“\\t%d\\n”,x); x=1; if(y<0) if(y>0) x=4; else x=5; printf(“\\t%d\\n”,x); }

2、 #include 4 -2 4 0 4 -2 void main(void) { int x,y=-2,z; if((z=y)<0) x=4; else if(y==0) x=5; else x=6; printf(”\\t%d\\t%d\\n”,x,z);

if(z=(y==0)) x=5; x=4; printf(“\\t%d\\t%d\\n”,x,z); if(x=z=y) x=4; printf(“\\t%d\\t%d\\n”,x,z); }

3、 #include a=2,b=1 main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; } printf(“a=%d,b=%d”,a,b); }

二、根据程序的功能,将以下程序补充完整

以下程序计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。请在 内填入正确内容。 main() { int yy,mm,len; printf(“year,month=”); scanf(“%d %d”,&yy,&mm); switch(mm) { case 1:

15 / 44

case 3: case 5: case 7: case 8: case 10: case 12: len=31 ; break; case 4: case 6: case 9: case 11: len=30; break; case 2: if(yy%4==0&&yy0!=0||yy@0==0) len=29 ; else len=28 ; break; default: printf(“input error”); break; }

printf(“the length of %d %d is %d\\n”,yy,mm,len);

第六章 循环结构程序设计

基础练习(A)

一、选择题

1、C语言中while和do-while循环的主要区别是(A)。

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

B) while的循环控制条件比do-while的循环控制条件严格 C) C) do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句

2、以下描述中正确的是(C)。

A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作 D) do-while循环中,根据情况可以省略while 3、设有程序段 int k=10; while(k) k=k-1; 则下面描述中正确的是( A )。 A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 4、下列循环语句中有语法错误的是( D )。

A) while(x=y) 5; B) while(0) ;

C) do 2;while(x==b); D) do x++ while(x==10);

5、已知int i=1; 执行语句while (i++<4) ;后,变量i的值为( C )。

A) 3 B) 4 C) 5 D) 6 6、语句while(!E);中的表达式!E等价于( A ) 。 A)E==0 B)E!=1 C)E!=0 D) E==1 7、下面程序段的运行结果是( A )。 a=1; b=2; c=2; while(a

16 / 44