若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的首地址
30.。
31.若有定义:
doublex[3][5];则数组中列下标的上限为4。
32.若有说明:
inta[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为3。
33.设inta=12,则表达式a/=a+a运算后,a的值是0。
34.设y为int型变量,请写出描述“y是奇数”的表达式y%2!
=0;。
35.设有数组a[10],数组元素a[3]的地址可以写成。
36.数组由数组名和下标构成,其数组元素的数据类型是。
37.算术表达式a=b+3中,a、b称为变量,3称为常量,=、+称为运算符。
38.一个C程序有且仅有一个main函数。
39.已知函数定义为:
intstat(int a,float*p),则此函数的两个参数类型分别是整形、浮点型。
40.有如下函数头:
intmax(inti,intj),则此函数有2个参数。
41.预处理命令以#开头。
42.在C语言的表达式中,x=x+5用复合运算符可以写成x+=5。
43.在C语言中,表示静态存储类别的关键字static。
44.在C语言中,二维数组元素的内存中的存放顺序是行顺序存放。
45.在C语言中,以‘\0’作为字符串结束标志。
46.在C语言中的实型变量分为两种类型,它们是整形和浮点型。
47.在scanf函数中,用符号&表示变量的地址。
48.在传值调用中,实际是把实参的地址传给形参。
49.在函数中使用return语句返回值。
50.指针是存放地址的变量。
二、选择
1、C语言源程序的基本单位是A
A.函数B.标识符C.表达式D.语句
2、在每个C程序中都必须包含有这样一个函数,该函数的函数名为A
A.main B.MAIN C.name D.function
3、C语言规定,在一个源程序中,main函数的位置C
A.必须在最开始B.必须在系统调用的库函数的后面
C.可以任意D.必须在最后
4、在以下关于C语言的注释的叙述中,不正确的是C
A.注释可用"/*"、"*/"形式表示,也可用"//"形式表示
B.编译器在编译一个程序时,将跳过注释,不对其进行处理
C.编译器在编译一个程序时,可发现注释中的单词拼写错误
D.程序中注释的多少不会影响所生成的可执行文件的长度
5、以下叙述不正确的是C
A.在C程序中,严格区分大小写字母
B.一个C源程序有且仅有一个main函数
C.在C程序中,注释只能位于一条语句的后面
D.一个C程序总是从main函数开始执行
6、C语言中,表示一条语句结束的标号是B
A.#B.;C.//D.}
7、在C语言中,以下叙述不正确的是A
A)在C程序中,无论是整数还是实数,都能被准确无误的表示
B)在C程序中,变量名代表存储器中的一个位置
C)静态变量的生存期与整个程序的生存期相同
D)C语言中变量必须先定义后引用
8、C语言程序编译过程中产生的文件有B
A.索引文件和文本文件两种B.目标文件和可执行文件
C.二进制文件一种D.ASCII码文件和二进制文件两种
9、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符C
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)可以是字母,数字或下划线中的任意一种
10、C语言中非空的基本数据类型包括B
A)整型,实型,逻辑型B)整型,实型,字符型
C)整型,字符型,逻辑型D)整型,实型,逻辑型,字符型
11、下列哪一个表达式的值是整数类型A
A.15/2B.15/2+2.0C.25/5.0D.0.5*10
12、设变量a是整形,f是实型,i是双精度型,则表达式10+′a′+i*f值的数据类型C
A.intB.floatC.doubleD.不确定
13、设有说明:
charw;intx;floaty;doublez;则表达式:
w*x+z-y值的数据类型D
A)floatB)charC)intD)double
14、在C语言中,char型数据在内存中的存储形式是D
A.补码B.反码C.源码D.ASCII码
15、下列字符列中,可以作为“字符串常量”的是B
A.ABCB.″xyz″C.′uvw′D.′a′
16、以下运算符中,优先级最高的运算符是D
A.=B.!
=C.*(乘号)D.()
17、设有定义intk=0;则以下四个表达式中与其它三个的值不同的是CD
A、k++B、k+=1
C、++kD、k+1
18、设有语句scanf(“%d,%d”,&m,&n);要使m、n的值依次为2,3,正确的输入是B
A.2⊔3↙B.2,3↙C.2;3D.2↙3↙
19、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后c2中的值为A
A)DB)68C)不确定的值D)C
20、设a=6,b=4,则表达式b*=a+3的值为D
A)3B)18C)27D)36
21、若有定义:
inta=8,b=5,c;执行语句c=a/b+0.4;后c的值为B
(A)1.4(B)1(C)2.0(D)2
22、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是C
A)5.5B)5C)3D)4.0
23、设有以下语句:
intx=10;x+=3+x%(3),则x的值是A
A)14B)15C)11D)12
24、在C语言中逻辑值“真”是用B表示的。
A.预定义为真值的宏B.非零值C.正数D.非零整数
25.C语言对于嵌套if语句规定else总是与C匹配。
A)与最外层的ifB.)与之前最近的if
C)与之前最近的不带else的ifD)与最近的{}之前的if
26、为了避免嵌套的if-else语句的二义性,C语言规定else总是与C组成配对关系.
A)缩排位置相同的ifB)在其之前未配对的if
C)在其之前尚未配对的最近的ifD)同一行上的if
27、设x和y均为逻辑型变量,则x&&y为真的条件是A
A.它们均为真 B.其中一个为真
C.它们均为假 D.其中一个为假
28、能正确表示逻辑关系:
"a≥10或a≤0"的C语言表达式是D
A.a>=10ora<=0B.a>=0|a<=10
C.a>=10&&a<=0D.a>=10||a<=0
29、判断char型变量c1是否为小写字母的正确表达式为D
A.’a’<=c1<=’z’B.(c1>=a)&&(c1<=z)
C.(‘a’>=c1)(‘z’<=c1)D.(c1>=’a’)&&(c1<=’z’)
30、设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?
ch+32:
ch的值是B
A)ZB)aC)zD)A
31、表示关系X<=Y<=Z的C语言表达式为A
A.(X<=Y)&&(Y<=Z)B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z)D.(X<=Y)&(Y<=Z)
32、如果a=4,b=3,c=2,d=1,则条件表达式a<b?
a:
c<d?
c:
d的值是A
A)1B)2C)3D)4
33、语句printf("%d\n",12&&12);的输出结果是B
A.12B.1C.24D.0
34、若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是B
A.(exp==0)B.(exp!
=0)C.(exp==1)D.(exp!
=1)
35、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式D
A)a<>0B)!
aC)a=0D)a
36、设x、y、z、t均为int型变量,则执行以下语句后,t的值为C
x=y=z=1;
t=++x||++y&&++z;
A)不定值B)4C)1D)0
37、对表达式for(表达式1;;表达式3)可理解为B
A.)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)
38、语句while(!
e);中的条件!
e等价于A
A)e==0B)e!
=1C)e!
=0D)~e
39、下面程序段的运行结果是D
for(i=1;i<=5;)
printf("%d",i);
i++;
A)12345B)1234C)15D)无限循环
40、设执行变量y值为3,执行下列循环语句后,变量y的值是C
doy++;while(y++<4);
(A)3(B)4(C)5(D)6
41、执行语句:
for(i=1;i<9;i++)后;变量i的值是B
(A)10(B)9(C)不定(D)11
42、执行语句:
for(i=1;i<=9;i++);后变量i的值是A
A.10B.9C.不定 D.11
43、在定义一个一维数组时,不能用来表示数组长度的是D
A)常量B)符号常量C)常量表达式D)已被赋值的变量
44、判断字符串是否相等,应当使用D
(A)if(a==b)(B)if(a=b)(C)if(strcpy(a,b))(D)if(!
strcmp(a,b))
45、执行程序段charstr[20]={'a','b','c','\0'};intlen=strlen(str);变量len的值C
A.20B.4C.3D.3或4或20
46、若有说明:
charc[10]={'E','a','s','t','\0'};,则下述说法中正确的是D
A)c[7]不可引用B)c[6]可引用,但值不确定
C)c[4]不可引用D)c[4]可引用,其值为空字符
47、运行下面程序段的输出结果是A
chars1[10]={'S','e','t','\0','u','p','\0'};
printf("%s",s1);
A)SetB)SetupC)SetupD)'S''e''t'
48、以下程序段的输出结果是B
chars[]="anapple";
printf("%d\n",strlen(s));
A)7B)8C)9D)10
49、下列一维数组初始化语句中,正确且与语句floata[]={0,3,8,0,9};等价的是D
A)floata[6]={0,3,8,0,9};B)floata[4]={0,3,8,0,9};
C)floata[7]={0,3,8,0,9};D)floata[5]={0,3,8,0,9};
50、如有定义语句inta[]={1,8,2,8,3,8,4,8,5,8};,则数组a的大小是A
A)10B)11C)8D)不定
51、若二维数组a有m列,则在a[i][j]前面的元素个数为B
A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1
52、在定义inta[5][6];后,数组a中的第10个元素是C
A)a[2][5]B)a[2][4]C)a[1][3]D)a[1][5]
53、以下二维数组a的正确说明是C
A)inta[1,1]; B)floata(3,4);C)doublea[1][4]; D)floata(3)(4);
54、在定义inta[5][4];之后,对a的引用正确的是C
A)a[2][4]B)a[1,3]C)a[4][3]D)a[5][0]
55、若有说明:
inta[3][4];则对a数组元素的正确引用是C
(A)a[2][4](B)a[1,3](C)a[1+1][0](D)a
(2)
(1)
56、以下对二维数组a的正确说明是C
A.inta[3][]B.floata(3,4)C.doublea[1][4]D.floata(3)(4)
57、若有定义:
intb[3];则数组元素的不合法引用是D
(A)b[1](B)b[0](C)b[2](D)b[3]
58、对以下说明语句inta[10]={6,7,8,9,10};的正确理解是B
A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确
59、设已定义:
intx[2][4]={1,2,3,4,5,6,7,8};则元素x[1][1]的正确初值是A
A.6B.5C.7D.1
60、在inta[][3]={{1},{3,2},{4,5,6},{0}}中a[1][1]的值是D
A、0B、6C、5D、2
61、设已定义:
intx[2][4]={1,2,3,4,5,6,7,8};则元素6对应的是A
A.x[1][1]B.x[1][2]C.x[2][1]D.x[2][2]
62、以下正确的函数定义形式是A
A.doublefun(intx,inty)B.doublefun(intx;inty)
C.doublefun(intx,inty);D.doublefun(intx,y);
63、有如下函数调用语句func(rec1,rec2+rec3,rec4,rec5);该函数调用语句中,含有的实参个数是B
A)3B)4C)5D)有语法错误
64、在C语言中,全局变量的存储类别是A
A)staticB)externC)voidD)register
65、在C语言中,以下说法中正确的是A
A.实参与其对应的形参各占用独立的存储单元
B.实参与其对应的形参占用同一个存储单元
C.只有当实参与形参同名时才占用同一个存储单元
D.实参占用存储单元,但形参是虚拟的,不占用存储单元
66、C语言中,简单变量做实参时,它和对应的形参之间的数据传递方式是B
(A)地址传递 (B)单向值传递
(C)由实参传给形参,再由形参传递给实参
(D)同用户指定传递方式
67、在一个源文件中定义的全局变量的作用域为B
A.本文件的全部范围B.从定义该变量开始至本文件结束
C.本函数的全部范围D.本程序的全部范围
68、如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量C
A)为全局变量,在本程序文件范围内有效
B)为局部变量,只在该函数内有效
C)为局部变量,只在该复合语句中有效
D)定义无效,为非法变量
69、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是D
A)实参将其地址传递给形参,并释放原先占用的存储单元
B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C)实参将其值传递给形参,调用结束时形参再将其值回传给实参
D)实参将其值传递给形参,调用结束时形参并不将其值回传给实参
70、以下叙述中,不正确的是B
A)在同一C程序文件中,不同函数中可以使用同名变量
B)在main函数体内定义的变量是全局变量
C)形参是局部变量,函数调用完成即失去意义
D)若同一文件中全局变量和局部变量同名,则全局变量在局部变量作用范围内不起作用
71、对于C语言的函数,下列叙述中正确的是A
A)函数的定义不能嵌套,但函数调用可以嵌套
B)函数的定义可以嵌套,但函数调用不能嵌套
C)函数的定义和调用都不能嵌套
D)函数的定义和调用都可以嵌套
72、数组定义为:
inta[4][5];引用“a[1]+3”表示的是A
(A)a数组第2行第4列元素的地址
(B)a数组第2行第4列元素的值
(C)a数组第4行的首地址
(D)a数组第1行第3个元素的地址
73、若定义:
inta=511,*b=&a;则printf("%d\n",*b);的输出结果为D
A.确定值B)a的地址C)512D)511
74、若有inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=a;则值为9的表达式是B
A.*p+9B.*(p+8)C.*p+=9D.p+8
75、若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A。
A)scanf("%d%d%d",&a,&b,d);B)scanf("%d%d%d",&a,&b,&d);
C)scanf("%d%d%d",a,b,d);D)scanf("%d%d%d",a,b,*d);
76、设有语句”inta[]={1,3,5,7,9},*p=&a[0];”则值为7的表达式是C
A.*p+3B.*p+4C.*(p+3)D.*(p+4)
77、已知赋值语句wang.year=2004;则wang的变量类型是C
A.字符或文件B.整型或实型C.共用或结构D.实型或指针
78、设有以下说明语句:
structstu
{inta;floatb;}stutype;
则下面的叙述不正确的是C
A.struct是结构体类型的关键字
B.structstu是用户定义的结构体类型名
C.stutype是用户定义的结构体类型名
D.a和b都是结构体成员名
79、下列关于结构的语法错误的是D
A.结构是由用户自定义的一种数据类型
B.结构中可设定若干个不同数据类型的成员
C.结构中成员的数据类型可以是另一个已定义的结构
D.在定义结构时,可以为成员设置默认值
80、说明一个结构体变量时,系统分配给它的内存是A
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
三、程序理解
1.以下程序运行结果是
#include
intmain()
{inta,b,c,d;
a=b=5;
c=(a++)+(a--)-(a++);
d=(b++)-(++b)+(--a);
printf("a=%d,b=%d\n",a,b);
printf("c=%d,d=%d\n",c,d);
return0;
}
2.以下程序运行结果是
#include
intmain()
{intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
b=++a;
case2:
a++;b++;break;
case3:
++a;++b;
}
printf("a=%d,b=%d\n",a,b);
return0;
}
3.以下程序运行结果是
#include
intmain()
{inta,b,c=246;
a=c/100%9;
b=
(1)&&(-1)||0;
printf("%d,%d\n",a,b);
return0;
}
4.以下程序运行结果是
#include
intmain()
{inta=-1,b=4,k;
k=(++a<=0)&&(b--<=0);
printf("%d,%d,%d\n",k,a,b);
return