C语言复习题Word下载.docx
《C语言复习题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言复习题Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
C)intk,*p;
*p=&
D)intk,*p;
p=&
10.任何复杂的程序,都是由________构成的。
A)分支结构、顺序结构、过程结构B)循环结构、分支结构、过程结构
C)顺序结构、循环结构、分支结构D)循环结构、分支结构
11.以下说法中正确的是________。
A)C程序总是从第一个定义的函数开始执行
B)在C程序中,要调用的函数必须在main函数中定义
C)C程序总是从main函数开始执行的
D)C程序中的main函数必须放在程序的开始部分
12.在C语言类型说明中,int、char、short等类型的长度是__B______。
A)由用户自己定义的B)与机器字长有关的
C)固定的D)任意的
13.以下字符中,不正确的C语言转义字符分别是________。
A)‘\\’B)‘011’C)‘\’’D)‘\xaa’
14.以下选项中,合法的C语言关键字是________。
A)integerB)CharC)shortD)Long
15.若一个外部变量的定义形式为staticintx;
其中static的作用是___D_____。
A)将变量存放在静态存储区,使x的值可以永久保留
B)使变量x可以由系统自动初始化
C)使x只能在本文件内引用
D)使x的值可以永久保留
16.若a为整型变量,则以下语句________。
a=-2;
printf(“%d\n”,a);
A)赋值不合法B)输出值为-2C)输出为不确定值D)输出值为2
17.若有说明语句:
inty[][4]={0,0,0,0,0,0};
则正确的叙述是________。
A)数组y的每个元素都可得到初值0
B)二维数组y的行数为1
C)该说明等价于inty[0][4]={0};
D)有元素y[0][0]至y[0][5]可得到初值,其余元素均得不到初值0
18.若shortint类型数据占两个字节,则下列语句的输出为___D_____。
intk=-1;
printf(“%d,%u\n”,k,k);
(%u表示以无符号数输出,考察二进制知识)
A)-1,-1B)-1,32767C)-1,32768D)-1,65535
19.已知:
chara;
intb;
floatc;
doubled;
执行语句c=a+b+c+d;
后,变量c的数据类型是___D_____。
A)intB)charC)doubleD)float
20.假设定义变量如下:
intx;
floaty;
以下输入语句中________是正确的。
A)scanf(“%f%f”,&
y,&
x);
B)scanf(“%f%d”,y,x);
C)scanf(“%f%d”,&
D)scanf(“%5.2f%2d”,&
21.若有以下变量说明和数据的输入方式,则正确的输入语句为________。
变量说明:
floatx1,x2;
数据的输入方式:
4.52<
回车>
3.5<
A)scanf(“%f,%f”,&
x1,&
x2);
B)scanf(“%f%f”,&
C)scanf(“%3.2f,%2.1f”,&
D)scanf(“%3.2f%2.1f”,&
22.若变量已正确定义,与语句if(a>
b)k=0;
elsek=1;
等效的是________。
A)k=(a>
b)?
1:
0?
B)k=a>
b;
C)k=a<
=b;
D)a<
=b?
0:
1;
23.若有定义:
intx,*pb;
则正确的赋值表达式是________。
A)pb=&
xB)pb=xC)*pb=&
xD)*pb=*x
24.已知:
inta,*p=&
a;
则为了得到变量a的值,下列错误的表达式为________。
A)p[0]B)*pC)&
*aD)*&
a
25.在C语言中,引用数组元素时,其数组下标的数据类型允许是________。
A)整型常量B)整型表达式
C)整型常量或整型表达式D)任何类型的表达式
26.若有定义:
intb[5];
则以下对b数组元素的正确引用是________。
A)*&
b[5]B)b+2
C)*(*(b+2))D)*(b+2)
27.设有定义语句“chars[]=”123”;
”,则表达式“s[3]”的值是________。
A)’1’B)’3’C)’\0’D)语法出错
28.语句if(!
i)i++;
中的条件表达式!
i等价于___A_____。
A)i==0B)i!
=1C)i!
=0D)-i
29.设有intx,y;
以下语句判断x和y是否相等,正确的说法是该语句________。
if(x=y)printf("
xisequaltoy."
);
A)语法错B)不能判断x和y是否相等
C)编译出错D)能判断x和y是否相等
30.C语言中规定,if语句的嵌套结构中,else总是与________配对。
A)与最近的if配套B)与第一个if配套
C)按缩进位置相同的if配套D)与最近的且尚未配对的if配套
31.以下有关switch语句的正确说法是________。
A)break语句是语句中必须的一部分
B)在switch语句中可以根据需要使用或不使用break语句
C)break语句在switch语句中不可以使用
D)在switch语句中的每一个case都要用break语句
33.当执行以下程序时,________。
#include<
stdio.h>
voidmain()
{
inta;
while(a=5)
printf("
%d"
a--);
}
A)循环体将执行5次B)循环体将执行0次
C)循环体将执行无限次D)系统会当机。
34.以下函数的类型是________。
intsum(doublex,doubley)
doubles;
s=x+y;
returns;
A)字符型B)不确定C)整型D)实型
35.以下叙述不正确的是___A_____。
A)一个C源程序文件必须包含一个main()函数
B)一个C源程序文件可由一个函数组成
C)一个C源程序文件是一个编译单位
D)一个C源程序文件可由多个函数组成
注意:
若要执行则必须包含一个main()函数
36.若用数组名作为函数调用时的参数,则实际上传递给形参的是________。
A)数组元素的个数B)数组的第一个元素值
C)数组中全部元素的值D)数组首地址
37.一个共用体变量所占内存是________。
A)该共用体第一个成员所占的内存量
B)该共用体最后一个成员所占的内存量
C)该共用体占内存最多成员所占的内存量
D)该共用体所有成员所需内存量的总和
38.C语言中结构体类型变量在程序执行期间________。
A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中
C)部分成员驻留在内存中D)没有成员驻留在内存中
39.简单变量做实参时,实参与其对应的形参之间的数据传递方式是________。
A)双向值传递方式B)地址传递方式
C)单向值传递方式D)用户指定传递方式
40.C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是________。
A)long型B)float型C)double型D)int型
41.以下叙述正确的是________。
A)函数的定义和函数的调用均不可以嵌套
B)函数的定义和函数的调用均可以嵌套
C)函数的定义可以嵌套,但函数的调用均不可以嵌套
D)函数的定义不可以嵌套,但函数的调用均可以嵌套
42.如果在一个函数中的复合语句中定义一个变量,以下正确的叙述是________。
A)该变量在该函数中有效B)该变量只在该复合语句中有效
C)该变量为不合法的变量D)该变量在本程序范围内有效
43.凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是__C___。
A)静态(static)B)外部(extern)
C)自动(auto)D)寄存器(register)
44.若有定义charx[]="
12345"
;
chary[]={'
1'
'
2'
3'
4'
5'
};
则。
A)x数组与y数组的长度相同B)x数组长度大于y的长度
C)x数组长度小于y数组长度D)x数组等价与y数组
45.若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量x,则在另一文件中可以使用的引用说明是________。
A)externfloatx;
B)floatx;
C)externautofloatx;
D)externstaticfloatx;
46.以下有关宏替换的叙述不正确的是___A_____。
A)宏名必须用大写字母表示B)宏替换不占用运行时间
C)宏名不具有类型D)宏替换只是字符替换
47.C语言的编译系统对宏命令的处理是___B_____。
A)在程序连接时进行的B)在对源程序中的其它语句编译之前进行的
C)在程序运行时进行的D)和C程序中的其它语句同时进行的
48.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,____是正确的。
A)p2=p1B)p2=**p1C)p2=&
p1D)p2=*p1
49.下列对字符串的定义中,错误的是_____。
A)charstr[5]="
abcde"
B)charstr[]="
C)char*str="
D)charstr[]={'
a'
b'
c'
d'
e'
\0'
50.已知:
inta[8]={0,1,2,3,4,5,6,7},*p=a;
则不能表示数组a中元素的表达式是_____。
A)*pB)a[8]C)*aD)a[p-a]
二.程序阅读题
1.描述以下程序的功能。
intx,y;
printf("
Pleaseinputx,y:
"
scanf("
%d%d"
&
x,&
y);
if(x<
0)x=-x;
if(y<
0)y=-y;
\n%d\n"
x+y);
2.写出以下程序的输出结果。
intnum=0;
while(num++<
=2);
num);
3.写出以下程序的输出结果。
intx=10;
do
x-=9);
while(!
(--x));
4.写出以下程序的输出结果。
{inta[]={1,3,5,7,9};
inty=1,x,*p;
a[1];
for(x=0;
x<
3;
x++)y+=*(p+x);
%d\n"
y);
5.写出以下程序的输出结果。
{inty=5;
for(;
y>
0;
y--)
{if(y%2==0)continue;
%d"
y);
6.若输入为359,写出该程序的输出结果。
voidmain(){
inta,b,c,x,y;
inputthreenumbers:
"
%d%d%d"
a,&
b,&
c);
if(a>
b){
x=a;
y=b;
else{
x=b;
y=a;
if(x<
c)x=c;
elseif(y>
c)y=c;
%d,%d"
x,y);
7.阅读以下程序,写出程序的功能。
inta[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,s=0,count=0;
for(i=0;
i<
10;
i++)
if(a[i]>
0)s+=a[i],count++;
elsecontinue;
printf("
s=%d,count=%d\n"
s,count);
8.阅读以下函数,写出此函数的功能。
floatfun1(floata[],intn)
inti=1;
floatresult=a[0];
n;
if(result>
a[i])result=a[i];
returnresult;
9.阅读以下函数,写出此函数的功能。
voidfun(charA[],intn)
chartmp;
intk;
for(k=0;
k<
n/2;
k++)
{
tmp=A[k];
A[k]=A[n-k-1];
A[n-k-1]=tmp;
10.阅读以下程序,写出程序的运行结果。
#defineN6
inta[N]={4,5,8,3,6,1};
intj,t;
for(j=0;
j<
N-1;
j++)
if(a[j]>
a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
N;
%5d"
a[j]);
11.阅读以下程序,写出此程序的功能。
charch;
intc=0,s=0,n=0,other=0;
while((ch=getchar())!
='
\n'
)
if((ch>
&
ch<
z'
)||(ch>
Z'
))c++;
elseif(ch=='
'
)s++;
elseif(ch>
0'
9'
)n++;
elseother++;
Char:
%d\nSpace:
%d\nNumber:
%d\nOther:
c,s,n,other);
12.阅读以下程序,写出此程序的功能。
#defineN10
intk,i,p,t,a[N+1];
for(i=1;
=N;
scanf("
a[i]);
for(k=1;
p=k;
for(i=k+1;
if(a[p]<
a[i])p=i;
t=a[p];
a[p]=a[k];
a[k]=t;
i++)printf("
a[i]);
\n"
13.下列程序有2个文件组成,写出运行结果。
(可以做修改后的13题)
/*file1*/
#include<
intx=20;
inty=20;
voidfunc_add(void)
y=10+x;
x*=2;
externvoidfunc_sub();
/*声明一个外部函数*/
x+=5;
func_add();
func_sub();
printf("
x=%d;
y=%d\n"
x,y);
/*file2*/
externintx;
/*声明一个外部变量*/
voidfunc_sub()
x-=5;
修改后的13题
14.阅读下面的程序,写出它的运行结果。
longfunc(intm)
longs;
if(m==1)
s=1;
elses=m+func(m-1);
return(s);
{
longy;
y=func(4);
%2d"
15.写出以下函数的功能。
voidfun(charstr1[],charstr2[])
{inti=0;
while((str1[i]=str2[i])!
i++;
16.阅读以下程序,写出此程序的结果。
voidincrement()
intx=0;
x+=1;
x);
increment();
17.写出以下程序的运行结果。
(不做)
staticintx=0;
18.阅读以下程序,写出此程序的结果。
intadd(inta,intb)
intc;
c=a+b;
returnc;
voidprint(intt)
z=%d\n"
t);
intx,y,z;
voidprint(intt);
x=5,y=10;
z=add(x,y);
print(z);
19.阅读以下程序,写出程序运行的结果。
intf(intx,inty);
inta=1,b=2,c;
c=f(a,b);
c);
intf(intx,inty)
intz;
z=(x>
y)?
x:
y;
return(z);
20.若输入一个整数10,写出以下程序的运行结果。
intsub(inta);
inta,e[10],c,i=0;
a);
while(a!
=0)
c=sub(a);
a=a/2;
e[i]=c;
i++;
for(;
i>
i--)printf("
e[i-1]);
intsub(inta)
c=a%2;
return(c);
21.写出以下程序的运行结果。
sub(intn)
if(n==1)return
(1);
a=n+sub(n-1);
return(a);
inti=5;
sub(i));
22.写出下面程序的运行结果。
func(inta[][3])
inti,j,sum=0;
for(i=0;
i<
i++)
for(j=0;
j<
j++)
if(i==j)sum=sum+a[i][j];
return(sum);
inta[3][3]={1,3,5,7,9,11,13,15,17},sum;
sum=func(a);
sum=%d\n"
sum);
23.写出下面程序的运行结果。
voidsort(inta[])
inti,j,t;
4;
for(j=0