一、单选题(共 30 道试题,共 60 分。)V 1. 若有说明int a[3][4];则a数组元素的非法引用是()。
A. a[0][2*1]
B. a[1][3]
C. a[4-2][0]
D. a[0][4]
满分:2 分
2. 函数rewind的作用是()。
A. 使位置指针重新返回文件的开头
B. 将位置指针指向文件中所要求的特定位置
C. 使位置指针指向文件的末尾
D. 使位置指针自动移至下一个字符位置
满分:2 分
3. 结构体类型的定义允许嵌套是指()。
A. 成员是已经或正在定义的结构体型
B. 成员可以重名
C. 结构体型可以派生
D. 定义多个结构体型
满分:2 分
4. 下面有关for循环的正确描述是()。
A. for循环只能用于循环次数已经确定的情况
B. for循环是先执行循环循环体语句,后判断表达式
C. 在for循环中,不能用break语句跳出循环体
D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
满分:2 分
5. C语言中,定义结构体的保留字是()。
A. union
B. struct
C. enum
D. typedef
满分:2 分
6. 以下运算符中,优先级最高的运算符是()。
A. ||
B. %
C. !
D. ==
满分:2 分
7. 以下叙述中错误的是()。
A. 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B. 在程序结束时,应当用fclose函数关闭已打开的文件
C. 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D. 不可以用FILE定义指向二进制文件的文件指针
满分:2 分
8. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。
A. 地址传递
B. 单向值传递
C. 由实参传给形参,再由形参传回实参
D. 传递方式由用户指定
满分:2 分
9. 若k为int型变量,则以下程序段的执行结果是()。k=-8567;printf("|%06D|\n",k);
A. 格式描述符不合法,输出无定值
B. 输出为|%06D|
C. 输出为|0-8567|
D. 输出为|-8567|
满分:2 分
10. 要打开A盘上user子目录下名为ab##txt的文本文件进行读、写操作,下面符合此要求的函数调用是()。
A. fopen(" \user\ab
B. txt","r")
C. fopen(" \\user\\ab
D. txt","r+")
E. fopen(" \user\ab
F. txt","rb")
G. fopen(" \\user\\ab
H. txt","w")
满分:2 分
11. 下列程序的输出结果为()。main(){int m=7,n=4;floata=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf("%f\n",x);}
A. 27.000000
B. 27.500000
C. 28.000000
D. 28.500000
满分:2 分
12. 在C语言中,char型数据在内存中的存储形式是()。
A. 补码
B. 反码
C. 原码
D. ASCII码
满分:2 分
13. 若有int a[][]={{1,2},{3,4}};则*(a+1),*(*a+1)的含义分别为()。
A. 非法,2
B. &a[1][0],2
C. &a[0][1],3
D. a[0][0],4
满分:2 分
14. 若使用一维数组名作函数实参,则以下正确的说法是()。
A. 必须在主调函数中说明此数组的大小
B. 实参数组类型与形参数组类型可以不匹配
C. 在被调用函数中,不需要考虑形参数组的大小
D. 实参数组名与形参数组名必须一致
满分:2 分
15. 若有int i=3,*p;p=&i;下列语句中输出结果为3的是()。
A. printf("%d",&p);
B. printf("%d",*i);
C. printf("%d",*p);
D. printf("%d",p);
满分:2 分
16. 设有说明.char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为()。
A. float
B. char
C. int
D. double
满分:2 分
17. 关于建立函数的目的,以下正确的说法是()。
A. 提高程序的执行效率
B. 提高程序的可读性
C. 减少程序的篇幅
D. 减少程序文件所占内存
满分:2 分
18. 若执行fopen函数时发生错误,则函数的返回值是()。
A. 地址值
B. 0
C. 1
D. EOF
满分:2 分
19. C语言中,要求运算数必须是整型的运算符是()。
A. ^
B. %
C. !
D. >
满分:2 分
20. 设int x=1,y=1;表达式(!x||y--)的值是()。
A. 0
B. 1
C. 2
D. -1
满分:2 分
21. 应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A. fclose()
B. close()
C. fread()
D. fwrite
满分:2 分
22. 以下叙述中正确的是()。
A. 在程序的一行上可以出现多个有效的预处理命令行
B. 使用带参的宏时,参数的类型应与宏定义时的一致
C. 宏替换不占用运行时间,只占编译时间
D. 在以下定义中CR是称为"宏名"的标识符#defineCR045
满分:2 分
23. 经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是()。
A. p=p+2;
B. p=a[5];
C. p=a[2]+2;
D. p=&(j+2);
满分:2 分
24. 以下标识符中,不能作为合法的C用户定义标识符的是()。
A. putchar
B. _double
C. _123
D. INT
满分:2 分
25. 下列程序段的输出结果为()。Int x=3,y=2;printf("%d",(x-=y,x*=y+8/5));
A. 1
B. 7
C. 3
D. 5
满分:2 分
26. 执行以下程序段后,输出结果和a的值是()。Int a=10;printf("%d",a++);
A. 10和10
B. 10和11
C. 11和10
D. 11和11
满分:2 分
27. 以下选项中,与k=n++完全等价的表达式是()。
A. k=n,n=n+1
B. n=n+1,k=n
C. k=++n
D. k+=n+1
满分:2 分
28. 若有说明.int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A. i=*p;
B. *p=*&j;
C. i=&j;
D. i=**p;
满分:2 分
29. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A. 自动(auto)
B. 静态(static)
C. 外部(extern)
D. 寄存器(register)
满分:2 分
30. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。
A. int
B. float
C. double
D. 不确定
满分:2 分二、多选题(共 10 道试题,共 20 分。)V 1. 能正确表示逻辑关系:"a≥10"的C语言表达式是()。
A. a≥10
B. !(a<10)
C. a>=10
D. a<10
满分:2 分
2. 以下叙述中正确的是()。
A. 一个C源程序可由一个或多个函数组成
B. 一个C源程序必须包含一个main()函数
C. C源程序的基本组成单位是函数
D. 在C源程序中,注释说明只能位于一条语句的最后
满分:2 分
3. 在定义int a[2][3];之后,对a的引用正确的有()。
A. a[0][2]
B. a[1,3]
C. a[1>2][!1]
D. a[2][0]
满分:2 分
4. 下面那些为合法整型常量()
A. 190
B. 0xf
C. 0765
D. 0xk
满分:2 分
5. int a[10]={1,2,3,4,5,6,7,8,9,10},以下的赋值语句正确的是()。
A. a[6]=7
B. a[1]=2
C. a[2]=3
D. a[10]=10
满分:2 分
6. t为int类型,进入下面的循环之前,t的值为0do{………}while(t==1);则以下叙述中正确的是()
A. 循环控制表达式的值为0
B. 循环控制表达式的值为1
C. 循环控制表达式合法
D. 以上说法都不对
满分:2 分
7. 定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的有()。
A. 1112<回车>
B. 11,<空格>12<回车>
C. 11,12<回车>
D. 11,<回车>12<回车>
满分:2 分
8. 以下选项中合法的表达式是()。
A. 0<=x<100
B. i=j==0
C. (char)(65+3)
D. x+1=x+1
满分:2 分
9. 以下叙述正确的是()。
A. 预处理命令行都必须以"#"开始
B. 在程序中凡是以"#"开始的语句行都是预处理命令行
C. C程序在执行过程中对预处理命令行进行处理
D. #defineABCD是正确的宏定义
满分:2 分
10. 定义c为字符型变量,则下列语句中错误的是()。
A. c='97';
B. c="97";
C. c=97;
D. c="a";
满分:2 分