C语言试题21.docx
《C语言试题21.docx》由会员分享,可在线阅读,更多相关《C语言试题21.docx(18页珍藏版)》请在冰豆网上搜索。
C语言试题21
一、单选题:
(每题1.5分,共60分)
1、C程序是( )
A.顺序执行
B.从Main函数开始
C.从函数体开始
D.任意语句
答案:
B
2、以下说法中正确的是( )。
A.C语言程序中是从第一定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
答案:
C
3、算法的表示方法有________。
A.自然语言,传统流程图,N-S流程图,伪代码,计算机语言
B.高级语言,汇编语言,机器语言
C.C语言,QBASIC语言,InterDev
D.图形图像法,描述法,编程法
E.计算机语言
答案:
A
4、以下选项中,非法的字符常量是( )
A.'\t'
B.'\17'
C."n"
D.'\xaa'
答案:
C
5、以下所列的C语言常量中,错误的是
A.0xFF
B.1.2e0.5
C.2L
D.'\72'
答案:
B
6、下列变量名合法的是()
A.#1
B.$567
C.a-b
D.m_number
答案:
D
7、下面四个选项中,均是不正确的八进制数或十六进制数的选项是
A.0160x8f018
B.0abc0170xa
C.010-0x110x16
D.0a127ff-123
答案:
D
8、sizeof(float)是
A.一个双精度型表达式
B.一个整型表达式
C.一种函数调用
D.一个不合法的表达式
答案:
B
9、C语言中,double类型数据占()个字节,char类型数据占()个字节
A.1
B.2
C.4
D.8和1
答案:
D
10、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是
A.c=b=a;
B.(a=c)‖(b=c);
C.(a=c)&&(b=c);
D.a=c=b;
答案:
C
11、若已定义x和y为double型,则表达式:
x=1,y=x+3/2的值是( )
A.1
B.2
C.2.0
D.2.5
答案:
C
12、执行语句x=(a=3,b=a--)后x,a,b的值为;
A.332
B.322
C.323
D.232
答案:
C
13、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是
A.a\bre\'hi\'y\\\bou
B.a\bre\'hi\'y\bou
C.re'hi'you
D.abre'hi'y\bou
答案:
C
14、在下列运算符中,优先级别最高的是
A.<=
B.=
C.%
D.&&
答案:
C
15、若执行下面的程序时从键盘上输入3和4,则输出是
main()
{
inta,b,s;
a=3,b=4;
scanf("%d%d",&a,&b);
s=a+b;
printf("%d\n",s--);
printf("%d\n,--s);
}
A.7,7
B.7,5
C.6,7
D.7,6
答案:
B
16、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( )。
#include
main()
{ intx;
seanf(”%d”,&x);
if(x++>5)printf(”%d”,x);
elseprintf(”%d\n”,x--);}
A.7和5
B.6和3
C.7和4
D.6和4
答案:
A
17、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,
则逻辑表达式(m=a> b)&&(n=c> d)运算后,n的值为:
A.0
B.1
C.2
D.3
答案:
C
18、逻辑运算符两侧运算对象的数据类型
A.只能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
答案:
D
19、表示关系X< =Y< =Z的C语言表达式为________。
A.(X< =Y)&&(Y< =Z)
B.(X< =Y)AND(Y< =Z)
C.(X< =Y< =Z)
D.(X< =Y)&(Y< =Z)
答案:
A
20、判断字符型变量x是否是大写字母的正确的表达式______.
A.'A'<=x<='Z'
B.(x>=A)&&(x<=Z)
C.('A'<=x)&&('Z'=>x)
D.(x>='A')&&(x<='Z')
答案:
D
21、有如下程序
main0
{intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++
case2:
a++;b++
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是
A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=2
答案:
A
22、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是
if(x>y)
z=x;x=y;y=z;
A.x=10,y=20,z=30
B.x=20,y=30,z=30
C.x=20,y=30,z=10
D.x=20,y=30,z=20
答案:
B
23、以下程序的输出结果是
main()
{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.1
B.0
C.-1
D.值不确定
答案:
C
24、i、j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for(i=5; i; i--)
for(j=0; j< 4; j++){…}
A.20
B.24
C.25
D.30
答案:
A
25、以下程序的输出结果是
main()
{intx=10,y=10,i;
for(i=0;x> 8;y=++i)
printf("%d,%d",x--,y);
}
A.10192
B.9876
C.10990
D.101091
答案:
D
26、执行语句:
for(i=1;i++< 4;);后,变量i的值是______.
A.3
B.4
C.5
D.不定
答案:
C
27、以下程序的输出结果是
{int i,j,x=0;
for(i=0;i< 2;i++)
{x++;
for(j=0;j< 3;j++)
{ if(j%2)continue;
x++;
}
x++
}
printf("x=%d\n",x);
}
A.x=4
B.x=8
C.x=6
D.x=12
答案:
B
28、有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是
A.无限次
B.有语法错,不能执行
C.一次也不执行
D.执行1次
答案:
A
29、在while(x)语句中的x与下面条件表达式等价的是( )。
A.x==0
B.x==1
C.x!
=0
D.x!
=1
答案:
C
30、执行下面的程序段后,变量k中的值为
s[0]=k;k=s[1]*10;
A.不定值
B.33
C.30
D.10
答案:
A
31、若有说明:
inta[10];则对a数组元素的正确引用是
A.a[10]
B.a[3,5]
C.a(5)
D.a[10-10]
答案:
D
32、设有数组定义:
chararray[]=”China”;,则数组array所占的空间为( )。
A.4个字节
B.5个字节
C.6个字节
D.7个字节
答案:
C
33、从下列选项中选择不会引起二义性的宏定义是( )。
A)#definePOWER(X)X*X B)#definePOWER(X)(X)*(X)
C)#definePOWER(X)(X*X) D)#definePOWER(X)((X)*(X))
A.A
B.B
C.C
D.D
答案:
D
34、在说明语句:
int*f();中,标识符f代表的是
A.一个用于指向整型数据的指针变量
B.一个用于指向一维数组的行指针
C.一个用于指向函数的指针变量
D.一个返回值为指针型的函数名
答案:
D
35、 若有说明:
inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是
A.i=*p;
B.p*=*&j;
C.i=&j;
D.i=**p;
答案:
D
36、下面程序的输出是
main()
{charx=040;
printf("%d\n",x=x<<1);
}
A.100
B.160
C.120
D.64
答案:
D
37、C语言中____函数的递归调用。
A.允许
B.不允许
C.由用户自己而定
D.不确定
答案:
A
38、关于建立函数的目的,以下正确的说法是
A.提高程序的执行效率
B.提高程序的可读性
C.减少程序的篇幅
D.减少程序文件所占内存
答案:
B
39、有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5));
该函数调用语句中,含有的实参个数是
A.3
B.4
C.5
D.有语法错
答案:
A
40、以下函数
fff(floatx)
{
printf(”%d\n”,x*x);
}
的类型是( )。
A.与参数x的类型相同
B.void类型
C.int类型
D.无法确定
答案:
C
填空题:
(每题1.5分,共24分)
1、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为_____;一个double型数据在内存中所占的字节数为_________
答案:
4,8
2、设有以下变量定义,并已赋确定的值
charw;intx;floaty;doublez;
则表达式:
w*x+z-y所求得的数据类型为__________。
答案:
double
3、设x和y均为int型变量,且x=1,y=2,则以下表达式:
0+x/y的值为___。
答案:
0
4、若a是int型变量,则计算表达式后a的值为_______
a=25/3%3
答案:
2
5、语句:
x++;?
++x;x=x+1;?
x=l+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)
答案:
X+=1
6、若变量已正确定义,以下语句段的输出结果是——。
x=0;y=2;z=3;
switch(x)
{
caseO:
switch(y==2)
{
case1:
printf(”*”);break;
case2:
printf(”%”);break;
}
case1:
switch(z)
{
case1:
printf(”$”);
case2tprintf(”$”);break;
d
答案:
*#
7、设x,y、z均为int型变量,请写出描述“x或Y中至少有一个小于Z”的表达式——。
答案:
x
8、已知charch;则判断ch是英文字符的逻辑表达式是_______________
答案:
(ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A')
9、表示条件:
10< x< 100或x< 0的C语言表达式是________。
答案:
(X> 10&&X< 100)||X< 0
10、请写出以下程序的输出结果——。
#include
main()
{
inta=100:
if(a>100)
printf(”%d\n”,a>100);
else
pIintf(”%d\n”,a<=100);}
答案:
!
&&||
11、下面程序的功能是:
输出100以内能被3整除且个位数为6的所有整数,请填空。
#include< stdio.h>
main()
{inti,j;
for(i=0;______________;i++)
{j=i*10+6;
if(________)continue;
printf("%d",j);
}
}
答案:
i<10,j%3!
=0
12、下面程序的功能是:
将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。
请填空。
#include< stdio.h>
#include< string.h>
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i< =k-2;i+=2)
for(j=i+2;j< =k;_______________)
if(_______________
答案:
j+=2
a[i]>a[j]
13、读入一个1到9的数a,求s=a+aa+aaa+…+aa…a(共20项)。
请对下述程
序填空,其中temp保存当前处理项aa…a。
(每个空分别以序号标注,如:
(1)
____)
#include< stdio.h>
main()
{
intI;
longa,s,temp;
s=temp=0;
printf("Pleaseenteranumber(1-9)");
scanf(
(1)____);
s=a;
for(I=1;
(2)____;(3)____)
答案:
"%lf",&a,i<20,i++,a+a*10,temp
14、下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存人数组b,并按每行3个元素
输出数组b。
请填空。
#include
main()
{inta[10],b[10],i;
for(i=0;_________;i++)
scanf(”%d”,&a[i]);
for(i=1;__________;i++)
b[i]=a[i]-a[i-1];
for(i=1;i<10;i++)
{printf(”%3d”,b
答案:
i<10i<10i%3==0
15、下面程序的功能是:
将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。
#include
#include
main()
{chara[]=”clanguage”,t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j
if(___________)
{t=a[i];a[i]=a
答案:
i+=2
a[ij>a[j]
16、阅读以下程序并填空,该程序是求阶乘的累加和。
S=0!
+1!
+2!
+…+n!
#include
longf(intn)
{
inti:
longs;
s=________;
for(i=1;i<=n;i++)
s=________;
returns;
}
main()
{
longs;
intk,n;
scanf(”%
答案:
1s*i0f(k)
程序设计题:
(请在以下3题中任选2题作答,若3道全部解答,以前2道为准,每题8分,共16分)
1、编程序求出100到200之间同时满足除3余2和除5余3条件的数的个数。
答案:
main()
{
inti,num=0;
for(i=100;i< =200;i++)
{
if((i%3==2)&&(i%5==3))
num=num+1;
}
printf("\n%d",num);
}
本题答案:
6
2、回文数是指正读和反读都一样的正整数。
例如3773等都是回文数。
求出[1000,9999]以内的回文数是6的倍数的最大回文数。
答案:
main()
{
inta1,b1,a2,b2,i,hwm;
for(i=1000;i< =9999;i++)
{
a1=i/1000;
b1=i/100-a1*10;
b2=i/10-a1*100-b1*10;
a2=i%10;
if((a1==a2)&&(b1==b2)&&(i%6==0))
hwm=i;
}
printf("所求的最大回文数为%d",hwm);
}
参考答案:
3、编写程序,统计1000~9999之间的所有满足以下条件的四位数的个数。
该数是一个完全平方数,第1、2位数字之和为12,第3、4位数字之积为24。
答案:
#include< math.h>
main()
{intn=0;
inta,b,c,d,e,m;
for(m=32;m< =99;m++)
{
e=m*m;
a=e/1000;/*a为千位*/
b=(e%1000)/100;/*b为百位*/
c=((e%1000)%100)/10;/*