C语言题库全Word文档下载推荐.docx
《C语言题库全Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言题库全Word文档下载推荐.docx(116页珍藏版)》请在冰豆网上搜索。
4.有以下程序
voidfun(char*a,char*b)
{a=b;
(*a)++;
main()
{charc1='
A'
c2='
*p1,*p2;
p1=&
c1;
p2=&
c2;
fun(p1,p2);
%c%c\n"
c1,c2);
}
程序运行后的输出结果是( )。
A)Ab
B)aa
C)Aa
D)Bb
5.以下不能正确定义二维数组的选项是( )。
A)inta[2][2]={{1},{2}};
B)inta[][2]={1,2,3,4};
C)inta[2][2]={{1},2,3};
D)inta[2][]={{1,2},{3,4}};
D×
6.若有定义:
int*p[3];
,则以下叙述中正确的是( )。
A)定义了一个基类型为int的指针变量p,该变量具有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名为*p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
7.下列条件语句中,功能与其他语句不同的是( )。
A)if(a)printf("
elseprintf("
y);
B)if(a==0)printf("
C)if(a!
=0)printf("
D)if(a==0)printf("
8.以下叙述中错误的是( )。
A)C语句必须以分号结束
B)复合语句在语法上被看作一条语句
C)空语句出现在任何位置都不会影响程序运行
D)赋值表达式末尾加分号就构成赋值语句
9.有以下程序段
intn,t=1,s=0;
scanf("
&
n);
do{s=s+t;
t=t-2;
}while(t!
=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是( )。
A)任意正奇数B)任意负偶数C)任意正偶数D)任意负奇数
10.设变量已正确定义,则以下程序不能正确计算f=n!
的程序段是( )。
A)f=1;
for(i=1;
=n;
i++)
f*=i;
B)f=0;
i--)
f*=i;
C)f=1;
for(i=n;
i>
1;
f=f*i;
D)f=1;
for(i=n;
=2;
i--)
f=f*i
11.以下叙述中错误的是
A)可以通过typedef增加新的类型
B)可以用typedef将已存在的类型用一个新的名字来代表
C)用typedef定义新的类型名后,原有类型名仍有效
D)用typedef可以为各种类型起别名,但不能为变量起别名
12.下列叙述中错误的是________。
A)一个C语言程序只能实现一种算法
B)C程序可以由多个程序文件组成
C)C程序可以由一个或多个函数组成
D)一个C函数可以单独作为一个C程序文件存在
13.若有以下定义和语句
uniondata
{inti;
charc;
floatf;
}x;
inty;
则以下语句正确的是________。
A)x=10.5;
B)x.c=101;
C)y=x;
D)printf("
14.有以下程序
#include"
stdio.h"
{charb,c;
b='
c='
for(i=0;
6;
{if(i%2)putchar(i+b);
elseputchar(i+c);
}printf("
\n"
);
程序运行后的输出结果是
A)ABCDEF
B)AbCdEf
C)aBcDeF
D)abcdef
15.有以下程序
structS
{inta,b;
}data[2]={10,100,20,200};
{structSp=data[1];
printf("
++(p.a));
A)10
B)11
C)20
D)21
16.下列定义数组的语句中,正确的是
A)intN=10;
intx[N];
B)#defineN10
C)intx[0..10];
D)intx[];
17.有以下程序
#include<
stdio.h>
{shortc=124;
c=c____;
c);
若要使程序的运行结果为248,应在下划线处填入的是
A)>
>
2
B)|248
C)&
248
D)<
<
1
18.有以下程序
#include<
main()
{
chara,b,c,d;
scanf("
%c%c"
a,&
b);
c=getchar();
d=getchar();
%c%c%c%c\n"
a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,<
CR>
代表回车,注意:
回车也是一个字符)
12<
34<
则输出结果是()。
A)1234B)12
C)12D)12
334
19.有以下程序:
{inti,j,m=1;
3;
i++)
{for(j=3;
j>
0;
j--)
{if(i*j>
3)break;
m*=i*j;
m=%d\n"
m);
程序运行后的输出结果是()
A)m=6B)m=2
C)m=4D)m=5
20.以下关于return语句的叙述中正确的是()。
A)一个自定义函数中必须有一条return语句
B)一个自定义函数中可以根据不同情况设置多条return语句
C)定义成void类型的函数中可以有带返回值的return语句
D)没有return语句的自定义函数在执行结束时不能返回到调用处
二、填空题
1.当调用函数时,实参是一个数组名,则向函数传递的是()。
,正确常答案是:
数组的首地址或数组首地址, ×
2.以下程序的输出结果是()。
inta=1234;
printf("
%2d\n"
,a);
,正确答案是:
1234, ×
3.下列程序的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
给程序填空。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#include<
conio.h>
#defineM81
intfun(char*ss,charc)
{inti=0;
for(;
_____________;
ss++)
if(*ss==c)i++;
returni;
{chara[M],ch;
clrscr();
\nPleaseenterastring:
"
gets(a);
\nPleaseenterachar."
ch=getchar();
\nThenumberofthecharis:
fun(a,ch));
*ss!
='
\0'
, ×
4.设有如下宏定义
#defineMYSWAP(z,x,y)
{z=x;
x=y;
y=z;
以下程序段通过宏调用实现变量a,b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(_______,a,b);
c, ×
5.在计算机中,字符的比较是对它们的()进行比较。
ASCII码或ASCII, ×
6.以下程序的输出结果是()。
unsignedfun6(unsignednum)
{unsignedk=1;
do
{
k*=num%10;
num/=10;
}while(num);
returnk;
{unsignedn=26;
%d\n"
fun6(n));
12, ×
7.以下程序的输出结果是
{inta=1,b=2;
a=a+b;
b=a-b;
a=a-b;
%d,%d\n"
a,b);
2,1, ×
8.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*)【】;
malloc(11)或malloc(sizeof(char)*11), ×
9.以下程序的输出结果是【】。
{intarr[]={30,25,20,15,10,5},*p=arr;
p++;
*(p+3));
10, ×
10.以下程序运行后的输出结果是【】。
structNODE
{intnum;
structNODE*next;
};
main()
{structNODEs[3]={{1,'
},{2,'
},{3,'
}},*p,*q,*r;
intsum=0;
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s;
p=s;
q=p->
next;
r=q->
sum+=q->
next->
num;
sum+=r->
1.设有以下说明语句
structex
{intx;
floaty;
charz;
}example;
则下面的叙述中不正确的是
A)struct结构体类型的关键字
B)example是结构体类型名
C)x,y,z都是结构体成员名
D)structex是结构体类型
2.以下程序的输出结果是
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;
i++)printf("
%d,"
x[i][2-i]);
A)1,5,9
B)1,4,7
C)3,5,7
D)3,6,9
3.以下程序的输出结果是
#defineM(x,y,z)x*y+z
{inta=1,b=2,c=3;
M(a+b,b+c,c+a));
A)19
B)17
C)15
D)12
4.有以下程序段
intm=0,n=0;
charc='
%d%c%d"
m,&
c,&
printf("
%d,%c,%d\n"
m,c,n);
若从键盘上输入:
10A10<
回车>
,则输出结果是:
( )。
A)10,A,10
B)10,a,10
C)10,a,0
D)10,A,0
5.有以下程序
{ints=0,a=1,n;
scanf("
do
{s+=1;
a=a-2;
while(a!
s);
若要使程序的输出值为2,则应该从键盘给n输入的值是( )。
A)-1
B)-3
C)-5
D)0
6.用C语言编写的代码程序( )。
A)可立即执行
B)是一个源程序
C)经过编译即可执行
D)经过编译解释才能执行
7.若有以下说明和语句,intc[4][5],(*p)[5];
p=c;
能正确引用c数组元素的是( )。
A)p+1
B)*(p+3)
C)*(p+1)+3
D)*(p[0]+2])
8.以下能正确定义且赋初值的语句是( )。
A)intn1=n2=10;
B)charc=32;
C)floatf=f+1.1;
D)doublex=12.3E2.5;
9.有以下程序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;
i for(j=i+1;
j if(a[i] }
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa+2,5);
i<
10;
i++)printf("
aa[i]);
}
A)1,2,3,4,5,6,7,8,9,10, B)1,2,7,6,3,4,5,8,9,10,
C)1,2,7,6,5,4,3,8,9,10, D)1,2,9,8,7,6,5,4,3,10,
10.以下不合法的用户标识符是
A)j2_KEY
B)Double
C)4d
D)_8_
11.有以下程序
main()
{
inti,j,x=0;
2;
{x++;
for(j=0;
j<
=3;
j++)
if(j%2)continue;
x++;
}
x=%d\n"
程序执行后的输出结果是
A)x=4
B)x=8
C)x=6
D)x=12
12.下列叙述中正确的是________。
A)break语句只能用于switch语句
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
13.有以下程序
fun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm;
{intj=1,m=1,k;
k=fun(j,m);
k);
执行后的输出结果是________。
A)5,5 B)5,11 C)11,11 D)11,5
intfun(intx,inty)
{if(x!
=y)return((x+y)/2);
elsereturn(x);
{inta=4,b=5,c=6;
fun(2*a,fun(b,c)));
A)3
B)6
C)8
D)12
structord
{intx,y;
}dt[2]={1,2,3,4};
structord*p=dt;
++(p->
x));
y));
A)1,2
B)4,1
C)3,4
D)2,3
16.)以下程序段完全正确的是
A)int*p;
&p);
B)int*p;
p);
C)intk,*p=&
k;
D)intk,*p:
*p=&
17.若要定义一个具有5个元素的整型数组,以下错误的定义语句是
A)inta[5]=﹛0﹜;
B)intb[]={0,0,0,0,0};
C)intc[2+3];
D)inti=5,d[i];
18.以下C语言用户标识符中,不合法的是()。
A)_1B)AaBc
C)a_bD)a--b
{inta=1,b=2;
for(;
a<
8;
a++){b+=a;
a+=2;
a,b);
程序运行后的输出结果是()。
A)9,18B)8,11
C)7,1lD)10,14
20.有以下程序:
intf(intt[],intn);
{inta[4]={1,2,3,4},s;
s=f(a,4);
intf(intt[],intn)
{if(n>
0)returnt[n-1]+f(t,n-1);
elsereturn0;
程序运行后的输出结果是()。
A)4B)10
C)14D)6
1.以下程序的输出结果是().
intfun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
returnm;
{intj=4,m=1,k;
k=fun(j,m);
8,17, ×
2.下面程序的输出结果是
charb[]="
ABCD"
{char*chp;
for(chp=b;
*chp;
chp+=2)
%s"
chp);
ABCDCD, ×
3.C语言程序的注释可以出现在程序中的任何地方,一个注释以()作为开始,以*/作为结束。
/*, ×
4.以下程序段中,错误的是第()行。
①#include<
②main()
③{charstr[14];
str[]={"
IloveChina"
};
④printf("
str);
⑤}
3, ×
5.以下程序的输出结果是()。
k*=num%10