admin 管理员组

文章数量: 1087139


2024年4月21日发(作者:profiteering)

C语言模拟考试卷

一、是非题(每小题1分,共5分)

(1)若有说明:int a[][4] ={0,0}; 则二维数组a的第一维大小为1 B

A)对 B)错

(2)判断char型变量cl是否为大写字母的正确表达式是(cl>= 'A')&&(cl<= 'Z')A

A)对 B)错

(3)已知 int a=1,b=-1; 则语句 printf("%dn", (a--, ++b)); 的输出结果是 -1B

A)对 B)错

(4)strcmp函数的功能是字符串的比较A

A)对 B)错

(5)sizeof(float)是一个不合法的表达式B

A)对 B)错

二、单项选择题(每小题3分,共75分)

(1)下列关于C语言用户标识符的叙述中正确的是(A)。

A)用户标识符中可以出现下划线和中划线(减号)

B)用户标识符中不可以出现中划线,但可以出现下划线

C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

(2)下列叙述中正确的是(B)。

A)C语言的函数可以嵌套调用

B)C语言的子程序有过程和函数两种

C)C语言的函数可以嵌套定义

D)C语言编译时不检查语法

(3)以下4个选项中,不能看做一条语句的是(D)。

A); B)a=5,b=2.5,c=3.6;

C)if(a<5); D)if(b!=5)x=2;y=6;

(4)以下程序段的描述,正确的是(C)。

x=-1;

do

{x=x*x;}

while(!x);

A)是死循环

C)循环执行一次

B)循环执行两次

D)有语法错误

(5) 已知char ch=’C’;则以下表达式的值是(D)。

ch=(ch>=’A’ && ch<=’Z’)?(ch+32):ch;

A)A B)a C)Z D)c

(6)执行下面的程序段后,变量k中的值为(A)。

int k=3, s[2];

s[0]=k; k=s[1]*10;

A)不定值 B)33 C)30 D)10

(7)现有如下定义:int a, b, *p, *q;,则下列赋值语句错误的是(D)。

A)p=&a; B)q=&b;

C)p=q; D)p=a;

第 1 页 共 6 页

(8)有如下程序段

int a=14, b=15, x;

char c='A';

x=(a&&b)&&(c<'B');

执行该程序段后,x的值为(D)

A)ture B)false

(9)下列说法中错误的是(A)。

A)只能在循环体内使用break语句

B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C)在while和do…while循环中,continue语句并没有使整个循环终止

D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断

(10)C 语言中,系统的标准输入文件是指(A)。

A)键盘 B)显示器 C)软盘 D)硬盘

(11)执行以下程序后,a,b的值分别为(C)。

main()

{ int a, b, k=4, m=6, *p1=&k, *p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

printf("a=%dn", a);

printf("b=%dn", b);

}

A)-1, 5 B)1, 6 C)0, 7 D)4, 10

C)0 D)1

(12)当顺利执行了文件关闭操作时,fclose函数的返回值是(C)。

A)-1 B)TRUE C)0 D)1

(13)设有数组定义: char array[]="China"; 则数组 array所占的空间为(C)。

A)4个字节 B)5个字节 C)6个字节 D)7个字节

(14)下面四个选项中,均是不合法的用户标识符的选项是(C)。

A)A P_0 do B)float la0 _A

C)b-a goto int D)_123 temp int

(15)以下程序的运行结果是(B)。

#define MIN(x,y)(x)<(y)?(x):(y)

main()

{ int i=10, j=15, k;

k=10*MIN(i,j);

printf("%dn", k);

}

A)10 B)15 C)100 D)150

(16)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为(C)。

A)3,2 B)3,1 C)2,2 D)2,1

(17)下面程序段的运行结果是(C)。

char *p=”abcdefgh”;

p+=3;

printf(”%dn”, strlen(strcpy(p,”ABCD”)));

A)8 B)12 C)4 D)7

(18)以下程序有错,错误原因是(D)。

main()

{ int *p, i; char *q, ch;

p=&i;

q=&ch;

*p=40; *p=*q;

...... }

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句

C)q没有指向具体的存储单元,所以*q没有实际意义

第 2 页 共 6 页

D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

(19)以下叙述中不正确的是(D)。

A)在不同的函数中可以使用相同的名字的变量

B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效

D)在一个函数内的复合语句中定义的变量在本函数范围内有效

(20)有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10};

int *p=&a[3], b; b=p[5];

则b的值是(C)

A)5 B)6 C)9 D)8

(21)C语言中,能识别处理的文件为(B)。

A)文本文件和数据块文件

B)文本文件和二进制文件

C)流文件和文本文件

D)数据文件和二进制文件

(22)下面程序的输出结果是(B)。

main()

{ int a,b; b=(a=3*5,a*4,a*5);

printf("%d",b);}

A)60 B)75 C)65 D)无确定值

(23)以下程序的执行结果是(D)。

Main()

{ int a=2, j;

for(j=0; j<3; j++) printf("%4d", f(a));

}

f(int a)

{ int b=0, static int c=3;

b++; c++;

return(a+b+c);

}

A)7 7 7 B)7 10 13 C)7 9 11 D)7 8

(24)有如下程序段

int *p,a=10,b=1;

p=&a; a=*p+b;

执行该程序段后,a的值为(B)。

A)12 B)11 C)10 D)编译出错

(25)有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;

则数值为9的表达式是(B)。

A)*p+9 B)*(p+8) C)*p+=9 D)p+8

三、读程序写结果(每题2分,共20分)

(1)下面程序的运行结果是: ga

main()

{ char a[]="Language", b[]="Program";

char *p1, *p2;

int k;

p1=a;

p2=b;

for(k=0; k<=7; k++)

if(*(p1+k)==*(p2+k)) printf("%c", *(p1+k));

}

第 3 页 共 6 页

9


本文标签: 语句 函数 文件 标识符 循环