C语言试题.docx
《C语言试题.docx》由会员分享,可在线阅读,更多相关《C语言试题.docx(22页珍藏版)》请在冰豆网上搜索。
C语言试题
试卷编号:
12895
所属语言:
TurboC
试卷方案:
lx
试卷总分:
100分
共有题型:
4种
一、单项选择共26题(共计50分)
第1题(1.0分)题号:
2691
若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是______。
A:
1
B:
3
C:
2.0
D:
2.5
答案:
C
第2题(1.0分)题号:
2673
()是C语言提供的合法描述数据类型的关键字。
A:
unsigned
B:
integer
C:
Char
D:
fLoat
答案:
A
第3题(1.0分)题号:
2727
以下选项中非法的表达式是______。
A:
0<=x<100
B:
i=j==0
C:
(char)(65+3)
D:
x+1=x+1
答案:
D
第4题(1.0分)题号:
2760
设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A:
0
B:
1
C:
2
D:
3
答案:
C
第5题(1.0分)题号:
2762
假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4
m=(ww:
x;m=(mm:
y;m=(mm:
z;
则该程序段执行后,m的值是______。
A:
4
B:
3
C:
2
D:
1
答案:
D
第6题(1.0分)题号:
2723
有以下程序段
intm=0,n=0;charc='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:
10A10↙,则输出结果是______。
A:
10,A,10
B:
10,a,10
C:
10,a,0
D:
10,A,0
答案:
A
第7题(1.0分)题号:
2732
有以下程序
main()
{intx=102,y=012;
printf("%2d,%2d\n",x,y);
}
执行后输出结果是______。
A:
10,01
B:
02,12
C:
02,10
D:
102,10
答案:
D
第8题(1.0分)题号:
2710
以下程序的输出结果是______。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d)
}
A:
1
B:
-1
C:
0
D:
非0的数
答案:
A
第9题(1.0分)题号:
2798
C语言中用于结构化程序设计的三种基本结构是______.
A:
顺序结构、选择结构、循环结构
B:
if、switch、break
C:
for、while、do-while
D:
if、for、continue
答案:
A
第10题(1.0分)题号:
2802
下面有关for循环的正确描述是().
A:
for循环只能用于循环次数已经确定的情况
B:
for循环是先执行循环体语句,后判断表达式
C:
在for循环中,不能用break语句跳出循环体
D:
for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
答案:
D
第11题(1.0分)题号:
176
数组名作为实参数传递给函数时,数组名被处理为()。
A:
该数组的长度
B:
该数组的元素个数
C:
该数组的首地址
D:
该数组中各元素的值
答案:
C
第12题(1.0分)题号:
676
以下只有在使用时才为该类型变量分配内存的存储类说明是()。
A:
auto和static
B:
auto和register
C:
register和static
D:
extern和register
答案:
B
第13题(1.0分)题号:
564
在一个C程序中()。
A:
main函数必须出现在所有函数之前
B:
main函数可以在任何地方出现
C:
main函数必须出现在所有函数之后
D:
main函数必须出现在固定位置
答案:
B
第14题(1.0分)题号:
642
在C语言中,一维数组的定义方式为:
类型说明符数组名()。
A:
[常量表达式]
B:
[整型表达式]
C:
[整型常量]或[整型表达式]
D:
[整型常量]
答案:
D
第15题(1.0分)题号:
644
以下对一维整型数组a的正确说明是()。
A:
inta(10);
B:
intn=10,a[n];
C:
intn;scanf("%d",&n);inta[n];
D:
#defineSIZE10(换行)inta[SIZE];
答案:
D
第16题(1.0分)题号:
649
若有说明:
inta[3][4]={0};则下面正确的叙述是()。
A:
只有元素a[0][0]可得到初值0
B:
此说明语句不正确
C:
数组a中各元素都可得到初值,但其值不一定为0
D:
数组a中每个元素均可得到初值0
答案:
D
第17题(1.0分)题号:
646
若有说明inta[3][4];则a数组元素的非法引用是()。
A:
a[0][2*1]
B:
a[1][3]
C:
a[4-2][0]
D:
a[0][4]
答案:
D
第18题(1.0分)题号:
165
下列定义数组的语句中正确的是()。
A:
#definesize10charstr1[size],str2[size+2];
B:
charstr[];
C:
intnum['10'];
D:
intn=5;inta[n][n+2];
答案:
A
第19题(1.0分)题号:
2916
当定义一个结构体变量时,系统分配给它的内存是______.
A:
各成员所需内存量的总和
B:
结构中第一个成员所需内存量
C:
结构中最后一个成员所需内存量
D:
成员中占内存量最大者所需的容量
答案:
A
第20题(1.0分)题号:
551
应用缓冲文件系统对文件进行读写操作,打开文件的函数名为()。
A:
open
B:
fopen
C:
close
D:
fclose
答案:
B
第21题(5.0分)题号:
2822
有以下程序
#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
答案:
B
第22题(5.0分)题号:
2821
有以下程序
#include
voidmain()
{
inti=0,s=0;
do
{
if(i%2)
{i++;continue;}
i++;
s+=i;
}while(i<7);
printf("%d\n",s);
}
执行后输出的结果是().
A:
16
B:
12
C:
28
D:
21
答案:
A
第23题(5.0分)题号:
2820
有以下程序
#include
voidmain()
{
inti;
for(i=1;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
执行后输出的结果是______.
A:
11122
B:
12
C:
12020
D:
120
答案:
A
第24题(5.0分)题号:
2838
以下程序中f函数的功能是将n个字符串,按由大到小的顺序进行排序。
#include
#include
voidf(charp[][10],intn)
{
chart[20];
inti,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])<0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
voidmain()
{
charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
A:
6
B:
4
C:
5
D:
3
答案:
C
第25题(5.0分)题号:
2755
有如下程序
#include
voidmain()
{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);
}
该程序输出结果是______。
A:
0.000000
B:
0.250000
C:
0.500000
D:
1.000000
答案:
C
第26题(5.0分)题号:
2754
有如下程序
#include
voidmain()
{intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
A:
a=2,b=1
B:
a=1,b=1
C:
a=1,b=0
D:
a=2,b=2
答案:
A
二、程序填空共1题(共计10分)
第1题(10.0分)题号:
3
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
已定义一个含有30个元素的数组s,函数fun1的功能是按
顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序
每五个元素求一个平均值,并将该值存放在数组w中。
-------------------------------------------------------*/
floats[30],w[6];
fun1(floats[])
{
intk,i;
for(k=2,i=0;i<30;i++)
{
/***********SPACE***********/
【?
】;
k+=2;
}
}
fun2(floats[],floatw[])
{
floatsum=0.0;
intk,i;
for(k=0,i=0;i<30;i++)
{
sum+=s[i];
/***********SPACE***********/
【?
】;
{
w[k]=sum/5;
/***********SPACE***********/
【?
】;
k++;
}
}
}
main()
{
inti;
fun1(s);
/***********SPACE***********/
【?
】;
for(i=0;i<30;i++)
{
if(i%5==0)printf("\n");
printf("%8.2f",s[i]);
}
printf("\n");
for(i=0;i<6;i++)
printf("%8.2f",w[i]);
}
答案:
1).s[i]=k或s[i]=(i+1)*2
2).if((i+1)%5==0)或if((i+1)/5*5==i+1)
3).sum=0或sum=0.0
4).fun2(s,w)
三、程序改错共2题(共计20分)
第1题(10.0分)题号:
13
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求1到10的阶乘的和。
------------------------------------------------------*/
main()
{
inti;
floatt,s=0;
floatfac(intn);
/**********FOUND**********/
for(i=1;i<10;i++)
/**********FOUND**********/
s=fac(i);
printf("%f\n",s);
}
floatfac(intn)
{
/**********FOUND**********/
inty=1;
inti;
for(i=1;i<=n;i++)
y=y*i;
/**********FOUND**********/
return;
}
答案:
1).for(i=1;i<=10;i++)或for(i=1;10>=i;i++)或for(i=1;i<11;i++)或for(i=1;11>i;i++)
2).s=s+fac(i);或s+=fac(i);或s=fac(i)+s;
3).floaty=1.0;或floaty=1;
4).returny;或return(y);或return(y);
第2题(10.0分)题号:
414
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
一球从100米高度自由落下,每次落地后反跳回原高度的
一半;再落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
------------------------------------------------------*/
#include"stdio.h"
main()
{
/**********FOUND**********/
floatsn=100.0;hn=sn/2;
intn;
/**********FOUND**********/
for(n=2;n<10;n++)
{
sn=sn+2*hn;
/**********FOUND**********/
hn=hn%2;
}
printf("thetotalofroadis%f\n",sn);
printf("thetenthis%fmeter\n",hn);
}
答案:
1).floatsn=100.0,hn=sn/2;
2).for(n=2;n<=10;n++)或for(n=2;n<11;n++)
3).hn=hn/2;
四、程序设计共2题(共计20分)
第1题(10.0分)题号:
390
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数求表达式的和(n的值由主函数输入)。
1-1/2+1/3-1/4+......+1/m
例如:
当n=20时,表达式的值为0.668771。
------------------------------------------------*/
#include"stdio.h"
floatsum(intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
intn;
scanf("%d",&n);
printf("sum=%f\n",sum(n));
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intm,n;
inti[10];
floato;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<5;n++)
fscanf(IN,"%d",&i[n]);
for(n=0;n<5;n++)
{
o=sum(i[n]);
fprintf(OUT,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
floats=0;
inti,k=1;
for(i=1;i<=n;i++)
{s=s+k*1.0/i;
k=-k;
}
return(s);
----------------------
第2题(10.0分)题号:
370
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数判断一个整数m的各位数字之和能否被7整除,
可以被7整除则返回1,否则返回0。
调用该函数找出
100~200之间满足条件的所有数。
------------------------------------------------*/
#include"stdio.h"
intsub(intm)
{
/**********Program**********/
/**********End**********/
}
main()
{
inti;
for(i=100;i<=200;i++)
if(sub(i)==1)
printf("%4d",i);
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intn;
inti[10];
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<10;n++)
{
fscanf(IN,"%d",&i[n]);
}
for(n=0;n<10;n++)
{
o=sub(i[n]);
fprintf(OUT,"%d\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
intk,s=0;
do
{s=s+m%10;
m=m/10;
}while(m!
=0);
if(s%7==0)k=1;
elsek=0;
return(k);
----------------------