C语言程序设计复习题及答案Word下载.docx
《C语言程序设计复习题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题及答案Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
A.floatB.charC.itnD.double.
14.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是().
A.scanf(“%d%d1x,%1e”,&
x,&
y,&
z);
B.scanf(“%2d*%d%1f”,&
C.scanf(“%x%*d%o”,&
Y);
D.scanf(“%x%o%6.2f”,&
15.以下说法正确的是().
A.输入项可以为一个实型常量,如scanf(“%f”,3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&
f);
D.当输入数据时,必须指明变量的地址,如scanf(“%f”,&
16.以下程序的执行结果是()。
#include<
stdio.h>
main()
{
intsum,pad;
sum=pad=5;
pad=sum++;
pad++;
++pad;
printf("
%d\n"
pad);
}
A.7B.6C.5D.4
17.巳知字母A的ASCII码是65,以下程序的执行结果是()。
charc1='
A'
C2='
Y'
;
printf("
%d,%d\n"
c1,c2);
A.A,YB.65,65C.65,90D.65,89
18.为了避免嵌套的if-else语句的二义性,c语言规定else总是与()组成配对关系。
A.缩排位置相同的if
B.在其之前末配对的if
C.在其之前未配对的最近的if
D.同一行上的if
19.逻辑运算符两侧运算对象的数据类型().
A.能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
20.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是().
A.’x’&
&
’y’
B.x<=y
C.x||y+z&
y-z
D.!
((x<y)&&!
z||1)
21.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是().
A.A%2==1B.!
(A%2==0)C.!
(A%2)D.A%2
22.以下不正确的if语句形式是().
A.if(x>y&
x!
=y);
B.if(x==y)x十=y;
C.if(x!
=y)scanf(“%d”,&
x)e1sescanf(”%d,&
y);
D.if(x<y){x十十;
y十十;
23.以下if语句语法正确的是().
A.if(x>0)
printf(“%f“,x)
elseprintf(“%f”,-x);
B.if(x>0)
{x=x+y;
printf(“%f“,x);
elseprintf(“%f”,-x)
C.if(x>0)
D.if(x>0)
elseprintf(“%f”,-x);
24.阅读以下程序
{inta=5,b=0,c=0;
if(a=b+c)printf(“***\n”);
elseprintf(“$$$\n”);
以上程序().
A.语法有错不能通过编译B.可以通过编译但不能通过连接
C.输出***D.输出$$$
25.以下程序运行结果是().
{inta=100,x=10,y=20,ok1=5,ok2=0;
if(x<
y)
if(y!
=10)
If(!
ok1)
a=1;
else
if(ok2)a=10;
a=-1;
printf(“%d\n”,a);
A.1B.0c.-1D.不确定
26.执行以下程序段后,变量a,b,c得值分别是().
intx=10,y=9;
inta,b,c;
a=(--x==y++)?
–x:
++y;
b=x++;
c=y;
A.a=9,b=9,c=9B.a=8,b=8,c=10
C.a=9,b=10,c=9D.a=1,b=11,c=10
27.若w,x,y,z,m均为int型变量,则执行下面语句后的m值是().
w=1;
x=2;
y=3;
z=4;
m=(w<
x)?
w:
x;
m=(m<
y)?
m:
y;
z)?
z;
A.1B.2C.3D.4
28.语句while(!
e);
中的条件!
e等价于()。
A.e==0B.e!
=1C.e!
=0D.~e
29.下面有关for循环的正确描述是()
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判定表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环体语句中,可以包含多条语句,但要用花括号括起来
30.C语言中while和do-while循环的主要区别是().
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
31.以下程序段().
x=-1;
do{x=x*x;
}while(!
x);
A.是死循环B.循环执行二次
C.循环执行二次D.有语法错误
32.下面程序的运行结果是().
#include<
{inty=10;
do{y--;
}while(--y);
printf(“%d\n”,y--);
A.-1B.1C.8D.0
33.以下正确的描述是().
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
34.c语言中()。
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出
C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环
35.在C语言中,引用数组元素时,其数组下标的数据类型允许是()
A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式
36.在C语言中,一位数组的定义方式为:
类型说明符数组名()。
A.[常量表达]B.整型表达式C.[整型常量]或[整型表达式]D.[整型常量]
37.以下不能对二维整形数组a进行正确初始化的语句是()。
A.inta[2][3]={0};
B.inta[][3]={{1,2},{0}};
C.inta[2][3]={{1,2},{3,4},{5,6}};
D.inta[][3]={1,2,3,4,5,6};
38.若有说明:
inta[][4]={0,0};
则下面正确的叙述是()。
A.数组a中每个元素均可得到初值0
B.二维数组a的第一维大小为1
C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D.只有元素a0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
39.若有说明:
inta[][3]={1,2,3,4,5,6,7};
则a数组第一维的大小是()。
A.2B.3C.4D.无确定值
40.下面程序的运行结果是()。
charc[5]={‘a’,’b’,’\0’,’c’c,’\0’};
printf(“%s”,c);
A.‘a’’b’
B.ab
C.abc
D.ab
41.有两个字符数组a、b,则以下正确的输入语句是()。
gets(a,b);
scanf(“%s%s”,a,b);
scanf(“%s%s”,&
a,&
b);
gets(“a”),gets(“b”);
A.s[j+=]=s[i]B.s[++j]=s[i]
C.s[j]=s[i];
j++D.s[j]=s[i]
42.若使用一维数组名作函数实参,则以下正确的说法是().
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
43.以下正确的说法是().
A.如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效
B.在该函数中有效
C.在本程序范围内均有效
D.非法变量
44.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为().
A.自动(auto)B.静态(static)C.外部(extern)D.
寄存器(register)
45.以下程序的运行结果是()。
#defineMIN(x,y)(x)<
(y)?
(x):
(y)
{inti=10,j+15,k;
k+10*MIN(i,j);
printf(“%d\n”,k);
A.10B.15C.100D.150
46.C语言的编译系统对宏命令的处理是()。
A.在程序运行时进行的
B.在程序连接时进行的
C.和C程序中的其它语句同时进行编译的
D.在对源程序中的其它语句同时进行编译的
47.请读程序
#defineMUL(x,y)(x)*y
{inta=3,b=4,c;
c=MUL(a++,b++);
c);
上面程序的输出结果是()。
A.12B.15C.20D.16
48.以下程序的输出结果为()。
#definePT5.5
#defineS(x)PT*x*x
{inta=1,b=2;
%4.1\n"
S(a+b));
A.12.0B.9.5C.12.5D.33.5
49.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用<
>
括起时,寻找被包含文件的方式是()。
A.仅仅搜索当前目录
B.仅仅搜索源程序所在目录
C.直接按系统设定的标准方式搜索目录
D.先在源程序所在目录搜索,再按系统设定的标准方式搜索
50.以下正确的描述是()。
A.C语言的预处理功能是指定完成宏替换和包含文件的调用
B.预处理指令只能位于C源程序文件的首部
C.凡是C源程序中行首以“#”标识的控制行都是预处理指令
D.C语言的编译预处理就是对源程序进行初步的语法检查
51.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。
A.c=*p1+p2;
B.p2=cC.p1=p2D.c=*p1*(*p2);
52.设有下面的程序段:
chats[]=”china”;
char*p;
p=s;
则下列叙述正确的是()。
A.s和p完全相同
B.数组s中的内容和指针变量p中的内容相等
C.s数组长度和p所指向的字符串长度相等
D.*p与s[0]相等
53.下面程序的运行结果是()。
#include<
string.h>
main()
{
char*p1,*p2,str[50]=”abc”;
p1=”abc”;
p2=”abc”;
strcpy(str+1,strcat(p1,p2));
printf(“%s\n”,str);
A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc
54.若有定义:
inta[2][3];
则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数值的正确引用为()。
A.*(*(i+j)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
55.若有定义:
int(*p)[4];
则标识符p()。
A.是一个指向整型变量的指针
B.是一个指针数组名
C.是一个指针,它指向一个含有四个整型元素的一维数组
D.定义不合法
56.若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的非法引用为()。
intb[2][3]={0},(*p)[3];
p=b;
A.*(*(p+i)+j)B.*(p[i]+j)
C.(p+i)+jD.(*(p+i))[j]
57.当说明一个结构体变量时系统分配给它的内存是().
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
58.C语言结构体类型变量在程序执行期间().
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
59.以下对C语言中共用体类型数据的叙述正确的是()。
A.可以对共用体变量名直接赋值
B.一个共用体变量中可以同时存放其所有成员
C.一个共用体变量中不可能同时存放其所有成员
D.共用体类型定义中不能出现结构体类型的成员
60.C语言共用体型变量在程序运行期间()。
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
61.请读程序片段:
intx=20;
printf(“%d\n”,~x);
上面程序片段的输出结果是().
A.02
B.–20
C.-21
D.-11
62.在位运算中,操作数每左移一位,其结果相当于().
A.操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
63.系统的标准输入文件是指()。
A.键盘B.显示器C.软盘D.硬盘
64.当顺利执行了文件关闭操作时,fclose函数的返回值是()。
A.-1B.TUREC.0D.1
65.已知函数的调用形式:
fread(buffer,size,count,fp);
其中buffer代表的是()。
A.一个整形变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
二、填空题:
1.C程序的基本单位是。
2.表达式10%3的结果是。
3.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为。
4.在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为;
5.C语言所提供的基本数据类型包括:
。
6.表达式pow(2.8,sqrt(double(x)))值的数据类型为。
7.以下程序的执行结果是。
floatf=3.5;
%f,%g"
f,f)
8.以下程序的执行结果是。
floatf=31.41592;
%f,%e"
9.以下程序的执行结果是。
a=2;
b=3;
c=1;
if(a>
c)
a);
else
b);
end\n"
);
10.在C语言中,表示逻辑“真”值用.
11.有intx,y,z;
且x=3,y=-4,z=5,则表达式(x&
y)==(x︱︱z)的值为。
12.下面程序从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
请填空。
intn=0,c;
c=getchar();
while()
{if(c>
=‘0’&
c<
=‘9’)n++;
c=getchar();
}
13.执行下面程序段后,k值是.
k=1;
n=263;
do{k*=n%10;
n/=10}while(n);
14.下面程序段中循环体的执行次数是.
a=10;
b=0;
do{b+=2;
a-+2+b;
}while(a>
=0);
15.若for循环用以下形式表示:
for(表达式1;
表达式2;
表达式3)循环体语句
则执行语句for(i=0;
i<
3;
i++)printf(“*”);
时,表达式3执行次。
16.以下程序的输出结果是__________。
main()
{ints[10]={1,2,3,4,5,6,7,8,9,10},*p=s;
*(p+4));
17.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:
(假设a[0][0]位于数组的第一个位置上。
)
18.在C语言中,二维数组元素的内存中的存放顺序是。
19.在C语言中,一个函数一般由两个部分组成,它们是。
20.以下程序的运行结果是。
f(inta[])
{inti=0;
while(a[i]<
{printf(“%d”,a[i]);
i++;
{inta[]={1,5,10,9,11,7};
f(a+1);
21.设有以下宏定义:
#defineWIDTH80
#defineLENGTH(WIDTH+40)
则执行赋值语句:
k=LENGTH*20;
(k为int型变量)后,k的值是。
22.下面的运行结果是。
#defineMUL(z)(z)*(z)
printf(“%d\n”,MUL(1+2)+3);
23.下面程序的运行结果是。
#defineEXCH(a,b){intt;
t=a;
a=b;
b=t;
{intx=5,Y=9;
EXCH(x,y);
printf(“x=%d,y=%d\n”,x,y);
24.下面程序段的运行结果是。
chars[80],*sp=”HELLO!
”;
sp=strcpy(s,sp);
s[0]=’h’;
puts(sp);
25.下面程序段的运行结果是。
chars1=”AbcdEf”,s2=”aB”;
s1++;
t=(strcmp(s1,s2)>
0);
print(“%d\n”,t)
26.下面程序段的运行结果是。
char*p=”PDP1-0”;
intI,d;
for(I=0;
I<
7;
I++)
{d=isdigit(*(p+ii));
if(d!
=0)printf(“%c*(p+I));
27.当运行以下程序时,从键盘输入book<
CR>
book<
(<
表示回车,表示空格),则下面程序段运行的结果是。
chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);
gets(s2);
if(!
strcmp(s1,s2))printf(“*”):
elseprintf(“#”);
printf(“%d”,strlen(strcat(s1,s2)));
28.若已定义:
structnum
{inta;
intb;
floatf;
}n={1,3,5.0};
structnum*pn=&
n;
则表达式(*pn).a+pn->
f的值是。
29.在C语言中,&
运算符作为双目运算符时表示的是运算.
30.在C语言中,文件的存取是以字符为单位的,这种文件被称