C语言初赛题库 带答案.docx
- 文档编号:9779146
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:29
- 大小:25.85KB
C语言初赛题库 带答案.docx
《C语言初赛题库 带答案.docx》由会员分享,可在线阅读,更多相关《C语言初赛题库 带答案.docx(29页珍藏版)》请在冰点文库上搜索。
C语言初赛题库带答案
1、执行以下程序时输人1234567,则输出结果是(D )。
#include
main()
{
inta=1,b;
scanf("%3d%2d",&a,&b);
printf("%d%d\n",a,b);
}
A.12367
B.12346
C.12312
D.12345
2、C语言主要是借助以下哪个功能来实现程序模块化(A)
A.定义函数
B.定义常量和外部变量
C.三种基本结构语句
D.丰富的数据类型
3、关于C语言中数的表示,以下叙述正确的是(B )。
A.只有整型数在允许范围内能精确无误的表示,实型数会有误差
B.只要在在允许范围内整型和实型都能精确表示
C.只有实型数在允许范围内能精确无误的表示,整型数会有误差
D.只有八进制表示的数在不会有误差
4、若有定义和语句:
inta,b;scanf("%d,%d",&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是D
A.3,5,
B.3,5,4
C.3,5
D.3.5
5、设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是(C )
A.auto
B.register
C.static
D.auto或register
6、若有定义语句intb=2;则表达式(b<2)/(3||b)的值是C
A.4
B.8
C.0
D.2
7、设有定义:
intx=3;,以下表达式中,值不为l2的是( D )。
A.x*=x+1
B.x++,3*x
C.x*=(1+x)
D.2*x,x+=6
8、以下关于long、int和short类型数据占用内存大小的叙述中正确的是( D )。
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定
9、若有定义语句:
intk1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为( B )。
A.0和1
B.0和20
C.10和1
D.10和20
10、下列程序的输出结果是( C )。
main()
{
doubled=3.2;
intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3
B.3.2
C.0
D.3.07
11、以下叙述中错误的是(C)
A.非零的数值型常量有正值和负值的区分
B.常量是在程序运行过程中值不能被改变的量
C.定义符号常量必须用类型名来设定常量的类型
D.用符号名表示的常量叫符号常量
12、有以下定义:
inta;longb;doublex,y;则以下选项中正确的表达式是( A )。
A.a%(int)(x-y)
B.a=x!
=y;
C.(a*y)%b
D.y=x+y=x
13、有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是(A)
A.20 30
B.20 50
C.30 50
D.30 20
14、下列关于C语言文件的叙述中正确的是( C )
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列构成,其类型只能是文本文件
15、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( A )。
A.auto和register
B.extem和register
C.auto和static
D.static和register
16、用8位无符号二进制数能表示的最大十进制数为(C)
A.127
B.128
C.255
D.256
17、执行下面的程序段后,变量k中的值为(A)。
intk=3,s[2];
s[0]=k;k=s[1]*10;
A不定值
B33
C30
D10
18、设有数组定义:
chararray[]="China";则数组array所占的空间为(C)。
A4个字节
B5个字节
C6个字节
D7个字节
19、给出以下定义
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为C
A数组X和数组Y等价
B数组x和数组Y的长度相同
C数组X的长度大于数组Y的长度
D数组X的长度小于数组Y的长度
20、下述对C语言字符数组的描术中错误的是C
A字符数组可以存放字符串
B字符数组中的字符串可以整体输入、输出
C可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D不可以用关系运算符对字符数组中的字符串进行比较
21、以下一维数组a的正确定义是(D)
Ainta(10);
Bfloatn=10,a[n];
Cintn;scanf("%d",&n);floata[n];
D#definesize10;longa[size];
17、有以下程序
#include
main()
{intb[3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=1;j++)t+=b[i][b[j][i]];
printf("%d",t);
}
程序运行后的输出结果是C
A1
B3
C2
D9
22、在C语言中,定义inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},i=5,则下列选项中不能正确引用A数组元素的是(c)。
Aa[2*i-12]
Ba[2*i-2]
Ca[12-i]
Da[2*i]
23.在C语言中,有以下程序main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i<5){if(p[i]%2)j+=p[i];i++;}printf("%d\n",j);}程序运行后的输出结果是(A)
A39
B45
C56
D60
24、在C语言中,若有定义:
inty=5,x[7]={1,2,3,4,5,6,7},则表达式y+=x[6]的值为(D)。
A9
B10
C11
D12
25、在执行charstr[10]=”china\0”;strlen(str)的结果是A
A5
B6
C7
D9
26、以下程序给数组所有的元素输入数据,空处应填入(C)
main()
{inta[10],i=0;
while(i<10)scanf(“%d”,____________);
}
A&a[i]
Ba[i++]
C&a[i++]
D&a[++i]
27、对二维数组的正确说明是C
Ainta[][]={1,2,3,4,5,6};
Binta[2][]={1,2,3,4,5,6};
Cinta[][3]={1,2,3,4,5,6};
Dinta[2,3]={1,2,3,4,5,6};
28、已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是(C)。
A数组a和b的长度相同
Ba数组长度小于b数组长度
Ca数组长度大于b数组长度
D上述说法都不对
29、合法的数组定义是D
Ainta[]="string";
Binta[5]={0,1,2,3,4,5};
Cchars="string";
Dchara[]={0,1,2,3,4,5};
30、阅读下列程序段,则程序段实现的功能是C
#include"stdio.h"
main()
{
intk[10];
intj;
for(j=0;j<10;j++)
scanf("%d",&k[j]);
for(j=9;j>=0;j--)
printf("%d,",k[j]);
}
A输入10个数据的顺序输入并输出
B输入10个数据的逆序存放
C输入10个数据的逆序输出
D以上叙述均错误
31、以下程序执行后的输出结果是(A)。
#include "string.h"
main( )
{ char *p[10]={ "abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
A. 2 B. 3 C. 4 D. 5
32、不能把字符串:
Hello!
赋给数组b的语句是B
Acharb[10]={'H','e','l','l','o','!
'};
Bcharb[10];b="Hello!
";
Ccharb[10];strcpy(b,"Hello!
");
Dcharb[10]="Hello!
";
33、若有以下语句,则正确的描述是( C )
chara[]="toyou";
charb[]={′t′,′o′,′y′,′o′,′u′};
Aa数组和b数组的长度相同
Ba数组长度小于b数组长度
Ca数组长度大于b数组长度
Da数组等价于b数组
34、已知:
chara[15],b[15]={"Ilovechina"};则在程序中能将字符串Ilovechina赋给数组a的正确语句是(D)
Aa="Ilovechina";
Bstrcpy(b,a);
Ca=b;
Dstrcpy(a,b);
35.若有说明:
intx[3][4];则对a数组元素的正确引用是(C)。
(A)x[2][4]
(B)x[1,3]
(C)x[4-2][0]
(D)x[0][4]
36.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是B。
A)k=*ptr1+*ptr2B)ptr2=kC)ptr1=ptr2D)k=*ptr1*(*ptr2)
37.若有说明:
int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是C。
A)p1=&m;p2=&p1;B)p1=&m;p2=&n;*p1=*p2;
C)p1=&m;p2=p1;D)p1=&m;*p1=*p2;
38.下面程序段中,for循环的执行次数是C。
char*s=”\ta\018bc”;
for(;*s!
=’\0’;s++)printf(“*”);
A)9B)7C)6D)5
39.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是B。
A)c=*p1+*p2B)p2=cC)p1=p2D)c=*p1*(*p2)
40.下面程序段的运行结果是C。
chara[]=”language”,*p;
p=a;
while(*p!
=’u’){printf(“%c”,*p-32);p++;}
A)LANGUAGEB)languageC)LANGD)langUAGE
41.以下说明不正确的是D。
A)chara[10]=”china”;B)chara[10],*p=a;p=”china”;
C)char*a;a=”china”;D)chara[10],*p;p=a=”china”;
42.若有定义:
inta[2][3];则对a数组的第i行第j列元素值的正确引用是A。
A)*(*(a+i)+j)B)(a+i)[j]C)*(a+i+j)D)*(a+i)+j
43.若有程序段:
inta[2][3],(*p)[3];p=a;则对a数组元素的正确引用是C。
A)(p+1)[0]B)*(*(p+2)+1)C)*(p[1]+1)D)p[1]+2
44.若有定义:
int(*p)[4];则标识符pC。
A)是一个指向整型变量的指针
B)是一个指针数组名
C)是一个指针,它指向一个含有四个整型元素的一维数组
D)定义不合法
45.若有定义:
intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是B。
A)x[3]B)p1=x+3,*p1++
C)p1=x+2,*(p1++)D)p1=x+2,*++p1
46.下面程序段的输出是C。
inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;
for(k=01;k<4;k++)q[k]=&a[k*3];
printf(“%d\n”,q[3][0]);
A)8B)16C)20D)输出不合法
47.若有定义intx[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*p)[3]=x;则能够正确表示数组元素x[1][2]的表达式是D。
A)*((*p+1)[2])B)(*p+1)+2
C)*(*(p+5))D)*(*(p+1)+2)
48.设有定义:
char*cc[2]={“1234”,”5678”};则正确的叙述是A。
A)cc数组的两个元素中各自存放了字符串”1234”和”5678”的首地址
B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
C)cc是指针变量,它指向含有两个数组元素的字符型一维数组
D)cc元素的值分别维”1234”和”5678”
49.若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是C。
A)(*p)max(a,b)B)*pmax(a,b);C)(*p)(a,b);D)*p(a,b);
50.若有以下说明和语句:
structstudent
{intage;
intnum;
}std,*p;p=&std;
则以下对结构体变量std中成员age的引用方式不正确的是__D____。
A.std.ageB.p->ageC.(*p).ageD.*p.age
51.以下关于typedef的叙述中错误的是__A___。
A.用typedef可以增加新的类型
B.用typedef可以定义各种类型名,但不能用来定义变量
C.用typedef只是将已有的类型用新的标识符来代表
D.使用typedef有利于程序的通用和移植
52.下列命令或语句中,正确的是__C______。
A.#defineMYNAME=”ABC”B.#includestdio.h
C.for(i=0;i<10;i--);D.structstudent{intnum};
53.设有如下定义。
structss{charnumber[10];
intage;charsex;}s[2],*p=s;
下面各输入语句中错误的是B。
A.scanf("%d",&(p).age)B.scanf("%d",&s.number)
C.scanf("%c",&s[0].sex)D.scanf("%c",&(p->sex))
54.设有如下定义,若要使p指向date中的a域,正确的赋值语句是C。
structs
{floata;intb;}d;
float*p;
A.p=&a;B.p=d.a
C.p=&d.a;D.p=&d
55.C语言中while和do-while循环的主要区别是A
A:
do-while的循环体至少无条件执行一次
B:
while的循环控制条件比do-while的循环控制条件严格
C:
do-while允许从外部转到循环体内;
D:
do-while的循环体不能是复合语句;
56.语句while(!
e);中的条件!
e等价于A
A:
e==0
B:
e!
=0
C:
e!
=1
D:
~e
57.下列循环语句中有语法错误的是D
A:
while(x=y)5;
B:
while(0);
C:
do2;while(x==b);
D:
dox++while(x==10);
58.下面程序片段,退出while循环时,s的值是__A__。
inti=0,s=1;
while(i<3)s+=(++i);
A:
7
B:
6
C:
5
D:
4
59.下面程序片段,退出while循环时,s的值是_C__。
inti=0,s=1;
while(i<3)s+=(i++);
A:
6
B:
5
C:
4
D:
3
60.以下程序的输出结果是(A)
main()
{inta=1,b=2,c=2,t;
while(a
printf(“%d,%d,%d”,a,b,c);
}
A:
1,2,0
B:
2,1,0
C:
1,2,1
D:
2,1,1
61.有以下程序段
#include
main()
{
while(getchar()!
=’\n’);
}
以下叙述中正确的是( C )。
A.此while语句将无限循环
B.getchar()不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
62.以下程序段是(C)
x=-1;
do
{x=x*x;}while(!
x);
A:
死循环
B:
循环执行两次
C:
循环执行一次
D:
有语法错误
63.有以下程序
main()
{ints=0,a=1,n;
scanf("%d",&n);
do
{s+=1;a=a-2;}
while(a!
=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是B
A:
-1
B:
-3
C:
-5
D:
0
64.以下程序执行后sum的值是(C)。
min()
{inti,sum;
for(i=1;i<6;i++)sum+=i;
printf(“%d\n”,sum);
}
A:
15
B:
14
C:
不确定
D:
0
65.有以下程序
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf(“%d\n”,s);
}
程序执行后的输出结果是(D)。
A:
自然数1~9的累加和
B:
自然数1~10的累加和
C:
自然数1~9中的奇数之和
D:
自然数1~10中的偶数之和
66.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已
赋值(c大于0)
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是B
A:
s=a+b;
B:
s=a+c;
C:
s=s+c;
D:
s=b+c;
67.要求以下程序的功能是计算:
s=1+1/2+1/3+…+1/100。
main()
{intn;floats;
s=1.0
for(n=100;n>1;n--)
s=s+1/n;
printf(“%6.4f\n”,s);
}
程序运行后输出结果错误,导致错误结果的程序行是(C)
A:
s=1.0
B:
for(n=100;n>1;n--)
C:
s=s+1/n;
D:
printf(“%6.4f\n”,s);
68.已有定义:
intx=3,y=4,z=5;,则表达式!
(x+y)+z-1&&y+z/2的值是D
A:
6
B:
0
C:
2
D:
1
69.有以下程序
#include
main()
{inta,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是(A)。
A:
2,1
B:
3,2
C:
4,3
D:
2,-1
70.下面的程序段中共出现了几处语法错误?
C
inta,b;
scanf("%d",a);
b=2a;
if(b>0)printf("%b",b);
A:
1
B:
2
C:
3
D:
4
71.C语言的switch语句中,case后B
A:
只能为常量
B:
只能为常量或常量表达式
C:
可为常量及表达式或有确定值的变量及表达式
D:
可为任何量或表达式
72.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为
假”的表达式是(C)
A:
(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B:
(x>=1)||(x<=10)||(x>=200)||(x<=210)
C:
(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D:
(x>=1)||(x<=10)&&(x>=200)||(x<=210)
73.若w=1,x=2,y=3,z=4,则表达式w w: y y: z的值是D A: 4 B: 3 C: 2 D: 1 74.设有intn=2;则++n+1==4的结果是C A: true B: false C: 1 D: 0 75.以下使i的运算结果为4的表达式是D A: inti=0,j=0;(i=3,(j++)+i); B: inti=1,j=0;j=i=((i=3)*2); C: inti=0,j=1;(j==1)? (i=1): (i=3); D: inti=1,j=1;i+=j+=2; 76.若执行以下程序时从键盘上输入9,_______则输出结果是B main() {intn; scanf("%d",&n); if(n++<10)printf("%d\n",n); elsep
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言初赛题库 带答案 语言 初赛 题库 答案