第五章 选择结构
第五章选择结构
一、选择题
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) 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。 第五章选择结构程序设计 基础练习(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”的表达式x 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”的表达式 x 第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 第五章选择结构程序设计 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章选择结构程序设计 第一讲选择结构简介、单分支选择结构、多分支选择 结构 教学目标 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 一、读程序写结果: 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 } **0****2** 二、编程题 1.从键盘输入一个整数,判断它的正负性和奇偶性。 参考答案: #include 第五章选择结构 一、选择题 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-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 选择结构程序设计复习题 一.选择题 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 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 第五章选择结构作业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) 选择结构练习题 一、判断题 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 c语言第五章 选择结构程序设计(习题册答案)
c语言第五章-选择结构程序设计(习题册答案)资料讲解
第5章选择结构程序设计
第五章选择结构程序设计练习含答案v1
第5章 选择结构程序设计
第5章选择结构作业2参考答案
第五章 选择结构
第5章选择结构程序设计习题及答案
C语言第五章选择结构复习题
第五章选择结构程序设计(2445)
第5章选择结构作业1参考答案
第5章 选择结构练习题
第五章选择结构程序设计