C语言期末考试选择题.docx
《C语言期末考试选择题.docx》由会员分享,可在线阅读,更多相关《C语言期末考试选择题.docx(85页珍藏版)》请在冰豆网上搜索。
C语言期末考试选择题
第一套
一、单项选择共30题(共计60分)
第1题(2.0分)
设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是().
A:
k++
B:
k+=1
C:
++k
D:
k+1
第2题(2.0分)
已知inti=5,执行语句i+=++i后,i的值是().
A:
10
B:
11
C:
12
D:
A、B、C都不对
第3题(2.0分)
以下程序的功能是:
给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.
#include
voidmain()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=p*r*r;printf("s=%f\n",s);
}
出错的原因是().
A:
注释语句书写位置错误
B:
存放圆半径的变量r不应该定义为整型
C:
输出语句中格式描述符非法
D:
计算圆面积的赋值语句中使用了非法变量
第4题(2.0分)
"\\\″ABC\″\\″的长度是().
A:
11
B:
7
C:
5
D:
3
第5题(2.0分)
已知intj,i=1;,执行语句j=–i++;后,j的值是().
A:
1
B:
2
C:
-1
D:
-2
第6题(2.0分)
有以下程序:
#include
voidmain()
{ints=0,a=1,n;
scanf("%d",&n);
do{
s+=1;a=a–2;
}while(a!
=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘输入给n的值是().
A:
-1
B:
-3
C:
-5
D:
0
第7题(2.0分)
执行以下程序后,输出的结果是().
#include
voidmain()
{inty=10;
do{
y––;
}while(––y);
printf("%d\n",y––);
}
A:
-1
B:
1
C:
8
D:
0
第8题(2.0分)
以下循环体的执行次数是().
#include
voidmain()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j––)printf("%d\n",i);
}
A:
3
B:
2
C:
1
D:
0
第9题(2.0分)
有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是().
A:
无限次
B:
有语法错误,不能执行
C:
1次也不执行
D:
执行1次
第10题(2.0分)
有以下程序
#include
voidmain()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是().
A:
m=123n=456p=789
B:
m=123n=456p=789
C:
m=123,n=456,p=789
D:
123456789
第11题(2.0分)
设变量已正确定义,以下能正确计算f=n!
的程序段是
A:
f=0;
for(i=1;i<=n;i++)f*=i;
B:
f=1;
for(i=1;iC:
f=1;
for(i=n;i>1;i++)f*=i;
D:
f=1;
for(i=n;i>=2;i––)f*=i;
第12题(2.0分)
在下列程序中,没有构成死循环的程序段是().
A:
inti=100;
inti=100;
while
(1)while
(1)永远为真
{i=i%100+1;
if(i>100)break;}
B:
intk=1000;
do
{++k;}while(k>=10000);
C:
for(;;);无循环条件死循环
D:
ints=36;while(s);--s;s不为0时为while(s)真
第13题(2.0分)
有如下程序:
#include
voidmain()
{intn=9;
while(n>6)
{n––;printf("%d",n);}
}
该程序段的输出结果是().
A:
987
B:
876
C:
8765
D:
9876
第14题(2.0分)
以下程序的输出结果是().
#include
voidmain()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x––,y);
}
A:
10192
B:
9876
C:
10990
D:
101091
第15题(2.0分)
有如下程序:
#include
voidmain()
{intn[5]={0,0,0},i,k=2;
for(i=0;i{printf("%d\n",n[k]);}
}
该程序的输出结果是().
A:
不确定的值
B:
2
C:
1
D:
0
第16题(2.0分)
下列程序执行后的输出结果是().
#include
voidmain()
{chararr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
A:
you&me
B:
you
C:
me
D:
err
第17题(2.0分)
以下程序的输出结果是().
#include
voidmain()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf("%d,",x[i][2–i]);
}
A:
1,5,9,
B:
1,4,7,
C:
3,5,7,
D:
3,6,9,
第18题(2.0分)
以下数组定义中不正确的是().
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}};
第19题(2.0分)
以下能正确定义数组并正确赋初值的语句是().
A:
intN=5,b[N][N];
B:
inta[1][2]={{1},{3}};
C:
intc[2][]={{1,2},{3,4}};
D:
intd[3][2]={{1,2},{3,4}};
第20题(2.0分)
有以下程序:
inta=4;
intf(intn)
{
intt=0;staticinta=5;
if(n%2){inta=6;t+=a++;}
else{inta=7;t+=a++;}
returnt+a++;
}
main()
{
ints=a,i=0;
for(;i<2;i++)s+=f(i);
printf("d\n",s);
}
程序运行后的输出结果是b
A:
24
B:
28
C:
32
D:
36
第21题(2.0分)
以下正确的函数定义形式为
A:
doublefun(intx,inty)
B:
doublefun(intx;y)
C:
doublefun(intx;inty)
D:
doublefun(intx,y)
第22题(2.0分)
C语言规定,函数返回值的类型是由
A:
return语句中的表达式类型所决定的
B:
调用该函数时的主调函数类型所决定的
C:
调用该函数时系统临时决定的
D:
在定义该函数时所指定的函数类型所决定的
第23题(2.0分)
有以下程序:
voidswap1(intc0[],intc1[])
{intt;
t=c0[0];c0[0]=c1[0];c1[0]=t;
}
voidswap2(int*c0,int*c1)
{intt;
t=*c0;*c0=*c1;*c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a,a+1);swap2(&b[0],&b[1]);
printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);
}D
A:
3553
B:
5335
C:
3535
D:
5353
第24题(2.0分)
以下程序的输出结果是().
amovep(int*p,int(*a)[3],intn)
{inti,j;
for(i=0;ifor(j=0;j{*p=a[i][j];
p++;}
}
main()
{int*p,a[3][3]={{1,3,5},{2,4,6}};
p=(int*)malloc(100);
amovep(p,a,3);
printf("%d%d\n",p[2],p[5]);
free(p);
}
A:
56
B:
25
C:
34
D:
程序错误
第25题(2.0分)
有以下函数:
fun(char*a,char*b)
{while((*a!
='\0')&&(*b!
='\0')&&(*a==*b))
{a++;b++;}
return(*a–*b);}
该函数的功能是().
A:
计算a和b所指字符串的长度之差
B:
将b所指字符串复制到a所指字符串中
C:
将b所指字符串连接到a所指字符串后面
D:
比较a和b所指字符串的大小
第26题(2.0分)
有以下程序:
fun(charp[][10])
{intn=0,i;
for(i=0;i<7;i++)
if(p[i][0]=='T')n++;//判断每组的第一个字符是否为T
returnn;
}
main()
{charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf("%d\n",fun(str));
}
程序执行后的输出结果是().
A:
1
B:
2
C:
3
D:
0
第27题(2.0分)
有以下程序:
main()
{charstr[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
程序运行后的输出结果是().
A:
China
B:
Beijing
C:
ng
D:
ing
第28题(2.0分)
有以下程序:
#definef(x)(x*x)
main()
{inti1,i2;
i1=f(8)/f(4)i2=f(4+4)/f(2+2)
printf("%d,%d\n",i1,i2);
}
程序运行后的输出结果是().
A:
64,28
B:
4,4
C:
4,3
D:
64,64
第29题(2.0分)
有以下程序:
voidchange(intk[]){k[0]=k[5];}
main()
{intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;
while(n<=4){change(&x[n]);n++;}
for(n=0;n<5;n++)printf("%d",x[n]);
printf("\n");
}
A:
678910
B:
13579
C:
12345
D:
62345
第30题(2.0分)
在以下程序中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是(C)
A:
main()
int*p;
fun(p);…}
intfun(int*p)
{ints;
p=&s;}
B:
main()
{int*p;
fun(&p);…}
intfun(int**p)
{ints;
*p=&s;}
C:
#include
main()
{int*p;
fun(&p);…}
intfun(int**p)
{*p=(int*)malloc
(2);}…
D:
#include
main()
{int*p;
fun(p);…}
intfun(int*p)
{p=(int*)malloc(sizeof(int));}
第二套
一、单项选择共30题(共计60分)
第1题(2.0分)
有以下程序
#include
voidmain()
{intx,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是().
A:
2,3,3
B:
2,3,2
C:
2,3,1
D:
2,2,1
第2题(2.0分)
已知inti,a;,执行语句i=(a=2*3,a*5),a+6;后,变量i的值是().
A:
6
B:
12
C:
30
D:
36
第3题(2.0分)
已知intj,i=1;,执行语句j=–i++;后,j的值是().
A:
1
B:
2
C:
-1
D:
-2
第4题(2.0分)
已有定义:
charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是().
A:
isupper(c)//判断字符c是否为大写英文字母
B:
'A'<=c<='Z'
C:
'A'<=c&&c<='Z'
D:
c<=('z'–32)&&('a'–32)<=c
第5题(2.0分)
以下程序的功能是:
给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.
#include
voidmain()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=p*r*r;printf("s=%f\n",s);
}
出错的原因是().
A:
注释语句书写位置错误
B:
存放圆半径的变量r不应该定义为整型
C:
输出语句中格式描述符非法
D:
计算圆面积的赋值语句中使用了非法变量
第6题(2.0分)
有如下程序段:
intn=0,p;
do{scanf("%d",&p);n++;}while(p!
=12345&&n<3);
此处do-while循环的结束条件是().
A:
P的值不等于12345,并且n的值小于3
B:
P的值等于12345,并且n的值大于或等于3
C:
P的值不等于12345,或者n的值小于3
D:
P的值等于12345,或者n的值大于或等于3
第7题(2.0分)
有如下程序:
#include
voidmain()
{inti,sum;
for(i=1;i<=3;sum++)sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是().
A:
6
B:
3
C:
死循环
D:
0
第8题(2.0分)
有以下程序:
#include
voidmain()
{intk=5;
while(––k)printf("%d",k–=3);
printf("\n");
}
执行后的输出结果是()
A:
1
B:
2
C:
4
D:
死循环
第9题(2.0分)
以下程序中,while循环的循环次数是()
#include
voidmain()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
A:
1
B:
10
C:
6
D:
死循环,不能确定次数
第10题(2.0分)
以下程序的功能是:
给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.
#include
voidmain()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=p*r*r;printf("s=%f\n",s);
}
出错的原因是().
A:
注释语句书写位置错误
B:
存放圆半径的变量r不应该定义为整型
C:
输出语句中格式描述符非法
D:
计算圆面积的赋值语句中使用了非法变量
第11题(2.0分)
在下列程序中,没有构成死循环的程序段是().
A:
inti=100;
inti=100;
while
(1)
{i=i%100+1;
if(i>100)break;}
B:
intk=1000;
do
{++k;}while(k>=10000);
C:
for(;;);
D:
ints=36;while(s);--s;
第12题(2.0分)
有以下程序:
#include
voidmain()
{inti,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++)
m=m%j;
printf("%d\n",m);
}
程序的运行结果是()
A:
0
B:
1
C:
2
D:
3
第13题(2.0分)
以下程序的输出结果是().
#include
voidmain()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf("%d\n",a);
}
A:
101
B:
6
C:
5
D:
4
第14题(2.0分)
以下程序的输出结果是().
#include
voidmain()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
{if(j%2)continue;
x++;//不论是否满足if条件,x++都要执行
}
}
printf("x=%d\n",x);
}
A:
x=4
B:
x=8
C:
x=6
D:
x=12
第15题(2.0分)
以下能正确定义一维数组的选项是().
A:
intnum[];
B:
#defineN100intnum[N];
C:
intnum[0..100];
D:
intN=100;intnum[N];
第16题(2.0分)
以下对一维数组a的正确定义是().
A:
inta(10)
B:
intn=10,a[n];
C:
intn;
scanf("%d",&n);
inta[n];
D:
#defineSIZE10
inta[SIZE]
第17题(2.0分)
以下程序的输出结果是().
#include
voidmain()
{inti,a[10];
for(i=9;i>=0;i––)a[i]=10–i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A:
258
B:
741
C:
852
D:
369
第18题(2.0分)
若有定义:
inta[2][3];,以下选项中对a数组元素正确引用的是().
A:
a[2][!
1]
B:
a[2][3]
C:
a[0][3]
D:
a[1>2][!
1]
第19题(2.0分)
有如下程序:
#include
voidmain()
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%d",s);
}
该程序的输出结果是().
A:
18
B:
19
C:
20
D:
21
第20题(2.0分)
下列程序的输出结果是
#include
voidf1()
{
intx=0;
x++;
printf("%d,",x);
}
voidf2()
{
staticintx;
x++;
printf("%d,",x);
}
voidmain()
{
intk;
for(k=0;k<3;k++)
{f1();f2();}
}
A:
1,1,1,1,1,1
B:
1,1,1,2,1,3
C:
1,1,2,2,3,3
D:
1,1,2,1,3,1
第21题(2.0分)
C语言规定,函数返回值的类型是由
A:
return语句中的表达式类型所决定的
B:
调用该函数时的主调函数类型所决定的
C:
调用该函数时系统临时决定的
D:
在定义该函数时所指定的函数类型所决定的
第22题(2.0分)
有以下程序:
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",x,y,z);
}
运行后输出结果是
A:
30,20,10
B:
10,20,30
C:
456,567,678
D:
678,567,456
第23题(2.0分)
以下程序的输出结果是().
amovep(int*p,int(*a)[3],intn)
{inti,j;
for(i=0;ifor(j=0;j{*p=a[i][j];
p++;}
}
main()
{int*p,a[3][3]={{1,3,5},{2,4,6}};
p=(int*)malloc(100);
amovep(p,a,3);
printf("%d%d\n",p[2],p[5]);
free(p);
}
A:
56
B:
25
C:
34
D:
程序错误
第24题(2.0分)
若有以下程序:
main(