第五章 选择结构

第五章 选择结构
第五章 选择结构

第五章选择结构

一、选择题

1.关于C程序在作逻辑运算时判断操作数真、假的表述中,正确的是__________。

A)0为假.非0为真B) 只有l为真

C) -l为假,l为真D) 0为真,非0为假

2.关于C程序关系运算、逻辑运算后得到的逻辑值的表述中,正确的是__________。

A) 假为0,真为随机的一个非0值B) 假为0,真为1

C) 假为-l,真为l D)假为0,真为不确定的值

3.下列运算符中,优先级从高到低依次为__________。

A)&&! || B) || &&! C) &&|| ! D) ! && ||

4.设int a=1,b=2,c=3,d=4,m=2 ,n=2;执行(m=a>b)&&(n=c>d)后n的值为____________。

A) l B) 2 C) 3 D) 4

5.若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是______________。

A) ①和②B) ②和③C) ①和③D) ③和④

6.设int i=10;表达式30-i<=i<=9的值是________________。

A)0 B) 1 C)9 D)20

7.设int a=0,b=0,m=0,n=0;则执行(m=a= =b)||(n=b= =a)后m和n的值是___________。

A) 0,0 B) 0,1 C) 1,0 D) 1,1

8.表达式!x等效于_____________。

A) x= =l B) x= =0 C) x!=l D) x!=0

9.int a=1,b=2,c=4;经过表达式(c=a!=b)&&(a= =b)&&(c=b)运算后,a,b和c的值分别是___________。

A) 1,2,0 B) 1,2,1 C) 1,2,2 D) 1,2,3

10.表达式!x||a= =b等效于____________。

A) !((x||a)= =b) B) !(x||y)= =b C) !(x||(a= =b) ) D) (!x)||(a= =b)

11.设int x=-1;执行表达式++x||++x||++x后x的值是_________________。

A) 3 B) 2 C)1D)0

12.设int x=1,y=1;表达式(!x||y--)的值是_____________。

A) -l B) 0 C) l D) 2

13.设x,y,t均为int型变量,则执行语句:x=y=3; t=++x||++y; 后y的值为_________。

A) 1 B) 3 c) 4 D) 不定值

14.已有定义int x=3,y=4,z=5;则表达式!(x+y)+z-1 && y+z/2的值是_________。

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

15.以下选项中非法的表达式是___________。

A) 0<=x<100 B) i=j= =0 C) (char)(x<100) D) x+1=x+1

16.设有定义:int a=2,b=3,c=4;以下选项中值为0的表达式是_____________。

A) a ||(b+b) && (c-a) B) (a

C) a&&b D) (!a= =1)&& (!b= =0)

17.设有定义:int k=1,m=2;float f=7;则以下选项中错误的表达式是__________。

A) k=k>=k B) -k++ C) k%f D) k>=f>=m

18.下面各组表达式运算结果均为真的是_________。

A) ①0 && a= =0 ②0 || a= =l

B) ①a || !a= =0 ②a && !a= =0

C) ①! (a | |b)= =!a || !b ②!(a&&b)= =!a || !b

D) ①a|| a= =a ②a || !a !=0

19.下面程序段执行后的输出结果是_____________。

int x=-l,y=4,k;

k=x++<=0 !(y-- <= 0);

printf("%d,%d,%d", k,x,y);

A) 0,0,3 B) 0,l,2 C) 1,0,3 D) 1,l,2

20.下面程序段执行后的输出结果是_____________。

int a=1,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a<b);

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

A) 0,0 B) 0,l C) 1,0 D) 1,l

21.下面程序段执行后的输出结果是_____________。

int a,b,d=25;

a=d/10%9; b=a&&(-1);

printf("%d,%d",a,b);

A) 6,1 B) 2,l C) 6,0 D) 2,0

22.下面程序段执行后x的值为______________。

int a=14,b=15,x;char c='A';

x=(a&&b) && (c<'B');

printf("%d ", x);

A) 0 B) 1 C) 14 D) 15

23.下面程序段执行后的输出结果是______________。

int a=4,b=5,c=0,d;

d=!a&&!b || !c;

printf("%d",d);

A) 0 B) l C) 非0的数D) -l

24.若w=l,x=2,y=3,z=4,则条件表达式w

A) 4 B) 3 C) 2 D) l

25.若有int i=5;j=4,k=6; float f; 执行语句f=(i

A) 4.0 B) 5.0 C)6.0 D) 7.0

26.若定义了int x=100;则表达式x++>100?x+20:x+10的值为___________。

A) 110 B) 111 C)120 D) 121

27.设int m1=5,m2=3;表达式m1>m2?(m1=1) m2=-1)运算后,m1和m2的值分别是________。

A) 1和3 B) 1和-1 C) 5和-1 D) 5和3

28.若整型变量a,b,c,d的值依次为1,2,3,4,则表达式a

A) 1 B) 2 C) 3 D) 4

29.下面程序段执行后的输出结果是____________。

int a,b,c;int x=5,y=l 0;

a=(--y= =x++) ? -y :++x ;

b=y++;c=x;

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

A) 6,9,7 B) 6,9,6 C) 7,9,6 D) 7,9,7

30.设char c='A';则表达式c=(c>='A' && c<='Z') ? (c+32) :c的值是_____________

A) Z B) z A) A B) a

31.下面程序段执行后的输出结果是

int a=5,b=4,c=6,d;

d=a>b? (a>c ?a:c):(b);

printf("%d",d);

A)6 B) 5 C) 4 D)不确定

32.若变量c为char类型,能正确判断出c为小写字母的表达式是____________。

A) 'a'<=c<='z' B) (c>='a') || (c<='z')

C) !( (c>='a') || (c<='z') ) D) (c>='a') && (c<='z')

33.下列表达式中,__________不满足“当x的值为偶数时值为其,为奇数时值为假”的要求。

A) x%2= =0 B) !x%2!=0 c) (x/2*2-x) = =0 D) !(x%2]

34.下列表达式中,能正确表示“当x的取值在[1,l0]和[200,210]范围内为真,否则为假”的表达式是_______________。

A) (x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B) (x>=1)|| (x<=10)|| (x>=200)|| (x<=210)

C) (x>=1)&&(x<=10)|| (x>=200)&&(x<=210)

D) (x>=1)|| (x<=10)&&(x>=200)|| (x<=210)

35.下述表达式中,___________可以正确表示x≤0或x≥1的关系。

A) (x>=1) || (x<=0) B) (x>=1) | (x<=0)

C) (x>=1) && (x<=0) D) (x>=1) & (x<=0)

36.若x和y为整型数,以下表达式中不能正确表示数学关系|x-y|<10的是___________

A) abs(x-y)-10&&x-y<10

C) !(x-y)<-10 || !(y-x)>10 D) (x-y)*(x-y)<100

37.C语言对嵌套if语句的规定是else总是与___________配对。

A) 之前最近的尚未配对的if B) 第一个if

C) 缩进位置相同的if D)最前面的if

38.“if(表达式)”中的“表达式”___________ 。

A) 只能是逻辑表达式D) 只能是关系表达式

C) 只能是算术表达式D) 以上三种都可以

39.当把以下四个表达式用作if语句的表达式时,有一个选项与其他三个选项含义不同,这个选项是____________。

A) k%2 B) k%2= =1 C) (k%2)!=0 D) !k%2= =1

40.对于下面程序,____________是正确的判断。

#include

void main()

{

int x,y;

scanf("%d%d",&x,&y);

if(x>y)

x=y; y=x;

else

x++; y++;

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

}

A)有语法错误,不能通过编译B) 若输入3和4,则输出4和5

C) 若输入4和3,则输出3和4B) 若输入4和3,则输出4和5

41.对于下面程序段,__________是正确的判断,

Int x=0,y=0,z=0;

if (x=y+z) printf("***");

else printf("###");

A) 有语法错误,不能通过编译B)输出:***

C) 可以编译,但不能通过连接,所以不能运行D)输出:###

42.设int x,a,b;下面__________是错误的if语句

A) if(a=b) x++;B) if(a=

C) if(a-b) x++;D) if(x) x++;

43.下面程序段执行后的输出结果是____________

int a=0, b=0,c=0;

if(++a>0 || ++b>0) ++c;

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

A) 0,0,0 B) l,l,1C) 1,0,1 D) 0,l,1

44.若a=1,b=3,c=5,d=4,则执行下面程序段后x的值是______________

if (a

if (c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

A) 1 B) 2 C) 3 D) 4

45.在下面的条件语句中(其中S1和S2表示C语言语句),只有_____________在功能上与其他三个语句不等价。

A) if(a) S1; else S2; B) if(a= =0 ) S2; else S1;

C) if(a!=0) S1; else S2; D) if(a= =0) S1; else S2;

46下面程序段执行后的输出结果是___________。

int a=8,b=7,c=6;

if(a<b)

if(b>c) {a=c;c=b;}

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

A)6,7,7 B) 6,7,8C)8,7,6 D) 8,7,8

47.程序段执行后的输出结果是______________。

int a=1,b=2,x=0;

if(!(--a)) x--;

if(!b) x=7;

else ++x;

printf("%d",x);

A) 0 B) 3 C) 6 D) 7

48.与y=(x>0?1:x<0?-1:0);功能相同的if 语句是__________________。

A) y=0; B) if(x)

if (x>=0) if(x>0) y=1;

if(x>0) y=1; else if(x<0) y=-1;

else y=-1; else y=0;

C) y=-1; D) if(x>0) y=1;

if (x) else if(x<0) y=-1;

if(x>0) y=1; else y=0;

else if(x= =0) y=0;

49.下列语句中,功能与其他语句不同的是____________ 。

A) if(a) printf("%d",x); else printf("%d",y); B) if(a= =0) printf("%d",y); else printf("%d",x);

C) if(a!=0) printf("%d",x); else printf("%d",y); D) if(a= =0) printf("%d",x); else printf("%d",y);

50.下面程序段运行时从键盘上输入:9回车,其输出结果是________________ 。

int n ;

scanf("%d",&n);

if(n++<10) printf("%d",n);

else printf("%d",n--);

A) 8 B) 9 C) 10 D) 11

51.下面程序段执行后的输出结果是_______________。

int a =3,b =4, c =5,d =2;

if(a>b)

if(b >c) printf("%d",(d++)+1);

else printf("%d",(++d)+1);

printf("%d",d);

A) 2 B) 3 C) 43 D) 44

52.下面程序段执行后的输出结果是_______________。

int i=1,j=2,k=3;

if(i++= =1 && (++j= =3 || k++ = =3)))

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

A) 1 2 3 B) 2 3 3 C) 2 2 3 D) 2 3 4

53.下面程序段表示以下_______________式子。

if(a

else x=2;

A) x=?

??≠≥=

??≠<=

#include

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

case 3:a++;b++;

}

printf("a=%d,b=%d ",a,b);

}

A) a=1,b=0 B) a=2,b=1 C) a=1,b=1 D) a=2,b=2

55.若int i=10;执行下面程序段后,变量i的值是______________。

switch(i)

{

case 9: i+=1;

case 10: i+=1;

case 11: i+=1;

default: i+=1;

}

A) 10 B) 11 C) 12 D) 13

56.若int i=1;执行下面程序段后,变量i的值是______________。

switch(i)

{

case '1': i+=1;

case '2': i+=1;

case '3': i+=1;

default: i+=1;

}

A) 2 B) 3 C) 4 D) 5

57.若有定义:float w; int a,b;则合法的switch语句是__________________。

A) switch(w) B) switch(a);

{ {

case 1.0:printf("*\n"); case 1:printf("*\n");

case 2.0:printf("**\n"); case 2:printf("**\n");

} }

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

{ {

case 1:printf("*\n"); case 1:printf("*\n");

default:printf("\n"); case 2:printf("**\n");

case 1+2:printf("**\n"); default:printf("\n");

} }

58.下面程序段执行后的输出结果是______________。

int x=0,a=0,b=0;

switch(x)

{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

printf("a=%d,b=%d",a,b);

A) a=1,b=1 B) a=2,b=1 C) a=1,b=0 D) a=2,b=2

59.若a,b,c1,c2,x,y均是整型变量,正确的switch语句是___________。

A) switch(a+b) B) switch(a*a+b*b);

{ {

case 3:

case c1>c2:y=a+b;break; case 1:y=a+b;break

case c1= =c2: y=a-b;break; case 3: y=a-b;break;

} }

C) switch(a) D) switch(a-b);

{ {

case c1>0: y=a-b;break; default:y=a*b;break;

case c2<2:x=a*d;break; case 3: case 4:x=a+b;break;

default:x=a+b; case 8: case 9:y=a-b;break;

} }

60.下面程序执行后的输出结果是________________。

#include

void main()

{

int a=15,b=21,m=0;

switch(a%3)

{

case 0: m++;break;

case 1: m++;

switch(b%2)

{

default: m++;

case 0: m++; break;

}

}

printf("%d",m);

}

A) 1 B) 2 C)3 D)4

二、填空题

1.C语言提供6种关系运算符,按优先级高低它们分别是___________、____________、____________、_____________、_______________、_______________等。

2.C语言提供三种逻辑运算神,按优先级高低它们分别是______、________、________。

3.已知A=7.5,B=2,c=3.6,表达式A>B&& C>A || AB的值是_____________。

4.有int x,y=-4,z=5;则表达式(x&&y)= =(x||z)的值为________________。

5.设a=3,b=4,c=5,写出下面逻辑表达式的值。

四、程序阅读题

1. 写出下面程序执行后的运行结果。

# include

void main()

{

int a=10,b =20;c=30;

a=(--b<=a) ||(a+b!=c);

printf("%d,%d",a,b);

}

2.写出下面程序执行后的运行结果。

# include

void main()

{

int a=5,b=4,c=3,d;

d=(a>b>c);

printf("%d",d);

}

3.写出下面程序执行后的运行结果。

# include

void main()

{

int a,b,c;

a=10;b=20;c=(a%b<1) || (a/b>1);

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

}

4.下面程序运行时从键盘上输入:100回车,写出程序的运行结果。

# include

void main()

{

int a;

scanf("%d",&a);

printf("%s",(a%2!=0)?"No":"Y es");

}

5.写出下面程序执行后的运行结果。

# include

void main()

{

int x=10,y=20,t=0;

if(x= =y) t=x; x=y; y=t;

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

}

6.写出下面程序执行后的运行结果。

# include

void main()

{

int a=10,b=20,c=30;

if(a>b) if(a>c) printf("a=%d",a);

else printf("b=%d",b);

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

}

7.下面程序运行时从键盘上输入:-1 -2回车,写出程序的运行结果。# include

void main()

{

int a,b,m=1,n=1;

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

if(a>0) m=m+n;

if(a

else if(a= =b) n=5;

else n=m+n;

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

}

8.下面程序运行时从键盘上输入:58回车,写出程序的运行结果。# include

void main()

{

int a;

scanf("%d",&a);

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

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

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

}

9.写出下面程序执行后的运行结果。

# include

void main()

{

int n=0,m=1, x=2;

if(!n) x-=1;

if(m) x-=2;

if(x) x-=3;

printf("%d ",x);

}

10.写出下面程序执行后的运行结果。

# include

void main()

{

int n='c';

switch(n++)

{

default:printf("error");break;

case 'a': case 'A': case 'b': case 'B': printf("good");break;

case 'c': case 'C': printf("pass");

case 'd': case 'D': printf("warn");

}

}

五、程序填空题

1.以下程序输出x,y,z三个数中的最小值,请填空使程序完整、正确。

# include

void main()

{

int x=4,y=5,z=8;

int u,v;

u=x

v=u

printf("%d",v);

}

2.设a,b,c为三角形三条边长,以下程序用于判断a,b,c能否构成三角形,若能输出YES,否则输出NO。请填空使程序完整、正确。

# include

void main()

{

float a,b,c;

scanf("【______________】",&a,&b,&c);

if(【______________】) printf("YES\n");

else printf("NO\n");

}

3.下面程序的功能是求ax2+bx+c=0方程的解,请填空使程序完整、正确。

# include

#include

void main()

{

double a,b,c,d,x1,x2,r,i;

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

if(fabs(a)<=1e-6) printf("无解");

else

{

d=b*b-4*a*c;

if(【______________】) printf("两个相同实根:%8.4lf",-b/(2*a));

else if(【______________】)

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf("两个不同的实根:%8.4lf 和%8.4lf",x1,x2);

}

else

{

r=-b/(2*a);

i=sqrt(-d)/(2*a);

printf("虚根:\n");

printf("%8.4lf+%8.4lfi\n",r,i);

printf("%8.4lf-%8.4lfi\n",r,i);

}

}

}

4.以下程序输入一个学生的成绩(在0~100分之间,超出此范围显示错),进行五级评分并显示。请填空使程序完整、正确。

# include

void main()

{

int score;

scanf("%d",&score);

printf("%d->",score);

if(【______________】)

switch(【______________】)

{

case 10:

case 9:printf("优秀\n");break;

case 8:printf("良好\n");break;

case 7:printf("一般\n");break;

case 6:printf("及格\n");break;

default:printf("不及格\n");

else printf("输入错误\n");

}

5.根据以下函数关系,对输入的每个x 值,计算出相应的y 值。请填空使程序完整、正确。 y=???

????<≤+-<≤<≤<4020205.020

10 101000

0x x x x x x , , , ,

# include

void main()

{

int x,c; double y;

scanf("%d",&x);

if(【______________】) c=-1;

else c=【______________】;

switch?

{

case -1: y=0.0; break;

case 0: y=x; break;

case 1: y=10.0; break;

case 2:

case 3: y=-0.5*x+20; break;

default: y=-2.0;

}

if(【______________】)

printf("y=%lf",y);

else

printf("error!");

}

六、编程题

1.编写程序任意输入三角形三条边(a,b,c为实型),若能构成三角形,则计算出三角形面积,否则输出标志“NO”。

3. 编写程序输入一位数数字0~9,给出其对应的中文大写数字(零壹贰叁肆伍陆柒捌玖)。

4.编写一个模拟简单计算器的程序,计算表达式:al op a2的值,要求a1,op,a2从盘输入。其中al,a2(作除数时不能为0)为数值,op为运算符十,一,*,/。

5.常见的钟表一般都有时针和分针,在任意时刻时针和分针都形成一定夹角;现已知当前的时刻,编写程序求出该时刻时针和分针的夹角(该夹角小于或等于180°)。当前时刻值输入格式为“小时:分”,例如:11:12。

c语言第五章 选择结构程序设计(习题册答案)

第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、!。其中优先级最高的为!,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x2&&x<3。 8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。 9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。 10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。 11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是0。 12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。 13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。 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,使其功能不变。 二、选择题 1、逻辑运算符两侧运算对象的数据类型(D)。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2、以下关于运算符优先顺序的描述中正确的是(C)。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 3、下列运算符中优先级最高的是(B)。 A)< B)+ C)&& D)!= 4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。 A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122) 5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表 达式是(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)

c语言第五章-选择结构程序设计(习题册答案)资料讲解

c语言第五章-选择结构程序设计(习题册答 案)

第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、 !。其中优先级最高的为! ,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以 0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式 x2&&x<3。 8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。 9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。 10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。 11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是0。 12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是 1。 13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。 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,使其功能不变。 二、选择题 1、逻辑运算符两侧运算对象的数据类型(D)。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2、以下关于运算符优先顺序的描述中正确的是(C)。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 3、下列运算符中优先级最高的是(B)。

第5章选择结构程序设计

第5章选择结构程序设计 在日常生活和工作中,经常会遇到各种各样的选择,根据选择的不同,会得到不同的结果。在程序设计中,也经常会根据不同的情况执行不同的操作,这与现实生活中的选择非常类似。但程序设计中的选择结构根据条件只能选择一个分支执行,即无论分支多寡,必择其一;纵然分支众多,仅选其一。 本章主要介绍实现选择结构程序设计方面的知识,包括If语句、Select Case语句、条件函数的使用,最后介绍与选择结构相关的单选按钮、复选框和框架三个基本控件的使用。 5.1引例 【例5.1】输入学生百分制成绩,将该成绩转换为五级分制显示输出。程序运行结果如图5.1所示。其中转换规则为:90及90分以上为优,80~90为良(含80,不含90,后面相同),70~80为中,60~70为及格,0~60为不及格。 图5.1 例5.1的运行结果 该题目是选择结构的典型应用。程序代码如下: Private Sub Command1_Click() cj = Val(Text1) If cj < 0 Or cj > 100 Then MsgBox "输入的成绩无效" Text1.Text = "" Label1.Caption = "" ElseIf cj >= 90 Then Label3.Caption = "优" ElseIf cj >= 80 Then Label3.Caption = "良" ElseIf cj >= 70 Then Label3.Caption = "中" ElseIf cj >= 60 Then Label3.Caption = "及格" Else Label3.Caption = "不及格" End If End Sub

第五章选择结构程序设计练习含答案v1

第五章选择结构程序设计 5.1 选择题 【题5.4】能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假” 的表达式是。C A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B)(x>=1)||(x<=10)||(x>=200)||(x<=210) C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D)(x>=1)||(x<=10)&&(x>=200)||(x<=210) 【题5.5C //// //// X a b c A)(x<=a)&&(x>=b)&&(x<=c) B)(x<=a)||(b<=x<=c) C)(x<=a)||(x>=b)&&(x<=c) D)(x<=a)&&(b<=x<=c) 【题5.6】判断char型变量ch是否为大写字母的正确表达式是。C A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’) C)(ch>=‘A’)&&(ch<=‘Z’) D)(‘A’<=ch)AND(‘Z’>=ch) 【题5.10】设有: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 【题5.11】判断char型变量c1是否为小写字母的正确表达式是。D A)‘a’<=c1<=‘z’B)(c1>=a)&&(c1<=z) C)(‘a’>=c1)||(‘z’<=c1) D)(c1>=‘a’)&&(c1<=‘z’) 【题5.12】以下程序的运行结果是。B #include “stdio.h” main() {

第5章 选择结构程序设计

第5章选择结构程序设计 第一讲选择结构简介、单分支选择结构、多分支选择 结构 教学目标 1. 了解选择结构。 2. 理解掌握单分支选择结构和多分支选择结构的使用。 教学过程 预备知识 5.1 选择结构程序的设计 所谓选择结构就是由特定的条件决定执行哪条语句的程序结构。 在C#中,提供两种选择语句实现流程的改变: if语句,用于判断特定的条件能否满足,用于单分支选择,也可以通过嵌套实现多分支选择。 switch语句,用于多分支选择。 5.2 单分支选择结构(if语句) if语句是程序设计中基本的选择语句,它根据条件表达式的值选择要执行的后面的内嵌语句序列。一般用于简单选择,即选择项中有一个或两个分支,语句执行的过程中根据不同的情况进行选择其中一个分支执行。 5.2.1if 语句 格式: if(布尔条件表达式) 语句序列; 功能:根据布尔条件表达式的值进行判断: 当该值为真时执行if后的语句序列;

当该值为假时什么都不执行。 5.2.2if …else语句 格式为: if (布尔条件表达式) 内嵌语句序列1; else 内嵌语句序列2; 根据布尔条件表达式的值进行判断,当该值为真时执行if语句后的语句序列,当为假时,执行else语句后的语句序列。该结构一般用于两种分支的选择。 下面结合实例介绍if…else语句的使用方法。

【例5-1】某商店为了吸引顾客,采取以下优惠活动:所购商品在1000元以下的,打9折优惠;所购商品多于1000元的,打8折优惠。试采用if语句实现该优惠。 分析:该问题属于数学分段函数问题,当所购商品总额<1000元时,打折后的商品总额为(所购商品总额*0.9);当所购商品总额>1000时,打折后的商品总额为(所购商品总额*0.8)。 (1) 建立项目 在Visual https://www.360docs.net/doc/7412049495.html,中, 打开“文件”菜单, 依次选择“新建→项目”命令, 打开“新建项目”对话框, 选择“Visual C#项目”, 选择“Windows应用程序”输入项目的名称和存放位置。 (2) 设计窗体 单击工作区左侧的“工具箱”或单击工具栏上工具箱图标,工具箱将显示在工作区左侧。添加相应的控件。 (3) 编辑代码 选中按钮控件,单击鼠标右键,在弹出的菜单中选择“查看代码”命令,或通过“视图”菜单中的“代码”命令,切换到代码视图。也可以双击控件直接在事件中添加代码。代码为: private void button1_Click(object sender, System.EventArgs e)

第5章选择结构作业2参考答案

第5章选择结构作业2 一、读程序写结果: 1、如下程序的运行结果是: void main() { int a=1,b=2,c=3,d=4,m=2,n=2; int s; s=(m=a>b)&& (n=c>d); printf(“%d, %d, %d, %d, %d, %d\n”, a, b, c, d, m, n); printf(“%d\n”,s); } 1,2,3,4,0,2 2、如下程序的运行结果是: #include void main() { int x=1,y=1,z=10; if(z<0) if(y>0) x=3; else x=5; printf("%d\t",x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf("%d\t",x); printf("%d\t",z); } 1 7 0 3、如下程序的运行结果是: #include"stdio.h" void main() { int a=1,b=0; switch(a) { case 1: switch (b) { case 0: printf("**0**"); break; case 1: printf("**1**"); break; } case 2: printf("**2**"); break; }

} **0****2** 二、编程题 1.从键盘输入一个整数,判断它的正负性和奇偶性。 参考答案: #include void main() { int n; scanf("%d",&n); if(n==0) printf("0,-0 是非正非负的偶数\n"); else { //注意{ 不能少 if(n>0) printf("%d是正数\n",n); else printf("%d 是负数\n",n); if(n%2==0) printf("%d 是偶数\n",n); //注意== else printf("%d是奇数\n",n); } } 2.输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”。 #include void main() { char c; c=getchar(); //也可用scanf(“%c”,&c); if(c>='a' && c<='z') putchar(c-32); else if(c>='A' && c<='Z') putchar(c+32); //else表示不是小写字母 else if(c>='0' && c<='9') putchar(c); //else表示不是小写字母、大写字母else if(c==' ') printf("space\n"); //注意是==,不要写成= else printf("other\n"); //此处的else表示不满上述所有条件 }

第五章 选择结构

第五章选择结构 一、选择题 1.关于C程序在作逻辑运算时判断操作数真、假的表述中,正确的是__________。 A)0为假.非0为真B) 只有l为真 C) -l为假,l为真D) 0为真,非0为假 2.关于C程序关系运算、逻辑运算后得到的逻辑值的表述中,正确的是__________。 A) 假为0,真为随机的一个非0值B) 假为0,真为1 C) 假为-l,真为l D)假为0,真为不确定的值 3.下列运算符中,优先级从高到低依次为__________。 A)&&! || B) || &&! C) &&|| ! D) ! && || 4.设int a=1,b=2,c=3,d=4,m=2 ,n=2;执行(m=a>b)&&(n=c>d)后n的值为____________。 A) l B) 2 C) 3 D) 4 5.若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是______________。 A) ①和②B) ②和③C) ①和③D) ③和④ 6.设int i=10;表达式30-i<=i<=9的值是________________。 A)0 B) 1 C)9 D)20 7.设int a=0,b=0,m=0,n=0;则执行(m=a= =b)||(n=b= =a)后m和n的值是___________。 A) 0,0 B) 0,1 C) 1,0 D) 1,1 8.表达式!x等效于_____________。 A) x= =l B) x= =0 C) x!=l D) x!=0 9.int a=1,b=2,c=4;经过表达式(c=a!=b)&&(a= =b)&&(c=b)运算后,a,b和c的值分别是___________。 A) 1,2,0 B) 1,2,1 C) 1,2,2 D) 1,2,3 10.表达式!x||a= =b等效于____________。 A) !((x||a)= =b) B) !(x||y)= =b C) !(x||(a= =b) ) D) (!x)||(a= =b) 11.设int x=-1;执行表达式++x||++x||++x后x的值是_________________。 A) 3 B) 2 C)1D)0 12.设int x=1,y=1;表达式(!x||y--)的值是_____________。 A) -l B) 0 C) l D) 2 13.设x,y,t均为int型变量,则执行语句:x=y=3; t=++x||++y; 后y的值为_________。 A) 1 B) 3 c) 4 D) 不定值 14.已有定义int x=3,y=4,z=5;则表达式!(x+y)+z-1 && y+z/2的值是_________。 A) 6 B) 2C)1D)0 15.以下选项中非法的表达式是___________。 A) 0<=x<100 B) i=j= =0 C) (char)(x<100) D) x+1=x+1 16.设有定义:int a=2,b=3,c=4;以下选项中值为0的表达式是_____________。 A) a ||(b+b) && (c-a) B) (a=k B) -k++ C) k%f D) k>=f>=m 18.下面各组表达式运算结果均为真的是_________。 A) ①0 && a= =0 ②0 || a= =l

第5章选择结构程序设计习题及答案

第5章 选择结构程序设计 5-1 比较单分支、双分支、多分支if 语句。 答:(1)多分支if 语句可用多条单分支、双分支if 语句等价实现。 (2)双分支if 语句形式上相当于单分支if 语句扩展else 分支而来。 (3)单分支if 语句可以认为是双分支if 语句缺省else 子句的特殊情况,一条双分支语句可用两条单分支语句实现。 思考:分支结构主要用在哪些情况下?它有哪几种形式? 5-2 , 下列描述哪些是正确的? (1) if (x<0)y=?1; else if(x==0) y=0; else y=1; (2)if(x>=0) if(x>0) y = 1 ; else y = 0 ; else y = -1 ; (3) y = -1 ; if(x!=0) if(x>0) y = 1 ; else y = 0 ; (4)y = 0 ; if (x>=0) if(x>0) y = 1 ; 答:(1) 正确 ; (2) 正确 ;(3) 不正确 ;(4) 不正确 ; 思考 : 若将(3)改为: y = -1 ; (4) 改为:y = 0 ; if(x>=0) /*删除原if(x>=0)*/ if(x>0) y =1 ; if(x>0) y = 1 ; else y = 0 ; else y = -1 ; 后是否正确 ? 5-3 仔细阅读以下程序 , 指出程序的运行结果 . ???????>=<-=01 0001x x x y

#include main() { int a , b ; a = b = 5 ; if(a==1) if(b==5) {a+=b ; printf("a=%d\n ",a) ; } else {a-=b ; printf("a=%d\n",a) ; } printf("a+b=%d",a+b) ; } 解: 结果为: a + b = 10 思考:为何有三个printf 语句,却只有一行输出?如果将第5行去掉或改为if(a==5) , 结果是否一样? 5-3仔细阅读以下程序,指出程序的运行结果。 解:#include main() { int i =1 , j = 0 ,m = 1 ,n =2 ; switch(i++) {case 1 : m++ ;n++ ; case 2 : switch(++j) {case 1 : m++ ; case 2 : n++ ; } case 3 : m++ ;n++ ; break ; case 4 :m++ ;n++ ; } printf("m=%d,n=%d" , m ,n) ; }

C语言第五章选择结构复习题

选择结构程序设计复习题 一.选择题 1.已有定义语句:int x=3,y=4,z=5;,则值为0的表达式是:()a) x>y++ b) x<=++y c) x !=y+z>y-z d) y%z>=y-z 2.已有定义语句:int x=3,y=0,z=0;,则值为0的表达式是:() a) x&&y b) x||z c) x ||z+2&&y-z d) !((x

main() { int i=0; if(i==0) printf(“**”); else printf(“$”); printf(“*\n”); } a) * b) $* c) ** d) *** 8. 若变量a,b,c都为整型,且a=1、b=15、c=0,则表达式a==b>c的值是() a) 0 b) 非零c) “真”d) 1 9. a为0时,值为“真”的表达式是() a) a b) !(++a) c) a=0 d) a==0 10. 若有定义和语句:int a=4,b=5,c=0d; d=!a&&!b||!c;,则d 的值是() a) 0 b) 1 c) -1 d) 非0的数 11. 以下选项不能正确判断a为偶数的表达式是() a) a%2==0 b) !a%2!=0 c) a/2*2-a==0 d) !(a%2) 12. 有以下程序: main() { int a=2,b=1,c=2; if(b

第五章选择结构程序设计(2445)

1.设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch 的值是(B)。 A. A B. a C.Z D.z 2.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为(C)。 A.不定值 B. 4 C. 3 D. 1 3.下面关于运算符优先顺序的描述中正确的是(C)。 A.关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B.逻辑运算符< 关系运算符< 算术运算符< 赋值运算符 C.赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符 D.算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 4.设有声明语句:int a=1,b=0;则执行以下语句后输出(B) 。 switch (a) { case 1: switch (b) { case 0: printf("**0**");break; case 1: printf("**1**");break; } case 2: printf("**2**");break; } A.**0** B. **0****2** C.**0****1****2** D.有语法错误 5.设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句(B)。 if (x=y) printf(" x is equal to y."); A.语法错 B.不能判断x和y是否相等 C.编译出错 D.能判断x和y是否相等 6.以下有关switch语句的正确说法是(B)。 A.break语句是语句中必须的一部分 B.在switch 语句中可以根据需要使用或不使用break语句 C.break语句在switch 语句中不可以使用 D.在switch 语句中的每一个case都要用break语句 7.设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后,n 的值为( B) A. 1

第5章选择结构作业1参考答案

第五章选择结构作业1 一、选择题 1.关系表达式a≤x<b的正确描述是()。 A.a<=x=a&&x=a||x=b) 2.能正确表示“当x的取值在[1,10]或[200,210]范围内为真,否则为假”的表达式是 ()。 A. (x>=1) && (x<=10) && (x>=200) && (x<=210) B. (x>=1) | | (x<=10) | | (x>=200) | | (x<=210) C. (x>=1) && (x<=10) | | (x>=200) && (x<=210) D. (x>=1) | | (x<=10) && (x>=200) | | (x<=210) 3.下述表达式中,可以正确表示x≤0或x≥1的关系。 A)(x>=1) | | (x<=0) B)x>=1 | x<=0 C)x>=1 && x<=0 D)(x>=1) && (x<=0) 4.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s) 5.若希望当x的值为奇数时,表达式的值为“真”,x的值为偶数时,表达式的值为“假”。 则以下不能满足要求的表达式是()。 A.x%2==1 B.!(x%2==0) C.!(x%2) D.x%2 6.若执行下面的程序时从键盘上输入5和6,则输出的是()。 void main() { int a,b,s; scanf("%d%d",&a,&b); s=a; if(ab) c=a; a=b; b=c; A.a=1, b=2, c=3 B.a=2, b=3, c=3 C.a=2, b=3, c=1 D.a=2, b=3, c=2 8.对下述程序,是正确的判断是()。 void main ( ) { int x,y; scanf(“%d,%d”,&x,&y); if (x>y)

第5章 选择结构练习题

选择结构练习题 一、判断题 1.若行If语句中逻辑表达式值为True,则关键字Then后的若干语句都要执行。2.在行If语句中,关键字End If是必不可少的。 3.块If结构中的Else子句可以缺省。 二:选择题 1.下列程序段的执行结果() X=5 Y=-20 IF NOT X>0 then x=y-3 else y=x+3 Print x-y; y-x A:-3 3 B:5 -8 C:3 -3 D:25 -25 2:下列程序段,只有()能正确实现条件:如果A>B ,则输出A;否则输出B A: IF AB, print A, print B) PRINT A C: IF AB then print A ELSE PRINT B END IF 3: 下列程序段的执行结果() X=3 A: True Y=2 B: False IF X*Y<1 then Y=Y-1 ELSE Y=-2 C: -1 PRINT Y-X>0 D: 1 4: 下列程序段的执行结果() A=”abcd”A: cdebcd B=”bcde”B: cdd E=Right(A , 3) C: cdcd F=Mid(B , 2 , 3) D:bcdcde IF E

第五章选择结构程序设计

1. 第五章选择结构程序设计 一、 1. 1.若有int y;则表示命题“y是奇数”成立的C语言表达式是(13) 。 2. 2.在C语言中,表示逻辑“真”值用(14) 表示。 3. 3.条件“2<x<3或x<-10”的C表达式是(15) 。 4. 4.以下程序运行的结果是(16) 。 5.main ( ) { int a, b, c, d, x; a=c=0; b=1; d=20; if (a) d=d-10; else if (!b) if (!c) x=15; else x=25; printf (“%d\n”, d ); } 6. 5.若有说明语句:“int x=1, y=0;”,则表达式x――>(y+x)?5:25>y++?‘1’:‘2’的值 是(17) 。 7. 6.以下程序段的运行结果是(18) 。 int x=1, y=0; switch (x) { case 1: switch (y) { case 0: printf(“**1**”); break; case 1: printf(“**2**”); break; } case 2: printf (“**3**”); } 8. 1.以下程序运行的结果是(19) 。 #include 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\n”,a, b); } 二、选择题 一、 1.若有int y;则表示命题“y是奇数”成立的C语言表达式是 (13) 。

相关文档
最新文档