二级C语言分类模拟题572 下载本文

二级C语言分类模拟题572

(总分:42.50,做题时间:90分钟)

一、选择题(总题数:30,分数:42.50)

1.以下程序段中,与其他三个功能不同的程序段是______。 (分数:1.00)

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++);

解析:[解析] B、C、D选项都表示对1到10进行累加后赋给s,而A中含break语句,循环体只执行一次,结束整个循环过程,因此答案为A选项。 2.以下选项中非法的表达式是 (分数:1.00) A.0<=x<100 B.i=j= =0 C.(char)(65+3) D.x+1=x+1 √

解析:[解析] 选项D中将表达式的值赋给表达式,在c语言中是不允许给表达式赋值的。 3.有以下程序: #include<stdio.h> main() {

int sum,pad,pAd; sum=pad=5;

pAd=++sum,pAd++,++pad; printf(\}

程序运行后的输出结果是______。 (分数:1.00) A.5 B.6 √ C.7 D.8

解析:[解析] 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(\}

程序运行后的输出结果是______。 (分数:1.00) A.12 B.11 C.10 √

D.9

解析:[解析] 考查简单的C语言程序,题目中x=011;而输出函数中++x,说明是先加1,所以为10,答案选择C。

5.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是______。 (分数:1.00) A.下划线 B.大写字母 C.数字字符 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(\}

程序运行后的输出结果是______。 (分数:2.50) A.0 √ B.2 C.1 D.3

解析:[解析] (!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(\k=fun(j, m); printf(\}

执行后的输出结果是______。 (分数:2.00) A.5, 11 √ B.5, 5 C.11, 11 D.11, 5

解析:[解析] 声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数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.以下语句中存在语法错误的是______。 (分数:2.00)

A.char ss[6][20];ss[1]=\; √ B.char ss[][20]={\; C.char*ss[6];ss[1]=\; D.char*ss[]={\;

解析:[解析] 数组赋值时需要用{}表示出来,故选项A错误。 9.有以下程序: #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(\}

程序运行后的输出结果是______。 (分数:2.50) A.10 B.30 C.0 D.64 √

解析:[解析] 在本题中,静态局部变量x在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次循环s的值为2,在第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以s的值为64。 10.有下列程序: main() { int x=5; do

{printf(\while(!(--x)); }

程序的输出结果是( )。 (分数:1.00) A.1 B.20 C.1 4 √ D.死循环

解析:[解析] 本题考查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(\