c语言选择结构试题带答案教案资料
c语言选择结构试题
带答案
一、选择题
1. 以下非法的赋值语句是
A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0;
2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 D: 1
3. 阅读以下程序:
main()
{ int x;
scanf(“%d”,&x);
if(x--<5) printf(“%d”,x);
else printf(“%d”,x++);
}
程序运行后,如果从键盘上输人5,则输出结果是()。
A: 3 B: 4 C: 5 D: 6
4. 有如下程序
main0
{ int a=2,b=-1,c=2;
if(a
if(b<0) c=0;
else c++
printf("%d\n",c);
}
该程序的输出结果是
A: 0 B: 1 C: 2 D: 3
5. 有以下程序
#include
main()
{ int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是( )。
A: 2,1 B: 3,2 C: 4,3 D: 2,-1
6.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( )
{ int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else printf("%d\n",x - -); }
A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4
7. 能表示x 为偶数的表达式是
A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0
8. 下面的程序段中共出现了几处语法错误?
int a,b;
scanf("%d",a);
b=2a;
if(b>0) printf("%b",b);
A: 1 B: 2 C: 3 D: 4
9. C 语言中,逻辑“真”等价于
A: 大于零的数B: 大于零的整数C: 非零的数D: 非零的整数
10. C 语言的switch 语句中,case 后
A: 只能为常量
B: 只能为常量或常量表达式
C: 可为常量及表达式或有确定值的变量及表达式
D: 可为任何量或表达式
11. 已知int i=10;表达式"20-0<=i<=9"的值是
A: 0 B: 1 C: 19 D: 20
12. 设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&&k 的值为
A: 1 B: 2 C: 3 D: 0
13. 逻辑运算符两侧运算对象的数据类型
A: 只能是0 或1
B: 只能是0 或非0 正数
C: 只能是整型或字符型数据
D: 可以是任何类型的数据
14. 能正确表示“当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)
15. 已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值
是()
A: 0 B: 1 C: 语法错误D: 假
16. 执行下列语句后a 的值为
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
A: 5 B: 0 C: 2 D: 1
17. 以下程序的输出结果是()
main()
{ int a=5,b=0,c=0;
if(a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
A: 有语法错误不能通过编译
B: 可以通过编译但不能通过连接
C: ***
D: $$$
18. 以下程序的输出结果是()
main()
{ int m=5;
if(m++>5) printf(“%d\n”,m);
else printf(“%d\n”,m--);
}
A: 4 B: 5 C: 6 D: 7
19. 若运行时给变量x 输入12,则以下程序的运行结果是()main()
{ int x,y;
scanf(“%d”,&x);
y=x>12?x+10:x-12;
printf(“%d\n”,y);
}
A: 0 B: 22 C: 12 D: 10
20. 若w=1,x=2,y=3,z=4,则表达式w 21. 设有int a=2,b;则执行b=a&&1;语句后,b 的结果是 A: 0 B: 1 C: 2 D: 3 22. 设有int m=1,n=2;则++m==n 的结果是 A: 0 B: 1 C: 2 D: 3 23. 设有int n=2;则++n+1==4 的结果是 A: true B: false C: 1 D: 0 24. 设有int n=2;则++n+1==4,n 的结果是 A: 1 B: 2 C: 3 D: 4 25. 以下使i 的运算结果为4 的表达式是 A: int i=0,j=0; (i=3,(j++)+i); B: int i=1,j=0; j=i=((i=3)*2); C: int i=0,j=1; (j==1)?(i=1):(i=3); D: int i=1,j=1; i+=j+=2; 26. 当a=5,b=2 时,表达式a= =b 的值为 A: 2 B: 1 C: 0 D: 5 27. 若执行以下程序时从键盘上输入9,_______则输出结果是 main() { int n; scanf("%d",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); } A: 11 B: 10 C: 9 D: 8 28. main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(“%d,%d”,a,b); } A: 6,1 B: 2,1 C: 6,0 D: 2,0 29. 若有int x=10,y=20,z=30;以下语句执行后x,y,z 的值是() if (x>y) z=x;x=y;y=z; A: x=10,y=20,z=30 B: x=20,y=30,z=30 C: x=20,y=30,z=10 D: x=20,y=30,z=20 30. 下列表达式中能表示a 在0 到100 之间的是 A: a>0&a<100 B: !(a<0||a>100) C: 00&&a<100) 31. 为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与() 组成配对关系。 A: 缩排位置相同的if B: 在其之前未配对的if C: 在其之前未配对的最近的if D: 同一行上的if 32. 已知:int x,a,b;下列选项中错误的if 语句是 A: if(a=b) x++; B: if(a<=b) x++; C: if(a-b) x++; D: if(x) x++; 33. 当把以下四个表达式用作if 语句的控制表达式时,有一个选项与其它 三个选项含义不同,这个选项是()。 A: k%2 B: k%2==1 C: (k%2)!=0 D: !k%2==1 34. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0 的表达式是()。A: (!a==1)&&(!b==0) B: a C: a && b D: a||(b+b)&&(c-a) 35. 以下程序段的输出结果是。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c); A: a=10 b=50 c=10 B: a=10 b=30 c=10 C: a=50 b=30 c=10 D: a=50 b=30 c=50 36. 以下4 个选项中,不能看作一条语句的是 A: {;} B: a=0,b=0,c=0; C: if(a>0); D: if(b==0) m=1;n=2; 以下题目为二级题 37. if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是 A)必须是逻辑值 B)必须是整数值 C)必须是正数 D)可以是任意合法的数值 38. 有以下程序段 int i,n; for(i=0;i<8;i++) {n=rand()%5; switch (n) { case 1: case 3:printf("%d\n",n); break; case 2: case 4:printf("%d\n",n);continue; case 0:exit(0); } printf("%d\n",n); } 以下关于程序段执行情况的叙述,正确的是 A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作 C)当产生的随机数n为1和2时不做任何操作 D)当产生的随机数n为0时结束程序运行 39.有以下程序 #include main() { int x=1,y=0; if(!x) y++; else if(x==0) if (x) y+=2; else y+=3; printf("%d\n",y); } 程序运行后的输出结果是 A)3 B)2 C)1 D) 0 41. 有以下程序: #include main(){ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d",a,b,c,d); } 程序输出( ). A)1,1,2,0 B)0,0,0,3 C)编译有错 D) 0,1,2,0 42. 有以下程序: #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; case 3: a++; b++; } printf("a=%d,b=%d\n",a,b); } A) a=2,b=2 B) a=2,b=1 C) a=1,b=1 D) a=1,b=0 43. 若有定义int x, y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是() A) (x-y<0||x-y>0) B) (x-y<0) C) (x-y>0) D)(x-y==0) 44 .有以下程序: #include main(){ int x=1,y=0; if ( !x ) y++; else if (x==0) if(x) y+=2; else y+=3; printf("%d\n",y); } 程序运行后的输出结果是() A) 3 B) 2 C) 1 D) 0 45. 若有定义: float x=1.5; int a =1,b=3,c=2;则正确的switch语句是() A)switch(a+b) {case 1: printf("*\n"); case 2+1 : printf("**\n");} B)switch( (int)x ); { case 1: printf("*\n"); case 2 : printf("**\n");} C) switch( x ); { case 1.0: printf("*\n"); case 2.0 : printf("**\n");} D) switch( a+b ) { case 1: printf("*\n"); case c: printf("**\n");} 46. 若变量已正确定义,在if ( W ) printf("%d\n",k); 中,以下不可替代W的是()。 A) a<>b+c B) ch=getchar() C) a==b+c D) a++ 47. 下列叙述中正确的是( ) . A) 在switch语句中,不一定使用break语句 B) 在switch语句中必须使用default C) break语句必须与switch语句中的case配对使用 D) break 语句只能用于switch语句 48. 有如下嵌套的if语句 if ( a if(a else k=c; else if(b else k=c; 以下选项中与上述语句等价的语句是( ) A) k=(ac)?b:c); B) k=(a ((b C) k=(a 49. 设有宏定义: #define IsDIV(k,n) ((k%n==1) ? 1:0) 且变量m已正确定义并赋值,则宏调用: IsDIV(m,5) && IsDIV(m,7) 为真时所要表达的是: A) 判断m是否能被5和7整除B) 判断m被5和7 整除是否都余1 C) 判断m被5或者7整除是否余1 D) 判断m是否能被5或者7整除 50. 有以下程序 #include main(){ int a=1, b=2, c=3, x; x=(a^b)&c; printf("%d\n",x); } 程序运行结果是 A) 3 B) 1 C) 2 D) 0 51. 以下选项中,当x为大于1的奇数时,值为0的表达式是 A) x%2==0 B) x/2 C) x%2!=0 D) x%2==1 52. 有以下程序 #include main(){ int x; scanf("%d",&x); if(x<=3) else if(x!=10) printf("%d\n",x); } 程序运行时,输入的值在哪个范围才会有输出结果() A) 小于3的整数B) 不大于10的整数 C) 大于3或等于10的整数D) 大于3且不等于10的整数 53. 在以下给出的表达式中,与while(E)中的E不等价的表达式是() A)(E>0 || E<0) B) (E==0) C) (!E==0) D) (E!=0) 54. 以下选项中与 if (a==1) a=b; else a++; 语句功能不同的switch语句是() A) switch(a==1) {case 0: a=b; break; case 1: a++; } B) switch(a) {case 1: a=b; break; default: a++; } C) switch(a) { default : a++; break; case 1: a=b; } D) switch(a==1) {case 1: a=b; break; case 0: a++; } 55. 有以下程序 #include main() { int a=1,b=2,c=3,d=0; if( a==1 && b++==2) if(b!=2 || c--!=3) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); } 程序运行后的输出结果是() A) 1,3,2 B) 1,3,3 C) 1,2,3 D)3,2,1 56. 下列条件语句中,输出结果与其他语句不同的是() A) if(a!=0) printf("%d\n",x); else printf("%d\n",y); B) if(a==0) printf("%d\n",y); else printf("%d\n",x); C) if(a==0) printf("%d\n",x); else printf("%d\n",y); D) if(a) printf("%d\n",x); else printf("%d\n",y); 57. 有以下程序 #include main(){ int x=1, y=2, z=3; if(x>y) if(y else printf("%d",++y); printf("%d\n",x++); } 程序的运行结果是() A) 1 B) 41 C) 2 D) 331 58. 若有以下程序 #include main(){ int a=1,b=2,c=3,d=4,r=0; if(a!=1) ; else r=1; if(b==2) r+=2; else; if(c!=3) r+=3; else; if(d==4) r+=4; printf("%d\n",r); } 则程序的输出结果是() A) 10 B) 7 C) 6 D) 3 59. 有以下程序 #include main(){ int a; scanf("%d",&a); if(a++<9) printf("%d\n",a); else printf("%d\n",a--); } 程序运行时从键盘输入9<回车>,则输出结果是 A) 10 B) 11 C) 9 D) 8 60.设x=3,y=-4,z=6,写出表达式 !(x>y)+(y!=z)||(x+y)&&(y-z) 的结果( ) A、0 B、1 C、-1 D、6 二、填空题 1、C语言中用_____表示逻辑值“真”,用_____表示逻辑值“假” 2、C语言中的关系运算符“!=”的优先级_____ “<=”的优先级。 3、C语言中的逻辑运算符“&&”的优先级_____ “||”的优先级。 4、C语言中的关系运算符"=="的优先级_____ 逻辑运算符“&&”的优先级 5、将下列数学式改写成C语言关系表达式或逻辑表达式 A) _______________ B) _______________ A) a=b 或a 6、请写出以下程序的输出结果是_____________ #include main(){ int a=100; if(a>100) printf("%d\n", a>100); else printf("%d\n", a<=100); } 7、请写出与以下表达式等价的表达式 A) _______________ B) _______________ A) !(x>0) B) !0 8、若变量已正确定义,以下语句段的输出结果是______________ x=0; y=2; z=3 switch( x ) { case 0 : switch( y==2 ) { case 1: printf(" * "); break; case 2: printf(" % "); break; } case 1 : switch( z ) { case 1: printf(" $ "); case 2: printf(" * "); break; default: printf(" # "); } } 9、 int a=3; a+=(a<1)?a:1; printf(“%d”,a); 结果是__________ 以下题目为二级题 10、有以下程序 #include main() { int x; scanf("%d",&x); if(x>15)printf("%d",x-5); if(x>10)printf("%d",x); if(x>5)printf("%d\n",x+5); } 若程序运行时从键盘输入12<回车>,则输出结果为__________。 11、以下程序运行后的输出结果是_________。 #include main() { int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf("%d %d\n",x,y); } 12、以下程序的运行结果是_________。 main() { int a=2,b=7,c=5; switch(a>0) {case 1: switch (b<0) {case 1:printf ("@"); break; case 2: printf("!"); break; } case 0: switch(c==5) { case 0: printf("*"); break; case 1: printf("#"); break; case 2: printf("$"); break; } default : printf("&"); } printf("\n"); } 13、以下程序的运行结果i的值为_________. main() { char ch='$'; int i=1,j; j=!ch&&i++; printf("%d",i); } 14、以下程序用于判断a,b,c能否构成三角形,若能输出YES,若不能输出NO。当 a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是需要同时满足三条件:a+b>c,a+c>b,b+c>a。请填空。 main() { float a,b,c; scanf(“%f%f%f”,&a,&b,&c); if(____________)printf(“YES\n”);/*a,b,c能构成三角形*/ else printf(“NO\n”);/*a,b,c不能构成三角形*/ } 三、编程题 1. 从键盘输入一个学生的分数, 要求实现这样的判断功能: 如果分数大于100,输出 Input error! 如果分数介于 100到 90 之间, 输出 Very Good! 如果分数介于 80 到 90 只,输出 Good! 如果分数介于 70 到 80 之间,输出 Middle 如果分数介于 60到 70 之间, 输出 Pass!如果分数小于 60,输出 No Pass! 2. 输入一个整数,判断该数是奇数还是偶数。 3. 从键盘接收三个整数,编程求出最小数。 4. 从键盘接收一个字符,如果是字母,输出其对应的 ASCII 码,如果是数字,按原样输出,否则给出提示信息: 输入错误!。 5. 输入一个字符,判断它是否是小写字母,是小写字母,则将它转换成大写字母,如果不是,则不转换,然后输出所得到字符。 6. 编程判断输入的正整数是否既是 5 又是7的整倍数。若是,输出 yes,否则输出 no。 7. 编写一个简单计算器程序,输入格式为:data1 op data2。其中 data1和 data2 是参加运算的两个数,op 为运算符,它的取值只能是+、-、*、/。 8.已知银行整存整取存款不同期限的月息利率分别为: 0.315% 期限一年 0.330% 期限二年 月息利率= 0.345% 期限三年 0.375% 期限五年 0.420% 期限八年 要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。 c语言习题--输入输出函数 1. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为 A)100<空格>765.12<回车> B)i=100,f=765.12<回车> C)100<回车>765.12<回车> D)x=100<回车>,y=765.12<回车> 2. 以下程序的输出结果是 main( ) {int a=12,b=12; printf("%d %d\n",--a,++b); } A)10 10 B)12 12 C)11 10 D)11 13 4. 以下程序输出结果是 main( ) { int m=5; if(m++>5)printf("%d\n",m); else printf("%d\n",m--); } A)7 B)6 C)5 D)4 5. 当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)6 9. 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是 A)3 B)0 C)9 D)-12 11. 以下程序的输出结果是 # include main() { int a=2,c=5; printf("a=%%d,b=%%d\n",a,c); } A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d 13. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y)); 上面程序片段的输出结果是 A) 200 B) 100 C) 100 200 D) 输出格式符不够,输出不确定的值 15. 已知字母A的ASCII码为十进制的65,下面程序的输出是 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2);} A) 67,D B) B,C C) C,D D) 不确定的值 16. 若执行下面的程序时从键盘上输入3和4,则输出是 A) 14 B) 16 C) 18 D) 20 第五章选择结构程序设计 基础练习(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 第四章选择结构程序设计 一、填空 1.在C语言中,表示逻辑“真”值用_________。 2.得到整型变量a的十位数字的表达式为_________。 3.表达式:(6>5>4)+(float)(3/2)的值是_________。 4.表达式:a=3,a-1‖--a,2*a的值是_________。(a是整型变量) 5.表达式:(a=2.5-2.0)+(int)2.0/3的值是_________。(a是整型变量)6.C语言编译系统在给出逻辑运算结果时,以数值_________代表“真”,以 _________代表“假”;但在判断一个量是否为“真”时,以_________代表“假”,以_________代表真。 7.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为_________,m的值为_________。 8.若有int x,y,z;且x=3,y=-4,z=5,则表达式:!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_________。 二、编程: 1.企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数? 2.输入三个整数x,y,z,请把这三个数由小到大输出。 3.输入某年某月某日,判断这一天是这一年的第几天? 4.本程序演示从键盘输入x的值,计算并打印下列分段函数的值。 y=0(x<60) y=1(60<=x<70) y=2(70<=x<80) y=3(80<=x<90) 1. 以下非法的赋值语句是 A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0; 2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 D: 1 3. 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else printf(“%d”,x++); } 程序运行后,如果从键盘上输人5,则输出结果是()。 A: 3 B: 4 C: 5 D: 6 4. 有如下程序 main0 { int a=2,b=-1,c=2; if(a main() a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是( )。 A: 2,1 B: 3,2 C: 4,3 D: 2,-1 6.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4 7. 能表示x 为偶数的表达式是 A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0 8. 下面的程序段中共出现了几处语法错误? int a,b; scanf("%d",a); b=2a; if(b>0) printf("%b",b); A: 1 B: 2 C: 3 D: 4 9. C 语言中,逻辑“真”等价于 A: 大于零的数 B: 大于零的整数 C: 非零的数 D: 非零的整数 一、填空 1.C语言源程序文件的后缀是 .c 。 2.结构化程序由顺序结构、选择结构、循环结构三种基本结构组成。 3.在C语言中,用关键字 int 定义基本整型变量,一个基本整型变量系统分配 2 字节,用关键字 float定义单精度实型变量,一个单精度实型变量系统分配 4 字节,用关键字 double 定义双精度实型变量,一个双精度实型变量系统分配 8 字节。二、选择 1.以下选项中正确的实型常量是( A ) A.12. B.-20 C. 1,000 D. 4 5 6 2.以下选项中不正确的实型常量是(无正确答案) A. B. C. D. 456e-2 3.以下选项中不合法的用户标示符是( C ) A. _123 B.A12_1 C. A $ D.Dim 4.C语言中运算对象必须是整型的运算符是( A ) A .% B./ C.! D.* 5. 若变量已正确定义并赋值,符合C语言语法的表达式是( B ) A.a=a+7 ; B.a=7+b+c,a++ C. int%4) D.a=a+7=c+b 6.下面合法的赋值语句是( C ) A.a=b=58 B.k=int(a+b) C. a=58,b=58 D.--i 7.若变量已正确定义为int ,要给a,b,c输入数据,正确的输入语句是( D ) A.read(a,b,c) B.scanf(“%d%d%d”,a,b,c) C.scanf(“%D%D%D”,&a,&b,&c) D.scanf(“%d%d%d”,&a,&b,&c) 8.若变量a,b,t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是( C ) A.a=a+b,b=a-b,a=a-b; B. t=a,a=b,b=t; C.a=t;t=b;b=a D.t=b;b=a;a=t; 9.若有正确定义语句: 实验2 选择结构程序设计 一.实验目的: 1.掌握选择控制语句的使用方法; 2.了解C程序语句的执行过程。 二.实验内容: 1.编写程序:输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)。 2.从键盘输入的正整数,判断是否能被5和7同时整除,若是,则输出Yes;否则输出No。 3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。 4.编写程序,对于给定的一个百分比制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E’(用if…else…与switch 语句两种方法实现)。 5. 企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万元到40万元之间时,高于20万元的部分,可提5%;40万元到60万元之间时,高于40万元的部分,可提成3%;60万元到100万元之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求发放奖金总数。 6. 输入某年某月某日,判断这一天是这一年的第几天。 7. 输入一个字符,请判断是字母、数字还是特殊字符。 8. 身高预测: 男性成人身高=(父亲身高+母亲身高)*0.54cm 女性成人身高=(父亲身高*0.923+母亲身高)/2cm 如果喜爱体育锻炼,那么身高可增加2%;如果有良好的饮食习惯,可增加身高1.5%。键盘输入性别、父母身高、是否爱好体育锻炼、是否有良好的饮食习惯,利用给定身高预测方法对你的身高进行预测。 9. 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式。 操作数1 运算符op 操作数2 计算表达式的值。指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 在此基础上,增加如下要求: (1)如果要求程序能进行浮点数运算,程序应该如何修改?如何比较实型变量和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? (3)如果要求连续多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么程序如何进行修改? 第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max C 语言选择结构考试试题 一、选择题(每题2分,共30分) 1. 有如下程序: main () { int x=1,a=0,b=0; switch (x ) { case 0: b++; case 1: a++; case 2: a++;b++; } printf ("a=%d,b=%d \n",a,b );} 该程序的输出结果是 A )a=2,b=1 B )a=1,b=1 C )a=1,b=0 D )a=2,b=2 2. 有以下程序 main () { int i=1,j=1,k=2; if ((j++||k++)&&i++)printf ("%d,%d,%d \n",i,j,k );} 执行后输出结果是 A )1,1,2 B )2,2,1 C )2,2,2 D )2,2,3 3. 有如下程序 main () { float x=2.0,y; if (x<0.0)y=0.0; else if (x<10.0)y=1.0/x; else y=1.0; printf ("%f \n",y );} 该程序的输出结果是 A )0.000000 B )0.250000 C )0.500000 D )1.000000 4. 设int x=1,y=1;表达式(!x||y--)的值是 A )0 B )1 C )2 D )-1 5. 若运行时给变量x 输入12,则以下程序的运行结果是 main (){ int x,y; scanf ("%d",&x ); y=x>12?x+10:x-12; printf ("%d \n",y );} A )0 B )22 C )12 D )10 6. 在C 程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表 第9、10课时 实验一:写出下列程序的运行结果。 1、以下程序的运行结果是:2,-1 #include "stdio.h" main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d",a,b); } 2、以下程序的运行结果是:0,6,0 main() { int a=5,b=6,w=1,x=2,y=3,z=4,c; c=(a=w>x)&&(b=y>z); printf("%d,%d,%d",a,b,c); } 3、设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 4、设有: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、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是B。 if(x>y) z=x; x=y; y=z; A)x=10,y=20,z=30 B)x=20,y=30,z=30 C)x=20,y=30,z=10 D)x=20,y=30,z=20 6、以下if语句语法正确的是B。 A)if(x>0) printf(?%f?,x) else printf(?%f?,-x); B)if(x>0) { x=x+y; printf(?%f?,x); } else printf(?%f?,-x); C)if(x>0) { x=x+y; printf(?%f?,x); }; else printf(?%f?,-x); D)if(x>0) { x=x+y; printf(?%f?,x) } else printf(?%f?,-x); C语言程序设计复习题_选择结构 一、选择 1、判断x ? [a, b] 的表达式为C。 A)x > a && x < b B)x < a && x > b C)x < a || x > b D)x < a, x > b 2、下面的程序段将输出A。 int a = 9, b = 7, c = 3, d = 5, x; x = a > b ? c : d; printf("%d\n", x); A) 3 B) 5 C) 7 D) 9 3、判断x∈ (a, b) 的表达式为B。 A) a < x < b B) a < x && x < b C) a < x || x < b D) a < x, x < b 4、下列语句中,(C)中的if语法是错误的。 A) if(x>y); B) if(x==y) x+y; C) if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y); D) if(x c语言选择结构试题 带答案 一、选择题 1. 以下非法的赋值语句是 A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0; 2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 D: 1 3. 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else printf(“%d”,x++); } 程序运行后,如果从键盘上输人5,则输出结果是()。 A: 3 B: 4 C: 5 D: 6 4. 有如下程序 main0 { int a=2,b=-1,c=2; if(a main() { int a,b,c=246; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是( )。 A: 2,1 B: 3,2 C: 4,3 D: 2,-1 6.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4 7. 能表示x 为偶数的表达式是 A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0 8. 下面的程序段中共出现了几处语法错误? int a,b; scanf("%d",a); b=2a; if(b>0) printf("%b",b); A: 1 B: 2 C: 3 D: 4 9. C 语言中,逻辑“真”等价于 A: 大于零的数B: 大于零的整数C: 非零的数D: 非零的整数 10. C 语言的switch 语句中,case 后 A: 只能为常量 B: 只能为常量或常量表达式 C: 可为常量及表达式或有确定值的变量及表达式 D: 可为任何量或表达式 11. 已知int i=10;表达式"20-0<=i<=9"的值是 A: 0 B: 1 C: 19 D: 20 12. 设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&&k 的值为 A: 1 B: 2 C: 3 D: 0 13. 逻辑运算符两侧运算对象的数据类型 A: 只能是0 或1 B: 只能是0 或非0 正数 C: 只能是整型或字符型数据 D: 可以是任何类型的数据 14. 能正确表示“当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) 15. 已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值 C 语言选择结构考试试题 一、选择题(每题2分,共30分) 1. 有如下程序: main () { int x=1,a=0,b=0; switch (x ) { case 0: b++; case 1: a++; case 2: a++;b++; } printf ("a=%d,b=%d \n",a,b );} 该程序的输出结果是 A )a=2,b=1 B )a=1,b=1 C )a=1,b=0 D )a=2,b=2 2. 有以下程序 main () { int i=1,j=1,k=2; if ((j++||k++)&&i++) printf ("%d,%d,%d \n",i,j,k );} 执行后输出结果是 A )1,1,2 B )2,2,1 C )2,2,2 D )2,2,3 3. 有如下程序 main () { float x=2.0,y; if (x<0.0)y=0.0; else if (x<10.0)y=1.0/x; else y=1.0; printf ("%f \n",y );} 该程序的输出结果是 A )0.000000 B )0.250000 C )0.500000 D )1.000000 4. 设int x=1,y=1;表达式(!x||y--)的值是 A )0 B )1 C )2 D )-1 5. 若运行时给变量x 输入12,则以下程序的运行结果是 main () { int x,y; scanf ("%d",&x ); y=x>12?x+10:x-12; printf ("%d \n",y );} A )0 B )22 C )12 D )10 6. 在C 程序中,判逻辑值时,用“非0”表示逻辑值“真”, 又用“0”表示逻辑值“假”。 在求逻辑值时,用()表示逻辑表达式值为“真”, 又用()表示逻辑表达式值为“假”。 A )1 0 B )0 1 C )非0 非0 D )1 1 7. 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后 a<=25&&b--<=2&&c?printf ("***a=%d,b=%d,c=%d \n",a,b,c ):printf ("###a=%d,b=%d,c=%d \n",a,b,c );程序输出的结果是 A )***a=25,b=13,c=19 B )***a=26,b=14,c=19 C )### a=25,b=13,c=19 D )### a=25,b=14,c=19 8. 有如下程序 main () { float x=2.0,y; if (x<0.0)y=0.0; else if (x>10.0)y=1.0/x; else y=1.0; printf ("%f \n",y );} 该程序的输出结果是 A )0.000000 B )0.250000 C )0.500000 D )1.000000 9. 以下4个选项中,不能看做一条语句的是 A ); B )a=5,b=2.5,c=3.6; C )if (a<5); D )if (b!=5)x=2;y=6; 10. 能正确表示逻辑关系:“a ≥10或a ≤0”的C 语言表达式是 A )a>=10 or a<=0 B )a>=0|a<=10 C )a>=10 &&a<=0 D )a>=10‖a<=0 11. 有如下程序 main () { int a=2,b=-1,c=2; if (a 选择结构 1.if形式 if(表达式)语句;表达式值为非0时,执行语句,否则什么也不做 2.if-else形式 if(表达式)语句1;表达式值为非0时,执行语句1,否则执行语句2。 else 语句2;if自动结合一条语句,多条时应用大括号括起来。 一个if结合一个else。 3.if-else形式 if(表达式) 语句1;在使用嵌套时,else总是如if(x>=0) else if(表达式2)语句2;和它上面最接近的if配对。if(x>0) a=1;········else a=2 else语句else if(x<-2) a=3 else a=4 4.switch语句 switch(表达式) {case常量1:语句1;break;所取常量不同,若无常量n与表达式值对应则执行·····default。若无break择继续执行下一条语句直至遇到case 常量n:语句n;break;break。break只跳出自己所在的那层switch,若有 continue,也是跳出自己所在的那层switch。 循环结构程序设计 1.while语句(先判断,再执行) While(表达式)注意while(表达式)后无分号,先判断,再执行。表达式同if 循环体;可以为任何类型的表达式,其值为逻辑“1”时执行循环体。 While结构常用于循环次数不固定的循环 2.do-while语句(先执行,再判断) Do do-while表达式后必须加“;” {循环体;do-while与while相互转换时,注意修改循环控制的条件。 }while(表达式); 3.for语句 for(初始表达式1;条件表达式2;循环表达式3) {循环体;} 三个表达式均可以是逗号表达式 三个表达式都可以省略,但是分号不可省略 【表达式1省略,需在循环前对i赋值】【表达式2省略循环将无终止进行】 【表达式3省略应在循环体中加入如“i++”之类的累加器。】 【三个表达式均省略相当于while(1)的循环体】 4.break语句和continue语句 break;可用于结束break所在的switch语句,或者结束当前循环,跳出break所在的循环结构 continue;continue语句可以结束本次循环,即不再执行循环体中的continue语句之后的 如果c为字符型变量,判断c是否为空格不能使用________。 A) if(c=='32') B) if(c==32) C) if(c=='\40') D) if(c==' ') 运行下面程序时,若从键盘输入"456 选择结构程序设计复习题 一.选择题 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、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for (j=0;j<4;j++){...} A) 20 B) 25 C) 24 D) 30 A for(i=0,j=10;i<=j;i++,j--) k=i+j; 2、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 A) 12 B) 10 C) 11 D) 9 B 3、当执行以下程序段时 x=-1; do { x=x*x;} while( !x); A) 循环体将执行一次 B) 循环体将执行两次 C) 循环体将执行无限次 D) 系统将提示有语法错误 A 4、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())=='e') printf("*"); A) 5 B) 4 C) 6 D) 1 B 5、有以下程序段 int k=0; while (k=1) k++; while循环执行的次数是 A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行一次 A 6、语句while(!e);中的条件!e 等价于( )。 A) e==0 B) e!=1 C) e!=0 D) ~e A 7、以下for循环是( )。 for(x=0,y=0;(y!=123) && (x<4);x++) A) 无限循环B) 循环次数不定 C) 执行4次D) 执行3次 C 8、C语言中while 和do-while 循环的主要区别是( )。 A) do-while的循环体至少无条件执行一次 B) while 的循环控制条件比do-while 的循环控制条件严格 C语言循环结构练习题带 答案 Prepared on 21 November 2021 第5章循环结构程序设计 5.1基本知识点 while语句的使用格式和注意事项 do-while语句的使用格式和注意事项 for语句的使用格式和注意事项 break和continue语句在循环语句中的应用 循环结构的嵌套 使用goto语句实现循环结构 穷举法程序设计方法 迭代程序设计方法 5.2练习题5 1.单项选择题 (1)语句while(!e);中的条件!e等价于A。 A.e==0 B.e!=1 C.e!=0 D.~e (2)下面有关for循环的正确描述是D。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中D。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 (6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C.k=0; do { ++k; }while(k<=0); D.s=3379; while(s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while(a) { if(b)continue; c; } A.while(a) B.while(c) {if(!b)c;} {if(!b)break;c;} C.while(c) D.while(a) {if(b)c;} {if(b)break;c;} (8)以下程序的输出结果是_B___。 #include 《数据结构与算法》复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i C语言概述 1.以下叙述中错误的是()。 A) 使用三种基本结构构成的程序只能解决简单问题 B) 结构化程序由顺序、分支、循环三种基本结构组成 C) C语言是一种结构化程序设计语言 D) 结构化程序设计提倡模块化的设计方法 【解析】使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A)错误。 2以下关于结构化程序设计的叙述中正确的是 A) 结构化程序使用goto语句会很便捷 B) 在C语言中,程序的模块化是利用函数实现的 C) 一个结构化程序必须同时由顺序、分支、循环三种结构组成 D) 由三种基本结构构成的程序只能解决小规模的问题 【解析】滥用goto语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误?一个结构化程序可以包含顺序?分支?循环结构中的一种或多种,所以C错误?由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误? 3. 以下选项中关于程序模块化的叙述错误的是 A) 可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 B) 把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块 C) 把程序分成若干相对独立的模块,可便于编码和调试 D) 可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序 【解析】程序模块化思想中,可以采用自顶向下?逐步细化的方法?所以选项A中"自底向上"的说法是错误的? 4.关于算法,以下叙述中错误的是 A) 某个算法可能会没有输入 B) 某个算法可能会没有输入 C) 一个算法对于某个输入的循环次数是可以事先估计出来的 D) 任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕 【解析】算法的特征:①有穷性?一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成?②确定性?算法中的每一步都有确切的含义?③可行性?算法中的操作能够用已经实现的基本运算执行有限次来实现?④输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件?⑤输出:一个算法有一个或者多个输出,以反映出数据加工的结果?所以选择D选项? 5. C语言程序的模块化通过以下哪个选项来实现 A) 变量 B) 函数 C) 程序行 D) 语句 【解析】C语言程序的模块化通过函数来体现,所以选择B? 6.以下不能用于描述算法的是 A) 文字叙述 B) 程序语句 C) 伪代码和流程图 D) E-R图c语言第五章 选择结构程序设计(习题册答案)
C语言 选择结构程序设计练习题
c语言选择结构试题带答案
C语言期中测试题(含答案)
C语言选择结构程序设计编程题.doc
c语言第4章 选择结构程序设计习题答案
C语言选择结构考试试题
C语言选择结构题(含答案)
C语言复习题选择结构
c语言选择结构试题带答案教案资料
C语言选择结构考试考试试题
C语言选择结构总结
C语言选择结构选择题
C语言第五章选择结构复习题
C语言循环结构选择题(新)
C语言循环结构练习题带答案
数据结构c语言版期末考试复习试题
二级C语言习题 (自动保存的)