阶段一C语言题库.docx
《阶段一C语言题库.docx》由会员分享,可在线阅读,更多相关《阶段一C语言题库.docx(145页珍藏版)》请在冰豆网上搜索。
阶段一C语言题库
一、单选题1
二、多选题13
三、填空题13
四、判断题23
五、简答题23
六、程序分析题27
七、编程题38
一、单选题
1.break关键字在哪一种语法结构中不能使用?
(C)
A.for语句B.switch语句
C.if语句D.while语句
2.现在最快且最通用的排序算法是什么?
(A)
A.快速排序B.冒泡排序
C.选择排序D.外部排序
3.设x和y均为bool变量,则x&y为真的条件是 (A)。
A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假
4.下面的哪个保留字不能作为函数的返回类型(C)。
A.void B.int C.new D.long
5.假定a为一个整型数组名,则元素a[4]的字节地址为 A 。
A.a+4 B.a+8 C.a+16 D.a+32
6.C库函数strstr的功能是?
(A)
A.查找子串B.计算字符串长度
C.字符串比较D.连结字符串
7.在程序中可以用来作为变量名的合法的标识符是:
___c__。
AstaticB23_b1Cstu_1tD#33
8.下列运算符运算级别最高的是:
___d__。
A&&B+=C>=D!
9.已知:
charstr1,str2[10];选择正确的输入语句:
__d___。
Ascanf("%s%c",&str1,str2);Bscanf("%s%s",&str1,str2);
Cscanf("%c%c",&str1,str2);Dscanf("%c%s",&str1,str2);
10.有一个二维数组s[3][4],其第2行第3列元素的正确表示是:
_____。
A*(*(s+2)+3)B*(s+2)+3Cs[2,3]Ds[3][2]
11.以下正确的描述是:
__d___。
Acontinue语句的作用是终止整个循环的执行。
Bcontinue语句的作用是结束本次循环的执行。
Ccontinue语句和break语句都可以在switch语句中使用。
Dbreak语句的作用是结束本次循环的执行。
12.假定x和y为double型,则表达式x=2,y=x+3/2的值是:
___a__。
A)3.500000B)3C)2.000000D)3.000000
13.C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:
___d__。
A用户指定传递方式B无传递C单向值传递D地址传递
14.若有以下说明语句:
structSTUDENT
{intnum;
charname[10];
floatcj;
}a1={1001,”liming”,97.5},*p=&a1;
不正确的输出语句是:
__d___。
Aprintf(“%f”,a1.cj);Bprintf(“%f”,p->cj);
Cprintf(“%f”,(*p).cj);Dprintf(“%f”,*p.cj);
15.已知inta;则对指针变量正确的说明和初始化是:
__d___。
Aint*p=a;Bintp=a;Cintp=&a;Dint*p=&a;
16.若有定义:
intaa[8];则以下表达式中不能代表数组元aa[1]的地址的是:
___a__。
A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+1
17.若有下面的说明和定义,则sizeof(structaa)的值是:
___c__。
structaa
{doubler2;intr1;floatr3;
unionuu{charu1[5];longu2[2];}ua;
}mya;
A)30B)29C)24D)22
18.若有以下定义和语句:
___c__。
ints[4][5],(*ps)[5];
ps=s;
则对s数组元素的正确引用形式是
A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+3
191.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为:
___d__。
A)log2nB)n2C)O(n1.5)D)n(n-1)/2
20.在说明语句:
int*f();中,标识符f代表的是:
___d__。
A)一个用于指向整型数据的指针变量
B)一个用于指向一维数组的行指针
C)一个用于指向函数的指针变量
D)一个返回值为指针型的函数名
21.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是:
___d__。
A)每个元素都有一个直接前件和直接后件
B)线性表中至少要有一个元素
C)表中诸元素的排列顺序必须是由小到大或由大到小
D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
22.若以下定义:
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之间并形成新的链表的语句组是:
___c__。
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;
23.设有以下说明语句:
___b__。
typedefstruct
{intn;
charch[8];
}PER;
则下面叙述中正确的是
A)PER是结构体变量名B)PER是结构体类型名
C)typedefstruct是结构体类型D)struct是结构体类型名
24.若有说明:
inta[][4]={0,0};则下面不正确的叙述是:
___d__。
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
25.以下叙述正确的是:
___d__。
A)可以把define和if定义为用户标识符
B)可以把define定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把define定义为用户标识符
D)define和if都不能定义为用户标识符
26.若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为:
_d____。
A)无确定值B)a的地址C)512D)511
27.以下程序中,while循环的循环次数是:
__d___。
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(I==5)break;
i++;
}
......
}
A)1B)10C)6D)死循环,不能确定次数
28.若有以下程序:
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中不正确的是:
__c___。
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无值型
29.有如下定义
structperson{charname[9];intage;};
structpersonclass[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};
根据上述定义,能输出字母M的语句是:
___d__。
A)printf("%c\n",class[3].name);
B)printf("%c\n",class[3].name[1]);
C)printf("%c\n",class[2].name[1]);
D)printf("%c\n",class[2].name[0]);
30.在C语言中,形参的缺省存储类是:
___a__。
A)autoB)registerC)staticD)extern
31.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是:
___b__。
A)fopen("A:
\user\abc.txt","r")B)fopen("A:
\\user\\abc.txt","r+")
C)fopen("A:
\user\abc.txt","rb")C)fopen("A:
\\user\\abc.txt","w")
32.若有定义:
char*st="howareyou";下列程序段中正确的是:
___a__。
A)chara[11],*p;strcpy(p=a+1,&st[4]);
B)chara[11];strcpy(++a,st);
C)chara[11];strcpy(a,st);
D)chara[],*p;strcpy(p=&a[1],st+2);
33.下列用于printf函数的控制字符常量中,代表"竖向跳格"的转义字符常量是:
_c_。
A)\bB)\tC)\vD)\f
34.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是:
___a__。
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0
35.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是:
___d__。
A)x&&yB)x<=yC)x||++y&&y-zD)!
(x)
36.设有程序段:
___c__。
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是
A)while循环执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
37.对表达式for(表达式1;;表达式3)可理解为:
___b__。
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
38.若有如下语句
intx=3;
do{printf("%d\n",x-=2);}
while(!
(--x));
则上面程序段:
___b__。
A)输出的是1
B)输出的是1和-2
C)输出的是3和0
D)是死循环
39.若变量a是int类型,并执行了语句:
a=‘A'+1.6;,则正确的叙述是:
___a__。
A)a的值是字符C
B)a的值是浮点型
C)不允许字符型和浮点型相加
D)a的值是字符‘A’的ASCII值加上1。
40.若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是:
___a__。
A)scanf("%d%d%d",&a,&b,d);B)scanf("%d%d%d",&a,&b,&d);
C)scanf("%d%d%d",a,b,d);D)scanf("%d%d%d",a,b,*d);
41.__c__是合法的用户自定义标识符。
A)2bB)floatC)foo-99D)_32
42.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是:
___c__。
A)-3B)9C)-12D)6
43.对于以下的变量定义,表达式___c__不符合C语言语法。
structnode{
intlen;
char*pk;
}x={2,"right"},*p=&x;
A)p->pkB)*p.pkC)*p->pkD)*x.pk
44.设有inta[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是:
_c___。
A)10,11,12B)11,12,12C)10,12,12D)11,11,12
45.表达式sizeof(”hello”)与strlen(“hello”)的值分别是:
___c__。
A)6,6B)5,5C)6,5D)5,6
46.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是:
___b_。
A)free(q);p->next=q->next;B)(*p).next=(*q).next;free(q);
C)q=(*q).next;(*p).next=q;free(q);D)q=q->next;p->next=q;p=p->next;free(p);
47.___d__是合法的用户自定义标识符。
A、b-bB、floatC、D、_isw
48.___c__把x、y定义成float类型变量,并赋同一初值3.14。
A、floatx,y=3.14;B、floatx,y=2*3.14;
C、floatx=3.14,y=x=3.14;D、floatx=y=3.14;
49.下面四个选项中,均是C语言关键字的选项是:
___a,b__。
A.autoenuminclude
B.switchtypedefcontinue
C.signedunionscanf
D.ifstructtype
50.下列一维数组说明中,正确的是:
___a,c__。
A.#defineSIZE8+2
floatb[SIZE];
B.intn;scanf(“%d”,&n);floatb[n];
C.constintm=7;floata[m];//这个要区分c文件和c++文件
D.inta(10);
51.下列字符数组初始化语句中,正确的是:
___A__。
A.charc[]=“newspaper”;B.charc[8]={“newspaper”};
C.charc[10]={‘newspaper’};D.charc[12]=‘newspaper’;
52.设x、y、z都是整型变量,x、y的初值都是5,执行z=(++x)+(y--)+1后,x、y、z三变量的值按顺序是:
___d__。
A.5,5,11B.6,6,13C.4,6,12D.6,4,12
53.以下转义字符中,表示“换页”的是:
__b___。
A.\vB.\fC.\bD.\t
54.在内存中要开辟多少字节来存放字符’\n’:
___a__。
A.1B.2C.3D.4
55.有变量说明inta=3,则表达式a<1&&--a>1和运算完后a的值应该是:
___B__。
A.0和2B.0和3C.1和2D.1和3
56.设x和y都是int类型的数,则下列表达式的值不为7的是:
___c__。
A.(x=y=6,x+y,x+1)
B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)
D.(y=6,y+1,x=y,x+1)
57.extern关键字的作用是什么?
(D)
A.声明外部链接B.声明外部头文件引用
C.声明使用扩展C++语句D.声明外部成员函数、成员数据。
58.for(int x=0,y=o;!
x& &y<=5;y++)语句执行循环的次数是(c)
A)0 B)5 C)6 D)无次数
59.考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是(c)
A)test(5); B)test(5,8); C)test(6,"#") D)test(0,0."*");
60.C++语言的跳转语句中,对于break和continue说法正确的是(c)
A)break语句只应用与循环体中
B)continue语句只应用与循环体中
C)break是无条件跳转语句,continue不是
D)break和continue的跳转范围不够明确,容易产生问题
以下题目为程序输出结果题
1.选择正确的运行结果:
___d__。
#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
2.以下程序的输出结果是:
__b___。
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);
}
A)3B)4C)1D)9
3.以下程序的输出结果是:
___c__。
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
b);
}
A)5B)4C)6D)不确定
4.以下程序的输出结果是:
__a__。
main()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf("%d\n",a);
}
A)31B)13C)10D)20
5.以下程序的输出结果是:
__a__。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A)1B)0C)非0的数D)-1
6.有以下程序
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);
}
程序运行后的输出结果是:
___d__。
A)9,9B)8,9C)1,8D)9,8
7.以下程序的运行结果是:
___b__。
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A)10B)15C)100D)150
8.以下程序的输出结果是:
___d__。
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);
}
A)20B)24C)5D)15
9.有如下程序
intfunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是:
___d__。
A)12B)13C)14D)15
10.以下程序的输出结果是:
___b__。
main()
{charch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A)"AAAA"B)"BBB"C)"BBBCC"D)"CC"
11.以下程序执行后a的值是:
___d__。
main()
{intx,y=252,i=386,*m=&y,*z=&i;
x=(z==y);
printf("%d",x);
}
A)252B)1C)0D)运行时出错,x无定值
12.下列程序的输出结果是:
___b__。
structabc
{inta,b,c,s;};
main()
{structabcs[2]={{1,2,3},{4,5,6}};intt;
t=s[0].a+s[1].b;