东莞理工学院 c语言复习题.docx
《东莞理工学院 c语言复习题.docx》由会员分享,可在线阅读,更多相关《东莞理工学院 c语言复习题.docx(27页珍藏版)》请在冰点文库上搜索。
东莞理工学院c语言复习题
第一部分
1.C语言的主要特点有哪些?
(多选)
A.简洁、紧凑,使用方便、灵活,易于学习和应用。
B.C语言是面向结构化程序设计的语言。
C.C语言允许直接对位、字节和地址进行操作。
D.数据类型丰富。
E.C语言生成的目标代码质量高。
答案:
ABCDE
2.C语言程序由什么组成?
(单选)
A.子程序B.主程序和子程序C.函数D.过程
答案:
C
3.源程序要正确地运行,必须要有什么函数?
(单选)
A.printf函数B.自定义的函数
C.main函数D.不需要函数
答案:
C
4.指出下面合法的标识符:
(多选)
A.3abB.intC.ABCD.a_3
E.sum.aF.#abcG._stu2H.abcf
答案:
CDG
5.指出下面哪些是保留字:
(多选)
A.charB.abcC.floatD.defineE.includeF.PI
答案:
ACDE
6.指出下面哪些是合法的用户定义的标识符?
(多选)
A.P-SB.pOtcharC.doubleD._908
E.*parF.sheep!
G.windH.xy
答案:
BDG
7.C语言的基本类型哪些:
(多选)
A.整型B.枚举型C.数组型D.指针型
E.字符型F.构造型G.实型H.空类型
答案:
ABEG
8.这段程序中的常量有:
(多选)
#definePI3.14
voidmain()
{intsum;
sum=10+15;
printf("sum=%d\n",sum);
printf("resultis25\n");
}
这段程序中常量有:
A.10B.sumC.15
D.25E.mainF.PI
答案:
ACF
9.C语言中整形常量按进制划分,有以下几种:
(多选)
A.十六进制常量B.十进制常量
C.八进制常量D.二进制常量
答案:
ABC
10.如果要把常量327存入变量a中,a可以定义成哪些类型?
(多选)
A.intB.char
C.longD.float
答案:
ACD
11.下面哪些写法是对的,而且是常量?
(多选)
A.125B.-.456C.1.25e20D.'AB'
E.E6F.0238G.0xabcdefH."\n\\\'\123"
答案:
ABCGH
12.下面哪个表达式的值为4.(单选)
A.11/3B.11.0/3
C.(float)11/3D.(int)(11.0/3+0.5)
答案:
D
13.已知整型变量a=6,b=7,c=1,则下面表达式的值为多少?
a+3___
(b-a*3)/5___
c*(a+b)+b*(c+a)___
3.2*(a+b+c)___
答案:
9
-2
62
44.8
14.已知整型变量a=6,字符型变量ch='A',浮点数变量f=2.1,则下面表达式的值为多少?
(提示:
'A'的ASCII码为65)
a+4.5___
ch+a+f___
(a+30)/5___
(a+30)/5.0___
答案:
10.5
73.1
7
7.2
15.指出下面错误的表达式:
(多选)
A.a+=5B.56=a11C.i=i++
D.5.6+6.2%3.1E.12F.a=5,b=6,c=7
答案:
BD
16.若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?
(多选)
A.f=(f*100+0.5)/100.0B.i=f*100+0.5,f=i/100.0;
C.f=(int)(f*100+0.5)/100.0;D.f=(f/100+0.5)*100.0;
答案:
BC
17.写出下面这个程序的结果。
voidmain()
{
intcount,i;
intx,y,z;
x=y=z=0;
scanf("%d",&count);
for(i=0;i{
x=(x+1)%2;
y=(y+1)%3;
z=(z+1)%5;
}
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
如果运行时输入10,结果是x=___,y=___,z=___。
如果运行时输入17,结果是x=___,y=___,z=___。
答案:
010
122
18.已知a为整型变量,那么与表达式a!
=0真假值情况相同的表达式有哪些?
(多选)
A.a>0||a<0B.a
C.!
a==0D.!
a
答案:
ABC
19.若要输出下列各种类型的数据,应使用什么转换说明符。
(答题请打上双引号)
字段宽度为4的十进制数应使用"%4d",字段宽度为6的十六进制数应使用___,八进制整数应使用___,字段宽度为3的字符应使用___,字段宽度为10,保留3位小数的实数应使用___,字段宽度为8的字符串应使用___。
答案:
"%6x""%o""%3c""%10.3f""%8s"
20.该源程序执行后,屏幕上显示什么?
(单选)
voidmain()
{
inta;
floatb;
a=4;
b=9.5;
printf("a=%d,b=%4.2f\n",a,b);
}
A.a=%d,b=%f\nB.a=%d,b=%f
C.a=4,b=9.50D.a=4,b=9.5
答案:
C
21.下面哪些是非法的C语言转义字符?
(多选)(P48)
A.'\t'B.'\08'C.'\0xaf'D.'\\'
答案:
BC
22.以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,然后输出a,b,c的值。
请填空。
#include
main()
{
___
inttemp;
printf("Entera,b,c:
");
scanf("%d%d%d",___);
___
a=b;
b=c;
___
printf("a=%db=%dc=%d\n",a,b,c);
}
答案:
inta,b,c;
&a,&b,&c
temp=a;
c=temp;
23.若a为整型变量,且有以下语句___。
(单选)
a=-017L;
printf("%d\n",a);
则下面哪个说法是正确的?
A.赋值不合法B.输出值为-17
C.输出为不确定值D.输出值为-15
答案:
B
24.若ch为char型变量,a为int型变量,(已知字符a的ASCII十进制代码为97)则执行以下语句后的输出为哪一个?
(单选)
charch;
inta;
ch='a';
a=12;
printf("%x,%o,",ch,ch,a);
printf("k=%%d\n",k);(p79)
A.61,141,12,k=%d
B.输出项与格式描述符个数不符,输出为零值或不定值
C.61,141,k=%d
D.61,141,k=%12
答案:
C
25.若k,g均为int型变量,则以下语句的输出为哪一项?
(单选)
intk,g;
k=017;
g=111;
printf("%d,",k);
printf("%x\n",g);
A.15,6fB.f,6fC.f,111D.15,111
答案:
A
26.请从下面的选项中选出正确的C语言的转义字符。
(多选)
A.'//'B.'\''C.'\t'D.'\n'
E.'\1011'F.'/018'G.'/123'H.'\xaa'
答案:
BCDH
27.如这程序所示,如果运行时,输入18,18,那么b的值为多少?
(单选)
voidmain()
{
inta,b;
scanf("%d,%o",&a,&b);
b+=a;
printf("%d",b);
}
A.36B.34C.输入错误,b的值不确定D.18
答案:
C
第二部分
1.C程序的结构可分为哪几类?
(多选)
A.顺序结构
B.循环结构
C.程序结构
D.选择结构
答案:
ABD
2.输入两个实数a,b,然后交换它们的值,最后输出(提示:
要交换两个数得借助一个中间变量temp。
首先让temp存放a的值,然后把b存入a,再把temp存入b就完成了)。
voidmain()
{
floata,b,temp;
printf("请输入a和b的值:
");
scanf("%d,%d",___);
temp=a;
___
___
printf("交换后,a=%d,b=%d\n",___);
}
答案:
&a,&b
a=b;
b=temp;
a,b
3.当a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少?
(1)if(a>c)
{a=b;b=c;c=a;}
else
{a=c;c=b;b=a;}
执行后a,b,c的值为___,___,___
(2)if(aa=c;
else
a=b;c=b;b=a;
执行后a,b,c的值为___,___,___
答案:
554
554
4.当a=3,b=4,c=5时,写出下列各式的值。
a
a==c的值为___,a!
=c的值为___,
a&&b的值为___,!
a&&b的值为___,
a||c的值为___,!
a||c的值为___,
a+b>c&&b==c的值为___。
答案:
11
01
10
11
0
5.假设所有变量均已说明,写出下列各程序段运行后x的值。
(多选)
ok1=1;ok2=2;ok3=0;x=15;a=3;b=4;
(1)if(!
ok1)
x++;
elseif(ok2)
{
if(ok3)
x=3;
else
x=4;
}
运行后x的值为下面哪一个?
A.15B.3C.16D.4
(2)if(ok1)
{
if(a
{
if(!
ok3)
x=0;
else
x=1;
}
else
x=2;
}
else
x=3;
运行后x的值为下面哪一个?
A.0B.1C.2D.3
答案:
DA
6.若整数x分别等于95、87、100、43、66、79,则以下程序段运行后屏幕显示是什么?
switch(x/10)
{
case6:
case7:
printf("Pass\n");
break;
case8:
printf("Good\n");
break;
case9:
case10:
printf("VeryGood\n");
break;
default:
printf("Fail\n");
}
x等于95时,程序段运行后屏幕上显示___
x等于87时,程序段运行后屏幕上显示___
x等于100时,程序段运行后屏幕上显示___
x等于43时,程序段运行后屏幕上显示___
x等于66时,程序段运行后屏幕上显示___
x等于79时,程序段运行后屏幕上显示___
答案:
VeryGood
Good
VeryGood
Fail
Pass
Pass
7.在C语言的if语句中,用作判断的表达式为___。
(单选)
A.关系表达式B.逻辑表达式
C.算术表达式D.任意表达式
答案:
D
8.请问:
下面这个程序段的输出是什么?
(单选)
inta,b,c;
a=7;b=8;c=9;
if(a>b)
a=b,b=c;c=a;
printf("a=%db=%dc=%d\n",a,b,c);
A.a=7b=8c=7B.a=7b=9c=7
C.a=8b=9c=7D.a=8b=9c=8
答案:
A
9.该程序段的输出结果是多少?
(单选)
m=37;n=13;
while(m!
=n)
{
while(m>n)
m=m-n;
while(n>m)
n-=m;
}
printf("m=%d\n",m);
输出结果为:
A.m=13B.m=11
C.m=1D.m=2
答案:
C
10.该程序的输出结果是什么?
(单选)
#include
voidmain()
{
intn;
n=0;
while(n<8)
{
switch(n%3)
{
case2:
putchar('2');
case1:
putchar('i');
break;
case0:
putchar('H');
}
n++;
}
}
A.Hi2Hi2HiB.Hi2
C.Hi2iHi2iD.Hi2iHi2iHi
答案:
D
11.该程序的输出结果是多少?
(单选)
#include
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2)
continue;
x++;
}
}
printf("x=%d\n",x);
}
A.x=4B.x=8C.x=6D.x=12
答案:
B
12.若k为整型,以下while循环执行___次.(单选)
k=2;
while(k>0)
printf("%d",k),k--;
printf("\n");
A.无限次B.0次C.1次D.2次
答案:
D
13.下面这个程序的输出是什么?
(单选)
#include
main()
{inty=10;
while(y--);
printf("y=%d\n",y);
}
A.y=0B.while构成死循环C.y=1D.y=-1
答案:
D
14.以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数.用输入零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数.请填空.
___;
}
printf("i=%4dj=%4d\n",i,j);
}
答案:
int
(n!
=0)
i+1
j+1
scanf("%d",&n)
15.斐波哪契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:
0,1,1,2,3,5,8,13,21,...等。
下面这个程序就是求斐波哪契数列的前20个数。
请填空。
#include
voidmain()
{
intf,f1,f2,i;
f1=0;f2=___;
printf("%d\n%d\n",f1,f2);
for(i=3;i<=30;___)
{
f=___;
printf("%d\n",f);
f1=f2;
f2=___;
}
}
答案:
1
i++
f1+f2
f
16.下面这个程序打印出以下这个三角形.请填空。
0
11
222
3333
44444
555555
6666666
77777777
888888888
9999999999
voidmain()
{
inti,j;
for(i=0;i<=___;i++)
{
for(j=0;j<___;j++)
printf(___);
___
}
}
答案:
9
=i
"%d",i
printf("\n");
第三部分
1.请改正下面这个程序的错误:
#include
main()
{
inti,j,list(10);
for(i=0,i<10,i++)
{
list[i]=2*i+3;
for(j=9,j>=0,j--)
printf("%d\n",list[j]);
}
}
答案:
inti,j,list(10);改为inti,j,list[10];
for(i=0,i<10,i++)改为for(i=0;i<10;i++)
for(j=9,j>=0,j--)改为for(j=9;j>=0;j--)
2.指出下面各说明语句中哪些是合法的:
(多选)
A.intabcd[0x80];B.char9ab[10];
C.charchi[-200];D.intaaa[5]={3,4,5};
E.floatkey[]={3.0,4.0,1,0};F.chardisk[];
G.intn,floppy[n];H.intcash[4]={1,2,3,4,5,6};
答案:
ADE
3.根据以下说明,写出正确的说明语句。
(1)men是一个有10个整型元素的数组。
___
(2)step是一个有4个实型元素的数组,元素值分别为1.9,-2.33,0,20.6。
___
(3)grid是一个二维数组,共有4行,10列整型元素。
___
答案:
intmesh[10];
floatstep[4]={1.9,-2.33,0,20.6};
intgrid[4][10];
4.请回答下列问题。
(1)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,请写出正确的说明语句。
___
(2)该数组下标的取值范围是从___到___(从小到大)。
(3)如何用scanf函数输入数组的第二个元素。
___
(4)如何用赋值语句把39存入第一个元素。
___
(5)如何表示把第六个和第四个元素之和存入第一个元素。
___
答案:
intarray[10]={9,4,7,49,32,-5};
09
scanf("%d",&array[1]);
array[0]=39;
array[0]=array[5]+array[3];
5.写出以下初始化数组的长度。
(1)intchn[3];
数组chn的长度为___。
(2)floatisa[]={1.0,2.0,3.0,4.0,5.0};
数组isa的长度为___。
(3)intdoom[8];
数组doom的长度为___。
(4)floatpci[4][2];
数组pci的长度为___。
(5)intast[3][3];
数组ast的长度为___。
(6)intatt[3][4];
数组att的长度为___。
(7)floatdell[][3]={{1,4,7},{2,5},{3,6,9}};
数组dell的长度为___。
答案:
6,20,16,32,
18,24,36,
6.这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、,20个数的和及它们的平均值。
请填空。
voidmain()
{
intarray___;
intmax,min,average,sum;
inti;
for(i=0;i<___;i++)
{
printf("请输入第%d个数:
",i+1);
scanf("%d",___);
}
max=array[0];
min=array[0];
for(i=0;i<=___;i++)
{
if(max___
if(min>array[i])
___
sum=___;
}
average=___;
printf("20个数中最大值是%d,",max);
printf("最小值是%d,",min);
printf("和是%d,",sum);
printf("平均值是%d.\n",average);
}
答案:
[20]
20
&array[i]
19
max=array[i];
min=array[i];
sum+array[i]
sum/20
7.该程序的运行结果是:
min=___,m=___,n=___。
voidmain()
{
floatarray[3][4]={
{3.4,-5.6,56.7},
{56.8,999.,-.0123},
{0.45,-5.77,123.5},
{43.4,0,111.2}
};
inti,j;
intmin;
intm,n;
min=array[0][0];
m=0;n=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(min>array[i][j])
{
min=array[i][j];
m=i;n=j;
}
printf("min=%d,m=%d,n=%d\n",min,m,n);
}
答案:
-5.7712
8.下面的程序中哪一行有错误?
(单选)
#include
main()
{
floatarray[5]={0.0};//第A行
inti;
for(i=0;i<5;i++)
scanf("%f",&array[i]);
for(i=1;i<5;i++)
array[0]=array[0]+array[i];//第B行
printf("%f\n",array[0]);//第C行
}
A.第A行B.第B行
B.第C行D.没有
答案:
D
9.若有以下整型的a数组,数组元素和它们得值如下所示:
数组元素:
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
元素的值:
941282107513