c语言复习题有答案Word下载.docx
《c语言复习题有答案Word下载.docx》由会员分享,可在线阅读,更多相关《c语言复习题有答案Word下载.docx(33页珍藏版)》请在冰点文库上搜索。
p=&
a[2];
,则*--p的值是【1】.
5-4、下列程序的输出结果是【1】,main(){inta=011;
printf(“%d\n”,++a);
}
OK;
’\0’;
10
6-1、若宏定义为:
#definey(x)2+x,则表达式a=3*y(3)的值为【1】.
6-2、若宏定义为:
#definey(x)2+x,则表达式a=4*y
(2)的值为【1】.
6-3、若宏定义为:
#definey(x)2/x,则表达式a=4+3*y(3)的值为【1】.
9;
10;
6.
二、单项选择题
1-1、若以"
a+"
方式打开一个已存在的文件,则以下叙述正确的是()。
A:
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
B:
文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
C:
文件打开时,原有文件内容被删除,只可作写操作
D:
以上各种说法皆不正确
1-2、若执行fopen函数时发生错误,则函数的返回值是()。
A:
地址值B:
0C:
1D:
EOF
1_3、若要打开A盘上user子目录下名为abc.txt的文件进行读、写操作,符合要求的是()。
fopen(“A:
\user\abc.txt”,“r”)B:
\\user\\abc.txt”,“r+”)
C:
\user\abc.txt”,“rb”)D:
\\user\\abc.txt”,“w”)
A;
B;
2-1、以下属于c语言预先规定的保留字是()。
intB:
scoreC:
averD:
sum
2-2、下列运算符中优先级最高的是()。
<
B:
+C:
&
D:
!
=
2-3、下面不正确的字符串常量是()。
‘abc’B:
’’12’12”C:
”0”D:
”“
2-4、运算对象必须是整型的运算符是()。
%B:
/C:
=D:
2-5、下面错误的常量是()。
0xffB:
1.2e0.5C:
2LD:
’\72’
2-6、下列变量定义语句中,正确的是()。
char:
abc;
chara;
b;
c;
C:
intx;
z;
intx,z;
2-7、sizeof(float)是()。
一个双精度型表达式B:
一个整型表达式C:
一种函数调用D:
不合法表达式
2_8、c语言的注释语句开头必须是()。
/B:
*C:
/*D:
’
2_9、设以下变量均为int类型,则值不等于7的表达式是()。
(x=y=6,x+y,x+1)B:
(x=y=6,x+y,y+1)C:
(x=6,x+1,y=6,x+y)D:
(y=6,y+1,x=y,x+1)
2_10、C程序的语句结束符是()。
A:
;
:
.D:
换行
2_11、C语言中用于结构化程序设计的三种基本结构是()。
顺序结构、选择结构和循环结构B:
if、switch、break
for、while、do-whileD:
if、for、continue
2_12、C语言中,int、char和short三种类型的数据在内存中占用的字节数()。
由用户自己定义B:
均为两个字节C:
是任意的D:
由所用机器的字长决定
D;
C;
C;
A;
3-1、在一个c程序中()。
main函数必须出现在所有函数之前B:
main函数的位置没有特别限制
main函数必须出现在所有函数之后D:
main函数必须出现固定位置
3-2、已知函数原形声明为:
floatwww(chara,charb);
该函数的类型为()。
指向字符型的指针B:
字符型C:
浮点型D:
指向浮点型的指针
3-3、与实际参数为整型数组名相对应的形式参数不可以定义为()。
inta[];
int*a;
inta;
inta[3];
3_4、全局变量的定义不可能在()。
函数内部B:
函数外面C:
文件外面D:
最后一行
3_5、putchar函数可以向终端输出一个()。
整型变量表达式的值B:
实型变量的值C:
字符串D:
字符或字符型变量值
3_6、数组名作为实际参数传给函数时,数组名被处理为()。
数组的长度B:
数组的元素个数C:
数组的首地址D:
数组中各元素的值
3_7、C语言中,当调用函数时()。
实参和虚参本身各占一个独立的存储单元B:
实参和虚参可以共用存储单元
实参和虚参可以由用户指定是否共用存储单元D:
由计算机自动确定是否共用存储单元
3_8、调用函数时,实参和虚参必须保持一致的是()。
在个数上B:
在类型上C:
在顺序上D:
在个数、类型、顺序上
4-1、inta=3,b=2,c=1;
if(a>
c)a=b;
elsea=c;
则a的值为()。
3B:
2C:
4-2、下列程序的输出为()。
main()
{inty=10;
while(y--);
printf("
y=%d\n"
y);
}
y=0B:
while构成无限循环C:
y=1D:
y=-1
4-3、假设所有变量都为整型,表达式(a=2,b=5,a>
b++,a+b)的值是().
7B:
8C:
9D:
2
4-4、以下程序的输出结果是()。
{inti=010,j=10;
%d,%d\n"
++i,j--);
11,10B:
9,10C:
10,9D:
10,9
4_5、设a=2,且a定义为整型变量,执行语句a+=a-=a*=a;
后,a的值为()。
12B:
144C:
0D:
132
4-6、inta=1,b=2,c=3;
a=c;
c=b;
则c的值为()。
1B:
3D:
不一定
4-7、若变量a与i已正确定义,且i已正确赋值,合法的语句是()。
a==1B:
++i;
a=a++=5;
a=int(i);
4_8、strlen(“12\0345\n”)与strlen(“12\0845\n”)的测试结果分别是。
相同B:
2和5C:
5和2D:
5和5
4_9、设chars[10]="
\ta\017bc"
则数组s所占的字节数是()。
9B:
10C:
6D:
7
4_10、设char*s="
则指针变量s指向的字符串所占的字节数是()。
5C:
4_11、若i=3,则printf("
%d"
-i++);
输出的值和i的值分别为()。
-3和4C:
B;
C;
B;
5-1、一维数组定义的格式为:
类型说明符数组名()。
[常量表达式]B:
[整型表达式]C:
[整型常量]或[整型表达式]D:
[整型常量]
5-2、以下能正确定义数组并正确赋初值的邮局语句是()。
intN=5,b[N][N];
B:
inta[1][2]={{1},{3}};
intc[2][]={{1,2},{3,4}};
D:
intd[3][2]={{1,2},{34}};
5_3、以下不正确的定义语句是()。
doublex[5]={2.0,4.0,6.0,8.0,10.0};
B:
inty[5]={0,1,3,5,7,9};
charc1[]={‘1’,’2’,’3’,’4’,’5’};
D:
charc2[]={‘\x10’,’\xa’,’\x8’};
5_4、在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
A:
整型常量B:
整型表达式C:
整型常量或整型表达式D:
任何类型的表达式
5_5、若有说明:
inta[10];
则对a数组元素的正确引用是()。
a[10]B:
a[3,5]C:
a(5)D:
a[10-10]
3_6、下列数组定义中,正确的是()。
inta[][4];
inta[][];
inta[][][5];
inta[3][];
5_7、若有说明:
a[3>
1]
6-1、相同结构体类型的变量之间可以()。
相加B:
赋值C:
比较大小D:
地址相同
6_2、结构体类型的定义允许嵌套是指()。
成员是已经或正在定义的结构体型B:
成员可以重名
结构体型可以派生D:
定义多个结构体型
6_3、有如下定义:
structstudent{charname[20];
intage;
}wang,*p;
p=&
wang;
以下不合法的引用为()。
p.ageB:
wang.ageC:
p->
ageD:
(*p).age
6_4、在定义构造数据类型时,不能()。
说明变量B:
说明存储类型C:
初始化D:
末尾不写分号
6_5、当定义一个结构体变量时,系统分配给它的内存是()。
各成员所需内存量的总和B:
结构中第一个成员所需内存量
结构中最后一个成员所需内存量D:
成员中占内存量最大者所需的容量
6_6、enuma{sum=9,mon=-1,tue};
定义了()。
枚举变量B:
3个标识符C:
枚举数据类型D:
整数9和-1
6_7、以下各选项企图说明一种新的类型名,其中正确的是()。
typedefv1int;
B:
typedefv2=int;
typedefintv3;
typedefv4:
int;
7-1、若宏定义为:
#definey2+3,则表达式y*3+3的值为().
14B:
16C:
18D:
20
7-2、若宏定义为:
#definey2+3,则表达式2+y*3的值为().
11B:
13C:
15D:
17
7_3、有宏定义为#defineY(a,b)a+b,则表达式2+Y(2,3)*3的值为().
13C:
8-1、如有int*p,a=5,b;
定义,则以下正确的程序段为()。
b;
scanf(“%d’,&
p);
B:
scanf(“%d’,*p);
scanf(“%d’,&
b);
p=b;
D:
p=a;
8-2、若有语句:
inta[3][4],*p[3]={a[0],a[1],a[2]};
不能表示a[2][3]的元素的是()。
*(*(a+2)+3)B:
*(*(p+2)+3)C:
(p[2]+3)D:
(*(p+2))
8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。
*p1-*p2B:
p1++C:
*p1%*p2D:
p1-p2
8_4、有以下定义:
inta[2][3];
,则对数组元素的正确引用()是。
*(*(a+i)+j)B:
(a+i)[j]C:
*(a+i+j)D:
a[i]+j
8_5、若有定义:
int(*p)();
,则该指针为()。
指向整型的指针B:
指向字符型的指针C:
指向整型函数的指针D:
指向字符型函数的指针
8_6、下列正确的定义是()。
1inti,*p=&
i;
②int*p=&
i,i;
③int*p,i;
④int*p,i;
p=i;
⑤int*p,i,p=&
①③B:
②④C:
②⑤D:
④①
三、多项选择题
1_1、下列选项中合法的标识符有()。
good_morningB:
mainC:
stdio.hD:
8abc
AB;
1_2、下列选项中合法的用户标识符有()。
pageB:
shortC:
_3comD:
int
AC;
1_3、下列选项中合法的用户标识符有()。
returnB:
f2_G3C:
a3-3D:
abc
BD;
1_4、以下叙述正确的是()。
C语言严格区分大小写英文字母。
C语言用“;
”作为语句分隔符。
C程序书写格式自由:
一行内可以写几个语句,一个语句也可以写在几行。
D:
可以使用/*…*/对C程序中的任何部分作注释。
ABCD;
1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。
只能是0或1;
B:
只能是0或非0正数;
C:
可以是整型或字符型数据;
D:
可以是任何类型的数据;
1_6、以下对switch语句和break语句中描述错误的有()。
在switch语句中必须使用break语句;
B:
break语句只能用于switch语句;
在switch语句中可以根据需要使用或不使用break语句;
break语句是switch语句的一部分;
ABD;
2_1、已定义c为字符型变量,则下列语句中错误的是()。
c=’97’;
c=”97”;
c=97;
c=”a”;
3_1、以下正确的是()。
预处理命令行必须以‘#’开始。
以‘#’开始的都是预处理命令行。
程序在执行过程中对预处理命令行进行处理。
#defineABCD是正确的宏定义。
4_1、在定义inta[2][3]之后,对a[i][j]的正确引用有()。
a[0][2]B:
a[1,3]C:
a[1>
2][!
1]D:
a[2][0]
4_2、以下对二维数组a正确初始化的是()。
staticcharword[]=’Turbo\0’;
staticcharword[]={‘T’,’u’,’r’,’b’,’o’,’\0’};
staticcharword[]={“Turbo\0”};
staticcharword[]=”Turbo\0”;
BCD;
5_1、以下4个选项中可以看作是一条语句的有()。
{;
}B:
a=0,b=0,c=0;
0);
if(b==0)m=1;
n=2;
ABC;
5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。
a=b=c=d=100;
d++;
c+b;
d=(c=22)-(b++);
5_3、设有以下定义:
inta=0;
doubleb=1.25;
charc=’A’;
#difined2,则正确的语句是()。
a++;
b++;
c++;
6_1、以下述说中正确的是()。
一个c源程序可以由一个或多个函数组成。
一个c源程序必须包含一个main()函数。
c源程序的基本组成单位是函数。
在c源程序中,注释说明只能位于一条语句的最后。
6_2、以下对C语言中的函数描述不正确的是()。
可以嵌套定义,不可以嵌套调用。
不可以嵌套定义,可以嵌套调用。
可以嵌套定义,也可以嵌套调用。
嵌套定义和嵌套调用都不允许。
ACD;
四、程序填空
1、功能:
计算平均成绩并统计90分以上人数。
成绩数据以一负数作为结束标志。
#include<
stdio.h>
voidmain(void)
{
intn,m;
floatgrade,average;
/***********SPACE***********/
average=n=m=【?
】;
while
(1)
{
【?
】
("
%f"
&
grade);
if(grade<
0)break;
n++;
average+=grade;
90)
【?
m++;
if(n)printf("
%.2f%d\n"
average/n,m);
1).0或0.02).scanf3).Continue
2、功能:
找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入。
#include"
stdio.h"
voidmain()
inta[10],*p,*s,i;
for(i=0;
10;
i++)
scanf("
【?
】);
for(p=a,s=a;
】<
p++)
if(*p>
*s)s=p;
max=%d,index=%d\n"
【?
】,s-a);
1).a+i或&
a[i]2).p-a或-a+p3).*s
3、功能:
输入学生成绩并显示。
#include<
structstudent
charnumber[6];
charname[6];
intscore[3];
}stu[2];
voidoutput(structstudentstu[2]);
inti,j;
i<
2;
】)
请输入学生%d的成绩:
\n"
i+1);
学号:
"
);
%s"
】.number);
姓名:
stu[i].name);
for(j=0;
j<
3;
j++)
成绩%d."
j+1);
】.score[j]);
output(stu);
voidoutput(structstudentstu[2])
学号姓名成绩1成绩2成绩3\n"
i++)
%-6s%-6s"
stu[i].number,stu[i].name);
%-8d"
stu[i].score[j]);
1).i++或++i或i=i+1或i+=1
2).stu[i]
3).&
stu[i]
4、功能:
输入两个整数x,y,请把这两个数由小到大输出。
intx,y,t;
%d%d"
if(【?
{【?
】}
smalltobig:
%d%d\n"
x,y);
1).&
x,&
y或&
y,&
x
2).x>
y或x>
=y或y<
x或y<
=x
3).t=y;
y=x;
x=t;
或t=y,y=x,x=t;
或t=x;
x=y;
y=t;
或t=x,x=y,y=t;
5、功能:
输出结果为:
*****
*****
*****
staticchar【?
】={'
*'
'
};
inti,j,k;
charspa