当前位置:   article > 正文

【C语言】if语句选择题

【C语言】if语句选择题

前言

题目一:

题目二:

题目三:

题目四:

题目五:

题目六:

题目七:

题目八:


前言

关于if语句相关的选择题


题目一:

关于if语句说法正确是:( )

A .if语句后面只能跟一条语句

B .if语句中0表示假,1表示真

C .if语句是一种分支语句,可以实现单分支,也可以实现多分支

D .else语句总是和它的对齐的if语句匹配

选择C。

讲解:选项A是错误的,if语句后面不是只能跟一条语句,可以跟多条语句,跟多条语句时,需要用大括号{}进行包裹,跟一条语句时可以省略{}; 选项B的错误的在于后半句,if语句应该为0表示假,非0表示真; 选项D的错误在于else语句是跟离它最近的if进行匹配,不是跟它对齐的if语句进行匹配。


题目二:

下面代码执行的结果是:( )

A .1 2 3 4 5 6 7 8 9 10

B .5 5 5 5 5 5 5 5 5 5

C .死循环的打印5

D .0 1 2 3 4 5 6 7 8 9

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 0;
  5. for (i = 0; i<10; i++)
  6. {
  7. if (i = 5)
  8. printf("%d ", i);
  9. }
  10. return 0;
  11. }

选择C。

讲解:for循环里的if语句中,条件判断语句为i = 5,= 为赋值操作符,因此i的值总是为5,陷入死循环打印5; 这里需要注意赋值 = 与等于 == 之间的区别,对于这种情况,也是往往会出错,我们可以这样写:如想让i等于5打印,可以将变量和常量换个位置,如:5 == i,当写错了,编译器就会进行报错,防止影响后续的逻辑。


题目三:

下面代码的执行结果是什么( )

A .secondthird

B .hello

C .firstsecond

D .hellothird

  1. #include <stdio.h>
  2. int main() {
  3. int x = 3;
  4. int y = 3;
  5. switch (x % 2) {
  6. case 1:
  7. switch (y)
  8. {
  9. case 0:
  10. printf("first");
  11. case 1:
  12. printf("second");
  13. break;
  14. default: printf("hello");
  15. }
  16. case 2:
  17. printf("third");
  18. }
  19. return 0;
  20. }

选择D。

讲解:Switch选择语句有一个易错点,就是case或default后有没有跟break,当没有break时,不会跳出switc语句,会顺延执行下去,直到switch语句结束,因此这道题最外层的switch中的case1后没有break,程序打印完"hello"后又进入case 2中执行。


题目四:

switch(c)语句中,c不可以是什么类型( )

A .int

B .long

C .char

D .float

选择D。

讲解:switch选择语句中,switch(整型表达式/枚举类型),枚举类型中的成员可以用整形进行表示,case 整型常量表达式/枚举常量;我们需要注意:字符类型char本质上也属于整型家族,因为char类型在内存中以ASCll码进行存储,ASCII码本质上是一组整数。枚举类型(enum)在C语言中实际上是一组命名的整数常量。


题目五:

则func(1) = (      )

A .30

B .20

C .16

D .0

  1. int func(int a)
  2. {
  3. int b;
  4. switch (a)
  5. {
  6. case 1: b = 30;
  7. case 2: b = 20;
  8. case 3: b = 16;
  9. default: b = 0;
  10. }
  11. return b;
  12. }

选择D。

讲解:case或default后有没有跟break,当没有break时,不会跳出switc语句,会顺延执行下去,直到switch语句结束。


题目六:

关于switch说法不正确的是:( )

A .switch语句中的default子句可以放在任意位置

B .switch语句中case后的表达式只能是整形常量表达式

C .switch语句中case子句必须在default子句之前

D .switch语句中case表达式不要求顺序

选择C。

讲解:switch语句中对于case子句与default子句摆放位置是不要求的,因为switch语句是根据switch()中()里的为准,进行选择,并不是顺序执行。


题目七:

程序的输出结果是?( )

A .10

B .9

C .8

D .7

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a = 0, b = 0;
  5. for (a = 1, b = 1; a <= 100; a++)
  6. {
  7. if (b >= 20) break;
  8. if (b % 3 == 1)
  9. {
  10. b = b + 3;
  11. continue;
  12. }
  13. b = b-5;
  14. }
  15. printf("%d\n", a);
  16. return 0;
  17. }

选择C。

图解如下:


题目八:

关于while(条件表达式) 循环体,以下叙述正确的是( )? (假设循环体里面没有break,continue,return,goto等等语句)  

A .循环体的执行次数总是比条件表达式的执行次数多一次

B .条件表达式的执行次数总是比循环体的执行次数多一次

C .条件表达式的执行次数与循环体的执行次数一样

D .条件表达式的执行次数与循环体的执行次数无关

选择B。

讲解:

  • 在第一次循环之前,条件表达式 会被执行一次。
  • 对于每一次循环体的执行,之前都会先执行一次 条件表达式
  • 当 条件表达式 的值为假时,循环体不再执行,但 条件表达式 已经被执行了最后一次。

因此,条件表达式 的执行次数总是比循环体的执行次数多一次。这是因为即使循环体一次都不执行(例如,如果初始的 条件表达式 的值就是假),条件表达式 仍然会被执行一次。

注意:其它的循环也是如此,for循环、do...while循环

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/391544
推荐阅读
相关标签
  

闽ICP备14008679号