2012年计算机等级二级C语言考前预测试卷及答案(4)
一、单项选择题 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 尾页 相关资料 |