当前位置:
文档之家› C语言 选择结构程序设计 习题册答案
C语言 选择结构程序设计 习题册答案
第2讲
基础练习(A)
一、填空题
1、在 if 语句中又包含一个或多个 if 语句称为 if 语句的嵌套
。
2、为了避免在嵌套的条件语句 if-else 中产生二义性,C 语言规定:else 子句总是与其之前
最近的未配对的 if 配对。如果 if 与 else 数目不一样,为实现设计者的企图,可以加 花
6、若 a=1,b=2,则表达式 a>b?a:b+1 的值是 3 。
7、若 w=1、x=2、y=3、z=4,则条件表达式 w<x?w:y<z?y:z 的值是 1
。
8、若有以下 if 语句:if (a<b) min=a;
else min=b;
可用条件运算符来处理的等价式子为
min=(a<b)?a:b ;
2、下列运算符中优先级最低的( A ),优先级最高的是( C )。
A)?: B)&&
C)+
D)!=
3、请阅读以下程序:
main() {
int a=5,b=0,c=0; if(a=b+c)printf(“***\n”); else printf(“$$$\n”); }
以下程序( D )。
A)有语法错不能通过编译
11、以下 if 语句语法正确的是( B ) 。
A) if(x>0)
printf(“%f”,x)
else printf(“%f”,-x);
B) B) if(x>0)
{ x=x+y; printf(“%f”,x); }
else printf(“%f”,-x); C) C) if(x>0)
{ x=x+y; printf(“%f”,x); }; else printf(“%f”,-x);
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 <math.h> 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”); }
if(Class==‘1’)
printf(“1st class postage is 19p”);
else
)。 。
printf(“2nd class postage is 14p”); }
2、若运行时输入:4.4<回车>,则以下程序的运行结果是 Selling Price(0.30)$5.72
。
#include <stdio.h> void main(void) { float CostPrice,SellingPrice; printf(“Enter Cost Price $:”); scanf(“%f”,&CostPrice); if(CostPrice>=5) { SellingPrice=CostPrice+CostPrice*0.25; printf(“Selling Price(0.25)$%6.2f”,SellingPrice); } else { SellingPrice=CostPrice+CostPrice*0.30; printf(“Selling Price(0.30)$%6.2f”,SellingPrice); } }
达式是( C )。
A) (x>=1)&&(x<=100)&&(x>=200)&&(x<=300) B) (x>=1)||(x<=100)||(x>=200)||(x<=300) C) (x>=1)&&(x<=100)||(x>=200)&&(x<=300)
D) (x>=1)||(x<=100)&&(x>=200)||(x<=300)
。
9、若 x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是 0
。
10、设有变量定义:int a=5,c=4;则(--a==++c)?--a:c++的值是 5 ,此时 c 的存储单元
二、选择题
1、逻辑运算符两侧运算对象的数据类型( D )。
A)只能是 0 或 1
B)只能是 0 或非 0 正数
C)只能是整型或字符型数据
D)可以是任何类型的数据
2、以下关于运算符优先顺序的描述中正确的是( C )。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
D) D) if(x>0)
{ x=x+y; printf(“%f”,x) }
else printf(“%f”,-x);
12、请阅读以下程序:
main()
{
int a=5,b=5,c=0; if(a==b+c) printf(“***\n”); else printf(“$$$\n”); }
以下程序( C )。
14、有 int x,y,z;且 x=3,y=-4,z=5,则以下表达式的值为 1 。
!(x>y)+(y!=z)||(x+y)&&(y-z)
15、有 int a=3,b=4,c=5,x,y;,则以下表达式的值为 0 。
!(x=a)&&(y=b)&&0
16、if (!k) a=3;语句中的!k 可以改写为 k= =0 ,使其功能不变。
A)有语法错不能通过编译
B)可以通过编译但不能通过连接
C)输出***
D)输出$$$
三、写出下列程序的运行结果
1、若运行时输入:2<回车>,则以下程序的运行结果是 2nd class postage is 14p
#include <stdio.h>
void main(void) {
char Class; printf(“Enter 1 for 1st class post or 2 for 2nd post”); scanf(“%c”,&Class);
A)0
B)语法错
C)1
D)“假”
8、设有:int a=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后 n 的值为( B )。
A)1
B)2
C)3
D)4
9、以下不正确的 if 语句形式是( C )。
A) if(x>y&&x!=y);
B) if(x==y) x+=y;
C) if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);
if ( b>c ) {t=b;b=c;c=t;}
if (b>d) {t=b;b=d;d=t;}
if (c>d) {t=c;c=d;d=t;}
printf(“%d,%d,%d,%d”,a,b,c,d);
}
三、编程:
1、试编程判断输入的正整数是否既是 5 又是 7 的整倍数。若是,则输出 yes;否则输出 no。
2、编制程序要求输入整数 x、y 和 z,若 x2+y2+z2 大于 1000,则输出 x2+y2+z2 千位以上的数 字,否则输出三数之和。
3、编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数
据错误的提示信息。
1、参考答案 main() { int x; if (x%5==0 && x%7==0)
6、设 x、y 和 z 是 int 型变量,且 x=3,y=4,z=5,则下面表达式中值为 0 的是( D
A)‘x’&&‘y’
B) x<=y C) x||y+z&&y-z
D) !((x<y)&&!z||1)
7、已知 x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是( C )。
第五章 选择结构程序设计
基础练习(A)
一、填空题
1、关系表达式的运算结果是 逻辑 值。C 语言没有逻辑型数据,以 1 代表“真”,
以 0 代表“假”。
2、逻辑运算符!是 单目 运算符,其结合性是由 右结合性 。
3、C 语言提供的三种逻辑运算符是 && 、 || 、 !
。其中优先级最高的
为 ! ,优先级最低的为 | | 。
B)可以通过编译但不能通过连接
C)输出***
D)输出$$$
4、以下程序的运行结果是( C )。