一.练习试题
1.请问以下代码执行的结果是多少()
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void){
for (int i = 0; i < 10; i++){
if (i = 5){
printf("%d\n",i);
}
}
system("pause");
return 0;
}
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
答案:C,这里需要注意for循环声明并变量i并给其赋值(i=0)当i<10的时候进入循环,执行完循环内语句后对变量i进行自增,直到变量i的值不再满足入口条件,不再进入循环,分析完for语句的表达式部分我们再来看一下for语句中的语句部分,这里我们看到了if语句里面的表达式为 i=5 但注意i=5为赋值语句而不是判断语句,如果要对变量i的值进行判断则应该使用 i==5 所以这就导致了变量i无论为何值,每次都会被重新初始化,导致程序进入死循环,如图所示:
2.关于if语句说法正确的是()
A.if语句后面只能跟一个语句
B.if语句中0表示假1表示真
C.if语句是一种分支语句,既可实现单分支也可实现多分支
D.else语句总是与最近的if语句像匹配
答案:C,A选项中if语句后面既可以跟随一个语句也可以跟随多个语句,但是跟随多个语句的时候需要用大括号括起来,B选项中0表示假没有问题但是1表示真就太过于绝对,C语言中非零值才表示真,不仅仅是1,D选项则是错误最明显的,else语句遵循就近原则,会就近与if语句进行匹配
3.关于switch语句说法错误的一项是
A.switch语句中default语句可以放在任意位置
B.switch语句中case子句只能是整型常量表达式
C.switch语句中case语句必须在default语句之前
D.switch语句中case语句不要求顺序
答案:C,switch语句中case语句与default语句都没有顺序要求但是我们一般将case语句写在default语句之前
4.观察以下代码计算出func(1)的值()
int func(int a)
{
int b;
switch(a){
case 1: b = 30;
case 2: b = 20;
case 3: b = 10;
default b = 0;
}
return b;
}
A. 30
B. 20
C. 10
D. 0
答案:D,原因是当a=1的时候进入switch执行case 1: b= 30;的后面未添加break语句这就导致程序会一直执行下去直到执行完成default语句,这时候b的值为0,所以最终的结果为0
5.在switch(var)中var的数据类型不能是以下哪一种()
A.int
B.short int
C.long
D.double
答案:D,switch语句中表达式部分只能是整型变量或者常量,而double(与float)为浮点型,所以不满足条件,故选择D
2023/7/27
王起舟