二级C语言分类模拟题572
(总分42.5, 做题时间90分钟)
选择题
1.
以下程序段中,与其他三个功能不同的程序段是______。
A s=0;i=1;for(; ;){s+=i; i++; if(i<=10)break;}
B s=0,i=1;for(; i<=10;) {s+=i, i++; }
C s=0;for(i=1;i<=10; i++) {s+=i;}
D for(s=0,i=1;i<=10; s+=i,i++);
分值: 1
答案:A
[解析] B、C、D选项都表示对1到10进行累加后赋给s,而A中含break语句,循环体只执行一次,结束整个循环过程,因此答案为A选项。
2.
以下选项中非法的表达式是
A 0<=x<100
B i=j= =0
C (char)(65+3)
D x+1=x+1
分值: 1
答案:D
[解析] 选项D中将表达式的值赋给表达式,在c语言中是不允许给表达式赋值的。
3.
有以下程序:
#include<stdio.h>
main()
{
int sum,pad,pAd;
sum=pad=5;
pAd=++sum,pAd++,++pad;
printf("%d\n",pad);
}
程序运行后的输出结果是______。
#include<stdio.h>
main()
{
int sum,pad,pAd;
sum=pad=5;
pAd=++sum,pAd++,++pad;
printf("%d\n",pad);
}
程序运行后的输出结果是______。
A 5
字符串长度超出定义值B 6
C 7
D 8
分值: 1
答案:B
[解析] C语言区分大小写,pad与pAd是两个不同的变量。首先将5赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=+ +sum,此时pAd为6,sum也为6,然后计算pAd+ +,pAd的值变为7,+ +pad,pad的值变为6,所以选择B选项。
4.
有以下程序:
# include <stdio.h>
main()
{ int x=011;
printf("%d\n",++x);
}
程序运行后的输出结果是______。
main()
{ int x=011;
printf("%d\n",++x);
}
程序运行后的输出结果是______。
A 12
B 11
C 10
D 9
分值: 1
答案:C
[解析] 考查简单的C语言程序,题目中x=011;而输出函数中++x,说明是先加1,所以为10,答案选择C。
5.
按照C语言规定的用户标识符命名规则,不能出现在标识符中的是______。
A 下划线
B 大写字母
C 数字字符
D 连接符
分值: 1
答案:D
[解析] C语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。因此D选项中的连接符不合法。
6.
有以下程序
#include<stdio.h>
main()
{ int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf("%d\n",y);
}
#include<stdio.h>
main()
{ int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf("%d\n",y);
}
程序运行后的输出结果是______。
A 0
B 2
C 1
D 3
分值: 2.5
答案:A
[解析] (!x)为假,然后判断(x==0),为假,最后就执行输出语句,y的值仍为初始值,答案选择A。
7.
有以下程序
#include<stdio.h>
int fun(int x, int y)
{ static int m=0, i=2;
i+=m+1; m=i+x+y; return m;
}
main()
{int j=1, m=1, k;
k=fun(j, m); printf("%d", k);
k=fun(j, m); printf("%d\n", k);
}
执行后的输出结果是______。
#include<stdio.h>
int fun(int x, int y)
{ static int m=0, i=2;
i+=m+1; m=i+x+y; return m;
}
main()
{int j=1, m=1, k;
k=fun(j, m); printf("%d", k);
k=fun(j, m); printf("%d\n", k);
}
执行后的输出结果是______。
A 5, 11
B 5, 5
C 11, 11
D 11, 5
分值: 2
答案:A
[解析] 声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数fun中的变量i和m均为静态局部变量。因此第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,m的值已经是5了,所以执行i+=m+1,i的值变为9,m=i+x+y=9+1+1=11。故本题答案为A。
8.
以下语句中存在语法错误的是______。
A char ss[6][20];ss[1]="right?";
B char ss[][20]={"right?"};
C char*ss[6];ss[1]="right?";
D char*ss[]={"right?"};
分值: 2
答案:A
[解析] 数组赋值时需要用{}表示出来,故选项A错误。
9.
有以下程序:
#include <stdio.h>
int fun()
#include <stdio.h>
int fun()
{ static int x=1;
x*=2;
return x;
}
main( )
{ int i,s=1;
for(i=1; i<=3; i+ +) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是______。
x*=2;
return x;
}
main( )
{ int i,s=1;
for(i=1; i<=3; i+ +) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是______。
A 10
B 30
C 0
D 64
分值: 2.5
答案:D
[解析] 在本题中,静态局部变量x在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次循环s的值为2,在第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以s的值为64。
10.
有下列程序:
main()
{ int x=5;
do
{printf("%d",x-=4);}
while(!(--x));
main()
{ int x=5;
do
{printf("%d",x-=4);}
while(!(--x));
}
程序的输出结果是( )。
程序的输出结果是( )。
A 1
B 20
C 1 4
D 死循环
分值: 1
答案:C
[解析] 本题考查do…while循环。①执行printf语句,x=x-4 1,输出1,判断while循环的控制条件,--x=0,则(!(--x))非零,循环条件成立,执行下一次循环;②执行printf语句,x=x-4=-4,
输出-4,判断while循环的控制条件,--x=-5,则(!(--x))为零,循环条件不成立,结束循环。
11.
有以下程序:
#include<stdio.h>
main()
{unsigned char a=2, b=4, c=5, d;
d=a | b;d&=c; printf("%d\n",d);}
程序运行后的输出结果是______。
#include<stdio.h>
main()
{unsigned char a=2, b=4, c=5, d;
d=a | b;d&=c; printf("%d\n",d);}
程序运行后的输出结果是______。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论