前言
题目一:
题目二:
题目三:
题目四:
题目五:
题目六:
题目七:
题目八:
前言
关于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
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i<10; i++)
{
if (i = 5)
printf("%d ", i);
}
return 0;
}
选择C。
讲解:for循环里的if语句中,条件判断语句为i = 5,= 为赋值操作符,因此i的值总是为5,陷入死循环打印5; 这里需要注意赋值 = 与等于 == 之间的区别,对于这种情况,也是往往会出错,我们可以这样写:如想让i等于5打印,可以将变量和常量换个位置,如:5 == i,当写错了,编译器就会进行报错,防止影响后续的逻辑。
题目三:
下面代码的执行结果是什么( )
A .secondthird
B .hello
C .firstsecond
D .hellothird
#include <stdio.h>
int main() {
int x = 3;
int y = 3;
switch (x % 2) {
case 1:
switch (y)
{
case 0:
printf("first");
case 1:
printf("second");
break;
default: printf("hello");
}
case 2:
printf("third");
}
return 0;
}
选择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码本质上是一组整数。
题目五:
则func(1) = ( )
A .30
B .20
C .16
D .0
int func(int a)
{
int b;
switch (a)
{
case 1: b = 30;
case 2: b = 20;
case 3: b = 16;
default: b = 0;
}
return b;
}
选择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
#include <stdio.h>
int main()
{
int a = 0, b = 0;
for (a = 1, b = 1; a <= 100; a++)
{
if (b >= 20) break;
if (b % 3 == 1)
{
b = b + 3;
continue;
}
b = b-5;
}
printf("%d\n", a);
return 0;
}
选择C。
图解如下:
题目八:
关于while(条件表达式) 循环体,以下叙述正确的是( )? (假设循环体里面没有break,continue,return,goto等等语句)
A .循环体的执行次数总是比条件表达式的执行次数多一次
B .条件表达式的执行次数总是比循环体的执行次数多一次
C .条件表达式的执行次数与循环体的执行次数一样
D .条件表达式的执行次数与循环体的执行次数无关
选择B。
讲解:
- 在第一次循环之前,
条件表达式
会被执行一次。- 对于每一次循环体的执行,之前都会先执行一次
条件表达式
。- 当
条件表达式
的值为假时,循环体不再执行,但条件表达式
已经被执行了最后一次。因此,
条件表达式
的执行次数总是比循环体的执行次数多一次。这是因为即使循环体一次都不执行(例如,如果初始的条件表达式
的值就是假),条件表达式
仍然会被执行一次。注意:其它的循环也是如此,for循环、do...while循环