z:
x));}
9.以下叙述正确的是(D)
A. do-while语句构成的循环不能用其他语句构成的循环代替.
B. do-while语句构成的循环只能用break语句退出
C. 用do-while语句构成循环时,只有在while后的表达式为非零时结束循环
D. 用do-while语句构成循环时,只有在while后的表达式为零时结束循环
10.在定义一个结构体变量时,系统分配给它的内存是(D)。
A.结构体中第一个成员所需内存量
B.结构体中最后一个成员所需内存量
C.成员中占内存量最大者所需容量
D.各成员所需内存量的总和
11.若有下列定义,则对a数组元素地址的正确引用是(C).
inta[5],*p=a;
A.*(p+5)B.*p+2
C.*(a+2)D.*&a[5]
12.下列定义不正确的是(C)。
A.#definePI3.141592B.#defineS345
C.intmax(x,y);intx,y;{}D.staticcharc;
13.在C语言中,形参的缺省存储类是(A)。
A.autoB.register
C.staticD.extern
14.以下函数调用语句中实参的个数是(A).
exce((v1,v2),(v3,v4,v5),v6);
A.3B.4C.5D.6
15.以下描述中,正确的是(C)
A.预处理是指完成宏替换和文件包含中指定的文件的调用
B.预处理指令只能位于C源文件的开始
C.C源程序中凡是行首以#标识的控制行都是预处理指令
D.预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备
16.以下字符中不是转义字符的是(C)
A.\aB.\bC.\cD.\\
17.C语言程序中必须有的函数是(B)
A.#include"stdio.h"B.main
C.printfD.scanf
18.有定义:
inta=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为( B )
A.1.4 B.1 C.2.0 D.2
19.以下程序的输出结果是(D)
A.i=2,,j=1,k=3B.i=1,,j=1,k=2 C.i=4,,j=2,k=4 D.i=1,j=1,k=3
#include
main()
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;
j=a++;k=b;
printf("i=%d,j=%d,k=%d\n",i,j,k);
}
20.下列选项中正确的语句组是(D)。
A.chars[8];s={"Beijing"};
B.char*s;s={"Beijing"};
C.chars[8];s="Beijing";
D.char*s;s="Beijing";
21.若已定义x为int类型变量,下列语句中说
明指针变量p的正确语句是( C ).
A.intp=&x; B.int*p=x; C.int*p=&x; D.*p=*x;
22.sizeof(float)是( C ).
A.一种函数调用 B.一个不合法的表达式
C.一个整型表达式 D.一个浮点表达式
23.已知year为整型变量,不能使表达式(year%4==0&&year%100!
=0)||year%400==0的值为"真"的数据是( A ).
A.1990 B.1992 C.1996 D.2000
24.下面有关for循环的正确描述是(D)
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
25.在位运算中,操作数每右移一位,其结果相当于( B ).
A.操作数乘以2 B.操作数除以2
C.操作数乘以16 D.操作数除以16
26.以下能对二维数组a进行正确初始化的语句是( B )。
A.inta[2][]={{1,0,1},{5,2,3}};
B.inta[][3]={{1,2,3},{4,5,6}};
C.inta[2][4]={{1,2,3},{4,5},{6}};
D.inta[][3]={{1,0,1}{},{1,1}};
27.C语言中的文件的存储方式有( C )。
A.只能顺序存取 B.只能随机存取(或直接存取)
C.可以顺序存取,也可随机存取 D.只能从文件的开头进行存取
28.以下只有在使用时才为该类型变量分配内存的存储类说明是( B )。
A.auto和staticB.auto和register
C.register和staticD.extern和register
29.关于return语句,下列正确的说法是(C).
A.在主函数和其他函数中均可出现 B.必须在每个函数中出现
C.可以在同一个函数中出现多次 D.只能在除主函数之外的函数中出现一次
30.以下叙述中不正确的是( C ).
A.预处理命令行都必须以#号开始
B.在程序中凡是以#号开始的语句行都是预处理命令行
C.C程序在执行过程中对预处理命令行进行处理
D.以下是正确的宏定义#define IBM_PC
31.一个C语言程序是由(C)组成的。
A.主程序 B.子程序 C.函数 D.过程
32.判断char型变量c1是否为小写字母的最简单且正确的表达式为(D)。
A.'a'<=c1<='z' B.(c1>=a)&&(c1<=z)
C.('a'<=c1)||('z'>=c1) D.(c1>='a')&&(c1<='z')
33.为了判断两个字符串s1和s2是否相等,应当使用(D)。
A.if(s1==s2) B.if(s1=s2)
C.if(strcpy(s1,s2)) D.if(strcmp(s1,s2)==0)
34.设a,b都是int型变量,则表达式:
(a=2,b=5,a>b?
a++:
b++,a+b)的值为(B)。
A.7 B.8 C.9 D.2
35.设x、y和t均为int型变量,则以下语句:
t=x;x=y;y=t;的功能是(D)。
A.把x和y按从大到小排列 B.把x和y按从小到大排列
C.无确定结果 D.交换x和y中的值
36.下面标识符中,合法的用户标识符为(D)。
A.P#Ad B.12a C.char D._int
37.循环语句while(!
E);中的表达式!
E等价于(C)。
A.E!
=0 B.E!
=1 C.E==0 D.E==1
38.设有以下语句,则(A)不是对a数组元素的正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9};
int *p=a;
供选择的答案是:
A.a[p-5] B.*(&a[i])
C.p[i] D.*(a+i)
39.若用数组名作为函数调用的实参,传递给形参的是 (A)。
A.数组的首地址 B.数组第一个元素的值
C.数组中全部元素的值 D.数组元素的个数
40.在一个文件中定义的全局变量的作用域为(D)。
A.本程序的全部范围; B.本文件的全部范围;
C.函数内的全部范围; D.从定义该变量的位置开始到文件结束。
41.以下语句中,指针s所指字符串的长度为(A)。
char*s=”\\Hello\tWorld\n”;
A.13 B.12 C.14 D.10
42.若调用一个函数,且此函数中没有return语句,则正确的说法是:
该函数(D)。
A.没有返回值 B.返回若干个系统默认值
C.能返回一个用户所希望的函数值 D.返回一个不确定的值
43.以下只有在使用时才为该类型变量分配内存的存储类说明是( B )。
A.auto和staticB.auto和register
C.register和staticD.extern和register
44.关于return语句,下列正确的说法是(C).
A.在主函数和其他函数中均可出现 B.必须在每个函数中出现
C.可以在同一个函数中出现多次 D.只能在除主函数之外的函数中出现一次
45.设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为(B)。
structstudent
{ charname[20];
intage;
charsex;
}stu[5],*p;
p=stu;
A.scanf("%s",stu[0].name); B.scanf("%d",p->age);
C.scanf("%c",&(p->sex)); D.scanf("%d",&stu[0].age);
46.若x、y、j和k都是int型变量,则计算表达式x=(k=32,j=6,i=4)后,x的值为(C)。
A.4B.16C.32D.52
47.C语言中标识符只能由字母、数字和下划线组成,且第一个字符(B)。
A.必须为字母B.必须为字母或下划线
C.必须为下划线D.可以是字母、数字和下划线中任一种字符
48.在C语言中,引用数组元素时,其数组下
标的数据类型允许是(C)。
A.整型常量B.整型表达式
C.整型常量或整型表达式D.任何类型的表达式
49.执行下列语句后的输出为(A)。
intj=-1;
if(j<=1)printf("****\n");
elseprintf("%%%%\n");
A.****B.%%%%C.%%%%cD.有错,执行不正确
50.以下各选项企图说明一种新的类型名,其中正确的是(C)。
A.typedefv1int;B.typedefv2=int;
C.typedefintv3;D.typedefv4:
int;
51.先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是(A).
A.c='a';B.c="a";C.c="97";D.C='97'
52.用户定义的函数不可以调用的函数是(C)。
A.非整型返回值的 B.本文件外的
C.main函数 D.本函数下面定义的
53.与实际参数为实型数组名相对应的形式参数不可以定义为( C ).
A.floata[]; B.float*a; C.floata; D.float(*a)[3];
54.下列程序段的输出结果为( C ).
inta=7,b=9,t;
t=a*=a>b?
a:
b;
printf("%d",t);
A.7 B.9 C.63 D.49
55.若有int*p=(int*)malloc(sizeof(int));则向内存申请到内存空间存入整数123的语句为( A )。
A.scanf("%d",p); B.scanf("%d",&p); C.scanf("%d",*p); D.scanf("%d",**p);
56.以下描述中正确的是( C ).
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D.do-while循环中,根据情况可以省略while
57.在位运算中,操作数每左移一位,其结果相当于( A )。
A.操作数乘以2 B.操作数除以2
C.操作数除以4 D.操作数乘以4
58.以下只有在使用时才为该类型变量分配内存的存储类说明是( B )。
A.auto和staticB.auto和register
C.register和staticD.extern和register
59.若chara[10];已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是(D).
A.gets(a);B.scanf("%s",a);
C.for(i=0;i<10;i++)a[i]=getchar();D.a=getchar();
60.设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为(B)。
structstudent
{ charname[20];
intage;
charsex;
}stu[5],*p;
p=stu;
A.scanf("%s",stu[0].name); B.scanf("%d",p->age);
C.scanf("%c",&(p->sex)); D.scanf("%d",&stu[0].age);
61.以下标识符中,不能作为合法的C用户定义标识符的是(C).
A.answerB.toC.signedD._if
62.以下数组定义中不正确的是(D).
A.inta[2][3];B.intb[][3]={0,1,2,3};
C.intc[100][100]={0};D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
63.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为(D)。
A.floatB.charC.intD.double
64.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是(B)。
A.8B.23C.17D.6
65.以下正确的说法是:
在C语言中(A).
A:
实参和与其对应的形参各占用独立的存储单元
B:
实参和与其对应的形参共占用一个存储单元
C:
只有当实参和与其对应的形参同名时才共占用存储单元
D:
形参是虚拟的,不占用存储单元
66.经过以下语句定义后,表达式z+=x>y?
++x:
++y的值为(C).
intx=1,y=2,z=3;
A.2B.3C.6D.5
67.若有说明:
inta[][4]={0,0};则下面不正确的叙述是( D ).
A.数组a的每个元素都可得到初值0 B.二维数组a的第一维大小为1
C.因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1
D.有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
68.以下对枚举类型名的定义中正确的是( B )。
A.enuma={sum,mon,tue}; B.enuma{sum=9,mon=-1,tue};
C.enuma={"sum","mon","tue"}; D.enuma{"sum","mon","tue"};
69.putchar函数可以向终端输出一个( D )。
A.整型变量表达式值 B.实型变量值
C.字符串 D.字符或字符型变量值
70.在定义一个结构体变量时,系统分配给它的内存是(D)。
A.结构体中第一个成员所需内存量
B.结构体中最后一个成员所需内存量
C.成员中占内存量