C语言程序设计考试模拟题.docx
《C语言程序设计考试模拟题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计考试模拟题.docx(66页珍藏版)》请在冰豆网上搜索。
C语言程序设计考试模拟题
C语言程序设计考试
考试总分:
100分考生选择题总得分:
92分
一、单选题(每题1分,共100题)
1.C语言中主函数的个数是(D)。
正确
A.2个
B.任意个
C.10个
D.1个
2.C程序中用/**/括起来的部分为(B)正确
A.输出语句
B.注释语句
C.输入语句
D.执行语句
3.C程序的基本单位是(B)正确
A.语句
B.函数
C.字符
D.程序行
4.C程序中有且只能有一个(A)正确
A.main函数
B.输出函数
C.输入函数
D.头文件
5.C程序中每个语句和数据声明的最后必须有一个(A).正确
A.分号
B.句号
C.星号
D.圆括号
6.下列有关算法的说法错误的是(D)正确
A.为解决一个问题而采取的方法和步骤就称为算法
B.计算机算法可以分为:
数值运算算法和非数值运算算法
C.算法是程序的灵魂
D.算法是程序的体现,即先有程序后有算法
7.C程序的三种基本结构是(B)。
正确
A.递归结构,循环结构,转移结构
B.顺序结构,选择结构,循环结构
C.嵌套结构,递归结构,顺序结构
D.循环结构,转移结构,顺序结构
8.若有说明语句"inta[10],*p=a;",对数组元素的正确引用是(D)错误正确答案:
C
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
9.若定义inta,*p1;charb,*p2;则以下语句正确的是(B)正确
A.p1=a;
B.p1=&a;
C.p1=p2;
D.p1=&b;
10.有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}执行后的输出结果是(C)。
正确
A.1
B.2
C.3
D.4
11.若有说明语句:
double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是(D)。
正确
A.*p=&a;scanf("%1f",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%1f",*p);
D.p=&a;scanf("%1f",p);
12.语句int*p;说明了(C)正确
A.p是指向一维数组的指针
B.p是指向函数的指针,该函数返回一int型数据
C.p是指向int型数据的指针
D.p是函数名,该函数返回一指向int型数据的指针
13.若有说明语句:
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);
14.定义指针变量时,需要在指针变量名前加上(C)正确
A.!
B.@
C.*
D.&
15.若有以下定义inta[10],*p=a;则p+5表示(A)正确
A.元素a[5]的地址
B.元素a[5]的值
C.元素a[6]的地址
D.元素a[6]的值
16.下列不正确的转义字符是(D)。
错误正确答案:
C
A.\\'
B.\"
C.074'
D.\0'
17.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)。
正确
A.必须为字母
B.必须为下划线
C.必须为字母或下划线
D.可以是字母,数字和下划线中任一字符
18.以下选项中不属于C语言的类型的是(D)。
正确
A.signedshortint
B.unsignedlongint
C.unsignedint
D.longshort
19.在C语言中,合法的长整形常数是(A)。
错误正确答案:
B
A.3452
B.0L
C.3553%
D.-3452
20.有如下说明和语句
inta=5;
a++;
此处表达式a++的值是(C)
正确
A.7
B.6
C.5
D.4
21.若有inta;floatb;doublec;scanf(“%2d%3f%2lf”,&a,&b,&c);当输入456321475223时,执行printf(“%d,%.0f,%.0lf”,a,b,c);时,输出为(D)正确
A.23,257,41
B.45,632.0,14.0
C.45,632.,14
D.45,632,14
22.以下能正确定义变量a、b和c并为其赋值的语句是(D)正确
A.inta=5;b=5;c=5;
B.inta,b,c=5;
C.a=5,b=5,c=5;
D.inta=5,b=5,c=5;
23.已知字母"A"的ASCII码为十进制的65,下面程序输出正确的是(A)
main()
{
charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
正确
A.67,D
B.B,C
C.不确定的值
D.C,D
24.以下程序的输出结果(B)。
#include
#include
main()
{
chara[100]={‘a’,’b’,’c’,’d’,’e’,’f’,’h’,’i’,’j’};
printf(“%d\n”,strlen(str));
}
正确
A.6
B.9
C.11
D.不能正常输出
25.设已定义x为double类型变量
x=213.82631;
printf("%-6.2e\n",x);
则以上语句(C)。
正确
A.输出格式描述符的域宽不够,不能输出
B.输出为21.38e+01
C.输出为2.14e+002
D.输出为-2.14e2
26.下述程序段的输出结果是(A)
{inta=5;
a%=7;
printf(“%d,”,A.;
a+=a*=a-=a*=2;
printf(“%d”,A);}
正确
A.5,0
B.0,0
C.5,12
D.0,12
27.C语言赋值语句不正确的是(D)。
正确
A.x=1,y=2;
B.x++;
C.x=y=5;
D.y=int(x);
28.阅读以下程序:
#include
voidmain()
{intx;
for(x=5;x>0;x--)
if(x--<5)printf("%d,",x);
elseprintf("%d,",x++);}
程序运行后的输出结果是(B)。
正确
A.4,3,2
B.4,3,1,
C.5,4,2
D.5,3,1,
29.定义a为整型,下列表达式a=3>6的运行后,a的值为(A)正确
A.0
B.1
C.3
D.表达式错误
30.下列程序的输出结果是(D)
main()
{inta=4;
a*=a+=6;
printf(“%d\n”,a);}
正确
A.40
B.60
C.80
D.100
31.以下程序的输出结果是(A)。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);}正确
A.1
B.0
C.非0数
D.-1
32.设有定义:
inta=1,b=2,c=3;以下语句中与其他三个不同的是(C)正确
A.if(a>b)c=a,a=b,b=c;
B.if(a>b){c=a,a=b,b=c;}
C.if(a>b)c=a;a=b;b=c;
D.if(a>b){c=a;a=b;b=c;}
33.若变量已经正确说明,则以下程序段(A)
#include
voidmain(){
inta=8;
intb=6;
printf(a>b?
"&&&a=%d":
"!
!
!
b=%d",a,b);
}正确
A.输出为:
&&&a=8
B.输出为:
!
!
!
b=8
C.输出为:
&&&a=8!
!
!
b=8
D.全部错误
34.有以下程序,若输入为字符s,则程序运行结果为(A)
#include”stdio.h”
main()
{
charch;
ch=getchar();
switch(ch)
{case’a’:
printf(”a=%c\n”,ch);
default:
printf(”end!
\n”);
case’b’:
printf(”b=%c\n”,ch);
case’c’:
printf(”c=%c\n”,ch);
}
}正确
A.end!
<换行>b=s<换行>c=s
B.end!
C.有语法错误
D.a=send!
35.下列程序段的执行结果(A)inta=8,b=1;
if(a>=5)printf("%d",b+a);
elseif(a>b)printf("%d",a-b);
elseprintf("%d",b);正确
A.9
B.7
C.1
D.编译错误
36.当a=1,b=2,c=3,d=4时,执行下面程序段后,x的值是(A)
if(a
if(celse
if(aif(belsex=3;
elsex=6;
elsex=7;正确
A.1
B.6
C.3
D.2
37.C语言中数组下标的下限是(B)。
正确
A.1
B.0
C.视具体情况而定
D.无固定下限
38.设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为(C)正确
A.不定值
B.4
C.3
D.1
39.两次运行下面程序,如果从键盘分别输入3和2,则输出结果是(A)
#include
voidmain(){
intx;
scanf("%d",&x);
if(x++>2)printf("%d",x);
elseprintf("%d\n",x--);
}正确
A.4和3
B.4和2
C.4和1
D.3和2
40.有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
该程序的输出结果是(C)正确
A.0.000000
B.0.250000
C.0.500000
D.1.000000
41.在嵌套使用if语句时,C语言规定else总是(B)错误正确答案:
C
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
42.有以下程序
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是(C)正确
A.1,1,2
B.2,2,1
C.2,2,2
D.2,2,3
43.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B)。
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
44.要用C语言表示数学关系式a≥b≥c,正确的表达式是(B)。
错误正确答案:
D
A.a>=b>=c
B.(a>=b)&(b>=c)
C.(a>=b)||(b>=c)
D.(a>=b)&&(b>=c)
45.设变量x和y均正确定义并赋值,以if语句中,在编译时将产生错误信息的是(C)正确
A.if(x++)
B.if(x>y&&y!
=0);
C.if(x>y)x--elsey++;
D.if(y<0){;}elsex++;
46.以下程序段的输出结果为(B)。
for(i=4;i>1;i--)
for(j=1;j
putchar('#');正确
A.无
B.######
C.#
D.###
47.执行下列程序后,i的值是(C)。
inti,x;
for(i=1,x=1;i<20;i++)
{if(x>=10)break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}正确
A.4
B.5
C.6
D.7
48.设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);
则(B)。
正确
A.运行程序段后输出0
B.运行程序段后输出1
C.程序段中的控制表达式是非法的
D.程序段执行无限次
49.若i为整型变量,则以下循环执行次数是(D).for(i=2;i==0;)printf("%d",i--);错误正确答案:
B
A.无限次
B.0次
C.1次
D.2次
50.假定所有变量均已正确定义,下列程序段运行后x的值为(B)。
k1=1;k2=2;k3=3;x=15;if(!
k1)x--;elseif(k2)if(k3)x=4;elsex=3;正确
A.14
B.4
C.15
D.3
51.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是(A)。
for(i=5;i;i--)
for(j=0;j<4;j++)
{…}正确
A.20
B.24
C.25
D.30
52.下列保留字中用于构成循环结构的是(B)。
正确
A.if
B.while
C.switch
D.default
53.阅读下面程序,它的运行结果是(A)
voidmain()
{
inti,j,a=0;
for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
{
if(j%2)break;
a++;
}
a++;
}
printf("%d\n",a);
}正确
A.4
B.5
C.6
D.7
54.阅读下面程序,得知其运行结果是(A)
#include"stdio.h"
voidmain()
{
inti;
for(i=1;i<=5;i++)
{
if(i%2)printf("*");
elsecontinue;
printf("#");
}
printf("$\n");
}正确
A.*#*#*#$
B.#*#*#*$
C.*#*#$
D.#*#*$
55.下面程序运行结果是(B)
#include
voidmain()
{inti;
for(i=1;i<=5;i++)
switch(i%5)
{
case0:
printf("*");break;
case1:
printf("#");break;
default:
printf("\n");
case2:
printf("&");
}
}正确
A.#&&&*
B.#&<换行>&<换行>&*
C.#<换行>&<换行>&<换行>&<换行>*
D.#&<换行><换行>*
56.程序运行的结果是(A)
main()
{intn=0;
while(n++<=1)
printf("%d\t",n);
}正确
A.12
B.01
C.1
D.11
57.运行以下程序段的结果是(A)
a=1;b=2;c=2;
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
58.下面程序段(D)
for(t=1;t<=100;t++)
{
scanf("%d",&x);
if(x<0)continue;
printf("%3d",t);
}正确
A.当x<0时整个循环结束
B.x>=0时什么也不输出
C.printf函数永远也不执行
D.最多允许输出100个非负整数
59.下面程序的输出是(D)。
main()
{
char*s=〞12134211〞;
intk,v1=0,v2=0,v3=0,v4=0;
for(k=0;s[k];k++)
switch(s[k])
{
default:
v4++;
case1:
v1++;
case2:
v2++;
case3:
v3++;
}
printf(〞v1=%d,v2=%d,v3=%d,v4=%d\n〞,v1,v2,v3,v4);
}正确
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=8,v2=8,v3=8,v4=8
60.执行语句for(i=1;i++<4;);后变量i的值是(C)正确
A.3
B.4
C.5
D.不定
61.标有/**/的语句的执行次数是(C)。
inty,i;
for(i=0;i<20;i++)
{if(i%2==0)continue;
y+=i;/**/
}正确
A.20
B.19
C.10
D.9
62.阅读下列程序:
main()
{intn[3],i,j,k;
for(i=0;i〈3;i++〉n[i]=0;
k=2;
for(i=0;i〈k;i++〉
for(j=0;j〈k;j++〉n[j]=n[i]+1;
printf("%d\n",n[1]);}
程序运行后输出结果是(D)。
正确
A.2
B.1
C.0
D.3
63.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空。
(B)
#include
main()
{inta,b,t;
scanf("%d%d",&a,&b);
while(_______)
{if(a>b)
{t=a;a=b;b=t;}
printf("%d,%d\n",a,b);
scanf("%d%d",&a,&b);
}
}正确
A.!
a=b
B.a!
=b
C.a==b
D.a=b
64.以下程序的运行结果为(C)
#include"stdio.h"
main()
{intm,n;
for(m=0,n=10;mprintf("%d,%d\n",m,n);}正确
A.6,7
B.7,6
C.9,7
D.7,9
65.对以下for循环,叙述正确的是(C)。
for(x=0,y=0;(y!
=123)&&(x<4);x++,y++);正确
A.是无限循环
B.循环次数不定
C.执行了4次
D.执行了3次
66.对以下说明语句的正确理解是(B)。
inta[10]={6,7,8,9,10};
正确
A.将5个初值依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
67.合法的数组定义是(D)正确
A.inta[]=”string”;
B.inta[5]={0,1,2,3,4,5};
C.chara=”string”;
D.chara[]={0,1,2,3,4,5};
68.合法的数组定义是(D)正确
A.inta[]=”string”;
B.inta[5]={0,1,2,3,4,5};
C.chara=”string”;
D.chara[]={0,1,2,3,4,5};
69.执行下面的程序段后,变量k中的值为(A)。
intk=3,s[2];
s[0]=k;k=s[1]*10;正确
A.不定值
B.33
C.30
D.10
70.二维数组a有m行n列,则在a[i][j]之前的元素个数为(B)。
正确
A.j*n+i
B.i*n+j
C.i*n+j-1
D.i*n+j+1
71.合法的数组说明语句是(D)。
正确
A.inta[]=”string”;
B.inta[5]={0,1,2,3,4,5};
C.chara=”string”;
D.chara[]={0,1,2,3,4,5};
72.以下语句正确的是(D)。
正确
A.intx[2]={6,7,9};
B.intx[3]={{1},{6},{7}};
C.intx[];
D.intx[4]={6,7,8,9};
73.有以下程序
main()
{chars[]={"aeiou"},*ps;
ps=s;printf("%c\n",*ps+4);}
程序运行后的输出结果是(B)。
正确
A.a
B.e
C.u
D.元素s[4]的地址
74.以下数组定义中不正确的是(D)。
正确
A.inta[2][3];
B.intb[][3]={0,1,2,3};
C.intc[100][100]={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
75.设有语句
staticcharstr[10]={“china”};
printf(“%d”,strlen(str));
则输出结果是(B)
正确
A.10
B.5
C.china
D.6
76.执行以下程序段后,s的值为(B)。
staticcharch[]=“623”;inta,s=0;
for(a=0;ch[a]>=‘0’&&ch[a]<=‘9’;a++)s=10*s+ch[a]-‘0’;正确
A.-4705
B.623
C.600
D.326
77.以下语句中存在语法错误的是(B)。
错误正确答案:
A
A.charss[6][20];ss[1]="right?
";
B.charss[][20]={"right?
"};
C.char*ss[6]