C语言试题集.docx
《C语言试题集.docx》由会员分享,可在线阅读,更多相关《C语言试题集.docx(61页珍藏版)》请在冰点文库上搜索。
C语言试题集
C语言题目
一选择题(50个)
1.在程序中可以用来作为变量名的合法的标识符是:
_______
AstaticB23_b1Cstu_1tD#33
2.下列运算符运算级别最高的是:
_________
A&&B+=C>=D!
3已知:
charstr1,str2[10];选择正确的输入语句:
________
Ascanf("%s%c",&str1,str2);Bscanf("%s%s",&str1,str2);
Cscanf("%c%c",&str1,str2);Dscanf("%c%s",&str1,str2);
4选择正确的运行结果:
_________
#include"stdio.h"
main()
{inta=1,b=10;
do{a++;
b-=a;
b--;
}while(b>0);
printf("a=%d,b=%d",a,b);
}
Aa=2,b=-1Ba=2,b=-2Ca=4,b=-1Da=4,b=-2
5.有一个二维数组s[3][4],其第2行第3列元素的正确表示是:
________
A*(*(s+2)+3)B*(s+2)+3Cs[2,3]Ds[3][2]
6.以下正确的描述是:
_________
Acontinue语句的作用是终止整个循环的执行。
Bcontinue语句的作用是结束本次循环的执行。
Ccontinue语句和break语句都可以在switch语句中使用。
Dbreak语句的作用是结束本次循环的执行。
7.假定x和y为double型,则表达式x=2,y=x+3/2的值是_____
A)3.500000B)3
C)2.000000D)3.000000
8.C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:
______
A用户指定传递方式B无传递
C单向值传递D地址传递
9若有以下说明语句:
structSTUDENT
{intnum;
charname[10];
floatcj;
}a1={1001,”liming”,97.5},*p=&a1;
不正确的输出语句是:
_________
Aprintf(“%f”,a1.cj);Bprintf(“%f”,p->cj);
Cprintf(“%f”,(*p).cj);Dprintf(“%f”,*p.cj);
10已知inta;则对指针变量正确的说明和初始化是:
________
Aint*p=a;Bintp=a;Cintp=&a;Dint*p=&a;
11.下列用于printf函数的控制字符常量中,代表"竖向跳格"的转义字符常量是______
A\bB\t
C\vD\f
12.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是_________
An=(n*100+0.5)/100.0
Bm=n*100+0.5,n=m/100.0
Cn=n*100+0.5/100.0
Dn=(n/100+0.5)*100.0
13设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是______
Ax&&y
Bx<=y
Cx||++y&&y-z
D!
(x)
14设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是________
Awhile循环执行10次
B循环是无限循环
C循环体语句一次也不执行
D循环体语句执行一次
15对表达式for(表达式1;;表达式3)可理解为_______
Afor(表达式1;0;表达式3)
Bfor(表达式1;1;表达式3)
Cfor(表达式1;表达式1;表达式3)
Dfor(表达式1;表达式3;表达式3)
16若有如下语句
intx=3;
do{printf("%d\n",x-=2);}
while(!
(--x));
则上面程序段________
A输出的是1
B输出的是1和-2
C输出的是3和0
D是死循环
17若变量a是int类型,并执行了语句:
a=‘A'+1.6;,则正确的叙述是__________
Aa的值是字符C
Ba的值是浮点型
C不允许字符型和浮点型相加
Da的值是字符‘A’的ASCII值加上1。
18以下程序段的输出结果是____________
inta=1234;
printf("%2d\n",a);
A12B34C1234D提示出错、无结果
19有以下程序
voidfun(inta,intb,intc)
{a=456,b=567,c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
输出结果是___________
A30,20,10
B10,20,30
C456,567,678
D678,567,456
20若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是____________
Ascanf("%d%d%d",&a,&b,d);Bscanf("%d%d%d",&a,&b,&d);
Cscanf("%d%d%d",a,b,d);Dscanf("%d%d%d",a,b,*d);
21若有说明:
inta[][4]={0,0};则下面不正确的叙述是________
A数组a的每个元素都可得到初值0
B二维数组a的第一维大小为1
C当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
22以下叙述正确的是_________
A可以把define和if定义为用户标识符
B可以把define定义为用户标识符,但不能把if定义为用户标识符
C可以把if定义为用户标识符,但不能把define定义为用户标识符
Ddefine和if都不能定义为用户标识符
23若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为__________
A无确定值Ba的地址C512D511
24以下程序的输出结果是_________
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c)b));
}
A5B4C6D不确定
25以下程序中,while循环的循环次数是___________
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(I==5)break;
i++;
}
......
}
A1B10
C6D死循环,不能确定次数
26以下程序的输出结果是__________
main()
{inta=0,i;
for(i=;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf("%d\n",a);
}
A31B13C10D20
27以下程序的输出结果是_________
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A1B0C非0的数D-1
28有以下程序
main()
{chara[]={′a′,′b′,′c′,′d′,′e′,′f′,′g′,′h′,′\0′};inti,j;
i=sizeof(a);j=strlen(a);
printf("%d,%d\b",i,j);
}
程序运行后的输出结果是__________
A9,9B8,9
C1,8D9,8
29以下程序的运行结果是___________
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A10B15
C100D150
30以下程序的输出结果是_________
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;
}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);
}
A20B24C5D15
31有如下程序
intfunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是___________
A12B13
C14D15
32若有以下程序
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中不正确的是________
A若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
D函数f无返回值,所以可用void将其类型定义为无值型
33有如下定义
structperson{charname[9];intage;};
structpersonclass[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};
根据上述定义,能输出字母M的语句是_________
Aprintf("%c\n",class[3].name);
Bprintf("%c\n",class[3].name[1]);
Cprintf("%c\n",class[2].name[1]);
Dprintf("%c\n",class[2].name[0]);
34以下程序的输出结果是__________
main()
{charch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A"AAAA"B"BBB"
C"BBBCC"D"CC"
35在C语言中,形参的缺省存储类是___________
AautoBregisterCstaticDextern
36以下程序执行后a的值是___________
main()
{intx,y=252,i=386,*m=&y,*z=&i;
x=(z==y);
printf("%d",x);
}
A252
B1
C0
D运行时出错,x无定值
37下列程序的输出结果是____________
structabc
{inta,b,c,s;};
main()
{structabcs[2]={{1,2,3},{4,5,6}};intt;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A5
B6
C7
D8
38若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是__________
Afopen("A:
\user\abc.txt","r")Bfopen("A:
\\user\\abc.txt","r+")
Cfopen("A:
\user\abc.txt","rb")Cfopen("A:
\\user\\abc.txt","w")
39若有定义:
char*st="howareyou";下列程序段中正确的是
Achara[11],*p;strcpy(p=a+1,&st[4]);
Bchara[11];strcpy(++a,st);
Cchara[11];strcpy(a,st);
Dchara[],*p;strcpy(p=&a[1],st+2);
40下列程序的运行结果是
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
A63
B36
C编译出错
D00
41若有定义:
intaa[8];则以下表达式中不能代表数组元aa[1]的地址的是____________
A&aa[0]+1B&aa[1]C&aa[0]++Daa+1
42若有下面的说明和定义,则sizeof(structaa)的值是
structaa
{intr1;doubler2;floatr3;
unionuu{charu1[5];longu2[2];}ua;
}mya;
A30
B29
C24
D22
43若有以下定义和语句:
___________
ints[4][5],(*ps)[5];
ps=s;
则对s数组元素的正确引用形式是
Aps+1B*(ps+3)Cps[0][2]D*(ps+1)+3
44以下程序的输出结果是__________
main()
{intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A3B4C1D9
45假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为______
Alog2n
Bn2
CO(n1.5)
Dn(n-1)/2
46在说明语句:
int*f();中,标识符f代表的是__________
A一个用于指向整型数据的指针变量
B一个用于指向一维数组的行指针
C一个用于指向函数的指针变量
D一个返回值为指针型的函数名
47线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是_________
A每个元素都有一个直接前件和直接后件
B线性表中至少要有一个元素
C表中诸元素的排列顺序必须是由小到大或由大到小
D除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
48以下程序的输出的结果是_______
intx=3;
main()
{inti;
for(i=1;i}
ncre()
{staicintx=1;
x*=x+1;
printf("%d",x);
}
A33B22C26D25
49若以下定义:
structlink
{intdata;
strucklink*next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
ab
datanextdatanext
┌──┬──┐┌──┬──┐
│5|┼──→│9│\0│
└──┴──┘└──┴──┘
↑p
c
datanext
┌──┬──┐
│7││
└──┴──┘
↑q
指针p指向变量a,q指向变量c。
则能够把c插入到a和b之间并形成新的链表的语句组是:
_______
A)a.next=c;c.next=b;B)p.next=q;q.next=p.next;
C)q->next=p->next;p->next=&c;D)(*p).next=q;(*q).next=&b;
50设有以下说明语句___________
typedefstruct
{intn;
charch[8];
}PER;
则下面叙述中正确的是
A)PER是结构体变量名B)PER是结构体类型名
C)typedefstruct是结构体类型D)struct是结构体类型名
二结果题(25个)
1.以下程序的输出结果是。
fun(intx,inty,intz){z=x*x+y*y;}
main()
{inta=31;
fun(5,2,a);
printf(“%d”,a);
}
2.以下程序的输出结果是________。
main()
{inti=1;
while(i<=12)
{if(!
(i%4))printf("%d,",i);
i++;
}
}
3.以下程序的输出结果是________。
main()
{chars[]="abcdef";
s[5]='\0';
printf("%s\n",s);
}
4.以下程序的输出结果是________。
main()
{inta[3][3]={{3,2,1},{4,5,6},{2,9,2}};
inti,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==2-j)s=s+a[i][j];
printf("s=%d",s);
}
5.以下程序的输出结果
main()
{
inta=10;
if(a++>10)printf("%d\n",a);
elseprintf("a=%d\n",a--);
}
运行结果_______
6.以下程序的输出结果
main()
{chars[]="abcdef";
s[4]='\0';
printf("%s\n",s);
}
运行结果________
7.以下程序的输出结果
main()
{inti=1;
while(i<=12)
{if(!
(i%3))printf("%d,",i);
i++;
}
}
运行结果________
8.以下程序的输出结果
main()
{inta[3][3]={{3,2,1},{4,5,6},{2,9,2}};
inti,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==2-j)s=s+a[i][j];
printf("s=%d",s);
}
运行结果________
9.以下程序的输出结果
main()
{intx=25,y=15;
if(x>y)swap(&x,&y);
printf("%d",x);
}
swap(int*p1,int*p2)
{int*temp;
temp=p1;
p1=p2;
p2=temp;
}
运行结果________
10.以下程序的输出结果:
main()
{inta=21,b=11;
printf("%d\n",--a+b,--b+a);
}
11.说出下面这个程序的运行结果:
charbuf1[10]="hello";
charbuf2[10]="hello";
if(buf1==buf2)
printf("equal!
");
elseprintf("notequal!
");
12.下面这个程序的输出是什么?
________
#include
main()
{
inty=10;
while(y--);
printf("y=%d\n",y);
}
13.该源程序执行后,屏幕上显示什么?
_________
voidmain()
{
inta;
floatb;
a=4;
b=9.5;
printf("a=%d,b=%4.2f\n",a,b);
}
14.若k,g均为int型变量,则以下语句的输出为_________
intk,g;
k=017;
g=111;
printf("%d,",k);
printf("%x\n",g);
15.以下程序的输出结果是___________
main()
{inta=12,b=12;
printf("%d,%d\n",--a,++b);
}
16下列程序的运行结果是:
__________
main()
{
inta=2,c=5;
printf("a=%d,b=%d\n",a*c++,c);
}
17.若有以下程序段,
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是________
18.有如下程序
main0
{inti,sum;
for(i=1;i<=3;sum++)sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是:
____________
19.有以下程序
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是_________
20.以下程序中,while循环的循环次数是_________
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
}
21.有以下程序
ma