2011年计算机等级二级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。
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("%d\\n",m); }
A) 20 B) 21 C) 22 D) 23
分析:因无break控制语句,程序会从case 20开始连续执行后面的各个case语句,最后结果是m=23。
本题正确答案为D。
9.下面程序运行结果为【 】。
main( )
{ char c=′a′;
if(′a′
}
A) LOW B) UP C) LOWUP D) 语句错误,编译不能通过
分析:关系运算符“<”和“<=”的优先级相同,计算顺序是从左向右,求解表达式′a′
10.对下述程序,正确的判断是【 】。
main( )
{ int a,b;
scanf ("%d,%d",&a,&b);
if(a>b)a=b; b=a;
elsea++; b++;
printf("%d,%d",a,b); }
A) 有语法错误不能通过编译
B) 若输入4,5则输出5,6
C) 若输入5,4则输出4,5
D) 若输入5,4则输出5,5
分析:不管if语句中的条件真假,它只能执行一个语句,要想根据条件执行多个语句,应写成复合语句,程序中if和else的后面都有两个语句,违反了这一点。
本题正确答案为A。
11.分析以下程序,结论是【 】。
main( )
{ int x=5,a=0,b=0;
if(x=a+b) printf("****\\n");
elseprintf("####\\n");
}
A) 有语法错,不能通过编译
B) 能通过编译,但不能连接
C) 输出****
D) 输出 ####
分析:if语句中的判别式可以是赋值表达式,题中if(x=a+b)的含义是,先把a+b的值赋给x,再判断x的值是否为0。
本题正确答案为D。
12.对下面的程序,正确的说法是【 】。
main( )
{ int a,b=1,c=2;
a=b+c,a+b,c+3;
c=(c)?a++:b--;
printf("c=%d/n",(a+b,c)); }
A) 无错误 B) 第三行有错误 C) 第四行有错误 D) 第五行有错误
分析:第三行是由逗号表达式组成的语句,第四行是由条件表达式组成的语句,第五行printf语句的输出项为逗号表达式,本题没有语法错误。
本题正确答案为A。
13.执行下面的程序时,输入abc
#include
#include
main( )
{ char ch;
while((ch=getchar( ))!=′\\n′)
{ switch(ch-′a′)
{ case 0: putchar(ch+1);
case 1: putchar(ch+1);break;
case 2: putchar(ch+2);
case 3: putchar(ch+2);break;
}
}
}
A) abc B) bbc C) abcd D) bbcee
分析:用getchar函数输入数据,接收的是ASCII码,当输入为a时对应执行case 0和case 1处的语句,当输入为b时,执行case 1处的语句,当输入为c时,对应执行case 2和case 3处的语句。
本题正确答案为D。
二、填空题
1.下面程序的输出结果是-11,请填空。
main( )
{ int x=100,a=200,b=50;
int v1=25,v2=20;
if(a if(b!=50)
if(!v1)
x=11;
else if(v2)
x=12;
x=【1】;
printf("%d",x);
}
分析:此题属于if语句的嵌套应用,因第一个if语句的条件就为假,所以后面的if语句都没有被执行,只执行了x=【1】;一句。
本题正确答案为 【1】-11。
2.执行下面程序时,若从键盘上输入8,则输出为9,请填空。
main( )
{ int x;
scanf("%d",&x);
if(【2】>8)
printf("%d\\n",++x);
else printf("%d\\n",x--);
}
分析:在【2】处不能为大于8的数,否则要执行printf("%d\\n",++x);语句,使输出值大于9,if语句的条件表达式中应有一个先用后增1的变量x,才能在输入x为8时,执行else后面的语句:printf("%d\\n",x--);输出9。
本题正确答案为 【2】 x++。
3.执行下面程序时输出为1,请填空。
main( )
{ int a=4,b=3,c=2,d=1;
printf("%d\\n",(a }
分析:因为a 本题正确答案为 【3】d或1。
4.执行以下程序后的输出结果为a=【4】,b=【5】。
main( )
{ int k=1,m=0;
int a=10,b=10;
switch(k)
{ case 1: switch(m)
{ case 0: a+=1;break;
case 1: b++ ;break;
}
case 2: a++;b++;break;
case 3: a++;b++;
}
printf("\\na=%d,b=%d",a,b);
}
分析:此题概念是考查switch语句的嵌套应用,switch语句的特点是在没有遇到break语句时,要连续执行后面的case语句,本程序的执行路线是外部switch的case 1→内部switch的case 0→外部switch的case 2。
本题正确答案为 【4】12 【5】11。
5.根据下式填空,将程序补充完整。 y=-1.0(x<0.0)
2.0/(x-1.0)(0.0
{ float x,y;
scanf("%f",&x);
if(【6】)
y=-1.0;
else if((【7】)&&(x!=1))
y=2.0/(x-1.0);
else if(【8】)
y=3.0/x;
else
y=4.0;
printf("%f/n",y); }
分析:本题可根据已知的分段函数式中x与y之间的关系和条件判断语句if的先后顺序,将x的值按从小到大进行判断填空。
本题正确答案为 【6】 x<0.0 【7】 x<10.0 【8】 x<20.0。
编辑推荐:
一、2010年全国计算机二级C语言考试题型分析
二、2010年全国计算机二级C语言考试教材及出题比例
三、2010年全国计算机二级C语言考试教材各章的特点及学习方法
四、2010年全国计算机二级C语言考试答题策略及技巧
五、2010全国计算机等级考试二级C编程时常犯的错误
六、2010年全国计算机二级C语言考试就业方向和就业前景