国家二级C语言机试(选择题)模拟试卷567
公共基础选择题
1.有以下程序:
#include
main( )
{int y=10;
while(y--);
printf("y=%d\n",y);
}
程序运行后的输出结果是( )。(B)
A. y=0
B. y=-1
C. y=1
D. while构成无限循环
解析:执行“y--”直到值为0,退出循环。由于“y--”是后缀自减运算,先使用再自减,因此退出循环时,y的值为-1。故本题答案为B选项。
2.有以下程序:
#include
main( )
{
int k=5;
while(--k)
printf("%d",k-=3);
printf("\n");
}
程序运行后的输出结果是( )。(A)
A. 1
B. 2
C. 4
D. 死循环
解析:“--k”是先自减再使用,所以第1次判断条件即while(4),条件为真,输出k的值,k=4-3,结果为1;第2次判断条件即while(0),条件为假,结束循环,输出回车换行符。故本题答案为A选项。
3.有以下函数:
int aaa(char *s)
{
char*t=s:
while(*t++);
t--;
return(t-s);
}
以下关于aaa函数功能叙述中正确的是( )。(C)
A. 将字符串s复制到字符串t
B. 比较两个字符串的大小
C. 求字符串s的长度
D. 求字符串s所占字节数
解析:本题重点考查的知识点是while循环语句的应用。aaa函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。当t指向字符串结束标识处时,由于后缀“++”运算符,它还会被再递增1,因此“t--;”语句让它回到字符串结束标识处。最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度。故本题答案为C选项。
4.在以下给出的表达式中,与“while(E)”中的“(E)”不等价的表达式是( )。(B)
A. (E>0||E<0)
B. (E==0)
C. (!E==0)
D. (E!=0)
解析:while语句中条件表达式E的值不为0即真,认为满足条件,这与B选项中表达式的含义正好相反。故本题答案为B选项。
5.以下不构成无限循环的语句或语句组的是( )。
A
解析:A选项中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D选项中for语句第2个表达式为空,所以没有判断条件,进入死循环。故本题答案为A选项。
6.若变量已正确定义,有以下程序段“i=0;do printf("%d,",i);while(i++);printf("%d\n",i);”,程序段的运行结果是( )。(A)
A. 0,1
B. 0,0
C. 1,1
D. 程序进入无限循环
解析:第1次首先执行循环体,输出i的值为0,然后判断while的条件“i++”,因为“i++”是后缀自增运算,先使用后自增,所以判断时条件为假,跳出循环,但是仍执行了i的自增操作,i的值为1,在接下来的printf语句中进行输出。故本题答案为A选项。
7.以下程序段中的变量已正确定义:
for(i=0;i<<4;i++,i++)
for(k=1;k<3;k++);
printf("*");
程序段的运行结果是( )。(C)
A. **
B. * * * *
C. *
D. * * * * * * * *
解析:因为内层循环“for(k=1;k<3;k++)”后面直接跟了空语句“;”,所以在循环内部什么操作也不做,跳出外层循环后执行printf语句,输出一个“*”。故本题答案为C选项。
8.有以下程序:
#include
main( )
{
int y=9;
for(;y>0;y--)
if(y%3==0)
printf("%d",--y);
}
程序的运行结果是( )。(A)
A. 852
B. 963
C. 741
D. 875421
解析:第1次for循环,y的值为9,“y%3”的值为0,满足if条件,输出“--y”,即先自减后输出,所以输出8;第2次for循环,y的值为7,“y%3”的值为1,不满足if条件,不执行printf语句;第3次for循环,y的值为6,“y%3”的值为0,满足if条件,输出“--y”,即先自减后输出,所以输出5;第4次for循环,y的值为4,不满足if条件,不执行printf语句;第5次for循环,y的值为3,满足if条件,输出2;第6次for循环,y的值为1,不满足if条件,不执行printf语句。故本题答案为A选项。
9.有以下程序:
#include
main( )
{
int a=1,b=2;
for(;a<8;a++)
{
b+=a:
a+=2:
}
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是( )。(D)
A. 9,18
B. 8,11
C. 7,11
D. 10,14
解析:第1次循环,a的值为1,满足条件,执行“b+=a;”与“a+=2;”,则b的值变为3,a的值变为3。执行“a++”,a的值为4,满足条件,进入第2次循环,执行完循环体后,b的值为7,a的值为6。执行“a++”,a的值为7,满足条件,进入第3次循环,执行完循环体后,b的值为14,a的值为9。执行“a++”,a的值为10,条件不满足,退出循环。故本题答案为D选项。
10.有以下程序:
#include
main( )
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,
本文档预览:3600字符,共12082字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载