2012年计算机等级二级C语言考前预测试卷及答案(4)

全国等级考试资料网 2019-01-23 14:14:15 202
 一、单项选择题
1.对if语句中表达式的类型,下面正确的描述是【 】。
A) 必须是关系表达式
B) 必须是关系表达式或逻辑表达式
C) 必须是关系表达式或算术表达式
D) 可以是任意表达式
分析:C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。
本题正确答案为D。
2.多重if_else语句嵌套使用时,寻找与else配套的if方法是【 】。
A) 缩排位置相同的if
B) 其上最近的if
C) 下面最近的if
D) 同行上的if
分析:多重if_else嵌套时,else总是与它上面最近的if配对。
本题正确答案为B。
3.以下错误的if语句是【 】。
A) if(x>y) z=x;
B) if(x==y) z=0;
C) if(x!=y) printf("%d",x) else printf("%d",y);
D) if(x分析:选项C)中的第一个printf语句后面丢了分号,所以是错误的。
本题正确答案为C。
4.以下判断两个字符串相等的正确方法是【 】。
A) if(str1=str2)
B) if(str1==str2)
C) if(strcpy(str1,str2)=0)
D) if(strcmp(str1,str2)==0)
分析:选项A)中用了赋值号,显然是错误的,选项C)中的字符串拷贝函数strcpy不能比较大小,选项B)中的"=="号也不具有串比较功能,比较两个字符串的大小应用字符串比较函数。
本题正确答案为D。
5.执行下面程序的正确结果是【 】。
main( )
{ float a=1.9;
switch(a)
{ case 0: printf("0000");
case 1: printf("1111");
case 2: printf("2222");
}
printf("%f",a);
}
A) 1.900000
B) 111122221.900000
C) 22221.900000
D) 0000111122221.900000
分析:题中定义了单精度实数a,所以最下面的printf语句输出有6位小数,另外C语言在判断switch表达式的值时,是按整型数据处理的(但不4舍5入),所以程序是从case 1处开始执行的,因没有break语句,接着会执行case 2。
本题正确答案为B。
6.以下程序的输出为【 】。
main( )
{ int a=20,b=30,c=40;
if(a>b) a=b,
b=c;c=a;
printf("a=%d,b=%d,c=%d",a,b,c);
}
A) a=20,b=30,c=20
B) a=20,b=40,c=20
C) a=30,b=40,c=20
D) a=30,b=40,c=30
分析:题中的"a=b , b=c;"是一个语句书写在了两行,因a>b为假,所此句不执行,又"c=a"与if语句无关,总要执行,故a,b值不变,c值为20。
本题正确答案为A。
7.对于条件表达式(k)?(i++):(i--)来说,其中的表达式k等价于【 】。
A) k==0 B) k==1 C) k!=0 D) k!=1
分析:因为条件表达式e1?e2:e3的含义是e1为真时,取表达式e2的值,否则取表达式e3的值,"为真"的意思就是不等于0。
本题正确答案为C。
8.执行下面的程序后,输出为【 】。
main( )
{ int m=20;
swith(m)
{ case 19: m+=1;
case 20: m+=1;
case 21: m+=1;
case 22: m+=1;
}
printf("%dn",m); }
A) 20 B) 21 C) 22 D) 23
分析:因无break控制语句,程序会从case 20开始连续执行后面的各个case语句,最后结果是m=23。
本题正确答案为D。
9.下面程序运行结果为【 】。
main( )
{ char c=′a′;
if(′a′elseprintf("UP");
}
A) LOW B) UP C) LOWUP D) 语句错误,编译不能通过
分析:关系运算符“<”和“<=”的优先级相同,计算顺序是从左向右,求解表达式′a′本题正确答案为A。首页 1 2 尾页 相关资料

相关阅读