全国高校联合计算机等级考试广西考区
非计算机专业学生计算机水平考试(二级C语言)模拟试卷1
(本试卷包括第一卷和第二卷,答卷时间总共120分钟)
第一卷
说明:(1)第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。
(2)答本卷的题目时,要在标准答题纸上编号对应的栏目中,用铅笔将正确答案涂黑。在试题上直接勾划者步得分。
(3)本卷共70分,其中第1~26题每题2分,第27~32每题3分。
第一部分:基础知识(20题,共40分)
(1) 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为 。 A) 1.4 B) 1 C) 2.0 D) 2 (2) 若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是 。 A)a的值是字符C B) a的值是浮点型
C)不允许字符型和浮点型相加
D) a的值是字符‘A’的ASCII值加上1。
(3) 不合法的main函数命令行参数表示形式是 。 A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
(4) 以下选项中不属于C语言的类型的是 。 A) signed short int B) unsigned long int C) unsigned int D) long short (5) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是 。
A)scanf(\ B)scanf(\C)scanf(\ D)scanf(\
(6) 在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是 。 A) a=20000+20000; B) a=4000*10; C) a=30000+10000; D) a=4000L*10L; (7) 以下叙述正确的是 。
A) 可以把define和if定义为用户标识符
B) 可以把define定义为用户标识符,但不能把if定义为用户标识符 C) 可以把if定义为用户标识符,但不能把define定义为用户标识符 D) define和if都不能定义为用户标识符
(8) 若定义:int a=511,*b=&a;, 则printf(\的输出结果为 。 A) 无确定值 B) a的地址 C) 512 D) 511
(9) 以下程序的输出结果是 。 main()
{ int a=5,b=4,c=6,d;
printf(\} A) 5 B) 4 C) 6 D) 不确定 (10) 以下程序中,while循环的循环次数是 。 main() { int i=0; while(i<10)
{ if(i<1) continue;
if(i==5) break; i++; } }
A) 1 B) 10
C) 6 D) 死循环,不能确定次数 (11)设有以下说明语句 typedef struct { int n; char ch[8]; }PER;
则下面叙述中正确的是 。 A) PER 是结构体变量名 B) PER是结构体类型名 C) typedef struct 是结构体类型 D) struct 是结构体类型名 (12) 若有以下程序 #include
{ void f(int n); f(5); }
void f(int n)
{ printf(\ }
则以下叙述中不正确的是 。
A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C) 对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明 D) 函数f无返回值,所以可用void将其类型定义为无值型 (13) 若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s;
则对s数组元素的正确引用形式是 。
A) ps+1 B) *(ps+3) C) ps[0][2] D) *(ps+1)+3 (14) 在C语言中,形参的缺省存储类是 。
1
A) auto B) register C) static D) extern
(15) 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是 。 A) p=2*(int*)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int)); C) p=(int*)malloc(2*2);
D) p=(int*)calloc(2,sizeof(int));
(16) 在说明语句:int *f();中,标识符f代表的是 。 A) 一个用于指向整型数据的指针变量 B) 一个用于指向一维数组的行指针 C) 一个用于指向函数的指针变量 D) 一个返回值为指针型的函数名
(17) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是 。
A)fopen(\B)fopen(\C)fopen(\ D)fopen(\
(18) 以下不能正确进行字符串赋初值的语句是 。 A)char str[5]=\ B) char str[]=\C)char *str=\
D) char str[5]={‘g',‘o',‘o',‘d'}; (19) 若有下面的说明和定义: struct test
{ int ml; char m2; float m3; union uu {char ul[5]; int u2[2];} ua; } myaa;
则sizeof(struct test )的值是 。 A) 12 B) 16 C) 14 D) 9(13) (20) 若有定义:int aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是 。 A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1
第二部分:简单程序(12题,共30分)
(21) 以下程序的输出结果是 。 main()
{ int a=4,b=5,c=0,d; d=!a&&!b||!c; printf(\}
A) 1 B) 0 C) 非0的数 D) -1 (22) 以下程序的输出结果是 。 main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++)
2
for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf(\}
A) 3 B) 4 C) 1 D) 9 (23) 以下程序的输出结果是 。 #include
{ char b1[8]=\
while (--pb>=b1) strcpy(b2,pb); //循环3次,最后一次把“abcdefg”拷给b2。 printf(\} A) 8 B) 3 C) 1 D) 7 (24) 以下程序的输出结果是 。 f(int b[],int m,int n) { int i,s=0;
for(i=m;i main() {int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf(\} A) 10 B) 18 C) 8 D) 15 (25) 以下程序的输出结果是 。 main() { char ch[3][5]={\printf(\} A) \ B) \ C) \ D) \(26) 以下程序的输出结果是 。 main() { int a=0,i; for(i=1;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf(\} 3 A) 31 B) 13 C) 10 (27) 以下程序的输出结果是 。 #include { int i=0,a=0; while(i<20) { for(;;) { if((i)==0) break; else i--; } i+=11; a+=i; } printf(\} A) 21 B) 32 C) 33 (28) 以下程序的输出结果是 。 char cchar(char ch) { if(ch>=‘A’&&ch<=‘Z') ch=ch-‘A'+‘a'; return ch; } main() { char s[]=\while(*p) { *p=cchar(*p); p++; } printf(\} A) abc+ABC=DEFdef B) abc+abc=defdef C) abcaABCDEFdef D) abcabcdefdef (29) 以下程序的输出结果是 。 int f() { static int i=0; int s=1; s+=i; i++; return s; } main() { int i,a=0; for(i=0;i<5;i++) a+=f(); printf(\} A) 20 B) 24 C) 25 4 D) 20 D) 11 D) 15