c语言试题2.docx
《c语言试题2.docx》由会员分享,可在线阅读,更多相关《c语言试题2.docx(23页珍藏版)》请在冰点文库上搜索。
c语言试题2
试卷编号:
8093
所属语言:
C语言
试卷方案:
09-10学年第二学期计算机程序设计语言
试卷总分:
100分
共有题型:
4种
一、填空共5题(共计20分)
第1题(4.0分)题号:
1539
按内存排列顺序,数组chara[2]中的所有元素是a[1]和【1】.
答案:
=======(答案1)=======
a[0]
第2题(4.0分)题号:
641
设x=5>1+2,x的值为【1】.
答案:
=======(答案1)=======
1
第3题(4.0分)题号:
1494
函数的定义不可以嵌套,但函数的调用【1】嵌套.
答案:
=======(答案1)=======
可以
第4题(4.0分)题号:
1162
设chara,b;若想通过a&&b运算保留a的第1位和第6位的值,则b的二进制数是【1】.
答案:
=======(答案1)=======
10000100
第5题(4.0分)题号:
1282
执行下列语句的结果是【1】,a=3;printf("%d,",++a);printf("%d",a++);
答案:
=======(答案1)=======
4,4
二、单项选择共15题(共计30分)
第1题(2.0分)题号:
680
在调用函数时,如果实参是简单变量,它与对应形参之间的数据
传递方式是()。
A:
地址传递
B:
单向值传递
C:
由实参传给形参,再由形参传回实参
D:
传递方式由用户指定
答案:
B
第2题(2.0分)题号:
635
若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
A:
2
B:
3
C:
4
D:
无确定值
答案:
B
第3题(2.0分)题号:
723
函数调用语句:
fseek(fp,-20L,2);的含义是()。
A:
将文件位置指针移到距离文件头20个字节处
B:
将文件位置指针从当前位置向后移动20个字节
C:
将文件位置指针从文件末尾处退后20个字节
D:
将文件位置指针移到离当前位置20个字节处
答案:
C
第4题(2.0分)题号:
515
inti,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数
1,2,3,4,5,6存入a数组的是()。
A:
for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B:
for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
C:
for(i=0;i<6;i++)a[i/3][i%3]=i+1;
D:
for(i=1;i<=6;i++)a[i][i]=i;
答案:
D
第5题(2.0分)题号:
103
以下运算符中,优先级最高的运算符是()。
A:
*=
B:
>=
C:
(类型)
D:
+
答案:
C
第6题(2.0分)题号:
743
C语言结构体类型变量在程序执行期间()。
A:
所有成员一直驻留在内存中
B:
只有一个成员驻留在内存中
C:
部分成员驻留在内存中
D:
没有成员驻留在内存中
答案:
A
第7题(2.0分)题号:
544
char*s1="hello",*s2;s2=s1;则()。
A:
s2指向不确定的内存单元
B:
不能访问"hello"
C:
puts(s1);与puts(s2);结果相同
D:
s1不能再指向其它单元
答案:
C
第8题(2.0分)题号:
549
若有double*p,x[10];inti=5;使指针变量p指向元素x[5]的语句为()。
A:
p=&x[i];
B:
p=x;
C:
p=x[i];
D:
p=&(x+i)
答案:
A
第9题(2.0分)题号:
146
用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。
longa=0xffffff;
intb;charc;
A:
0ffffff和0x61
B:
-1和98
C:
-1和97
D:
指向同一地址
答案:
C
第10题(2.0分)题号:
170
关于return语句,下列正确的说法是()。
A:
不能在主函数中出现且在其他函数中均可出现
B:
必须在每个函数中出现
C:
可以在同一个函数中出现多次
D:
只能在除主函数之外的函数中出现一次
答案:
C
第11题(2.0分)题号:
546
若有chara[80],*s=a;不正确的输入语句是()。
A:
scanf("%s",s);
B:
gets(s);
C:
fscanf(stdin,"%c",s);
D:
fgets(s,80,stdin);
答案:
C
第12题(2.0分)题号:
136
下列程序的输出结果为()。
main()
{intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}
A:
27.000000
B:
27.500000
C:
28.000000
D:
28.500000
答案:
A
第13题(2.0分)题号:
611
以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);()。
A:
是无限循环
B:
循环次数不定
C:
4次
D:
3次
答案:
C
第14题(2.0分)题号:
125
下列程序的输出结果是()。
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
A:
0
B:
5
C:
1
D:
不确定值
答案:
A
第15题(2.0分)题号:
115
先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是()。
A:
c='a';
B:
c="a";
C:
c="97";
D:
C='97'
答案:
A
三、程序填空共5题(共计30分)
第1题(6.0分)题号:
7
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从键盘上输入一个字符串,将该字符串升序排列后输出到
文件test.txt中,然后从该文件读出字符串并显示出来。
-------------------------------------------------------*/
#include
#include
#include
main()
{
FILE*fp;
chart,str[100],str1[100];intn,i,j;
if((fp=fopen("test.txt","w"))==NULL)
{
printf("can'topenthisfile.\n");
exit(0);
}
printf("inputastring:
\n");gets(str);
/***********SPACE***********/
【?
】;
/***********SPACE***********/
for(i=0;【?
】;i++)
for(j=0;j/***********SPACE***********/
if(【?
】)
{
t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
/***********SPACE***********/
【?
】;
fclose(fp);
fp=fopen("test.txt","r");
fgets(str1,100,fp);
printf("%s\n",str1);
fclose(fp);
}
答案:
=======(答案1)=======
n=strlen(str)
=========或=========
for(n=0;str[n]!
='\0';n++)
=========或=========
for(n=0;str[n];n++)
=========或=========
for(n=0;str[n]!
=0;n++)
=======(答案2)=======
i=========或=========
n>i
=========或=========
i<-1+n
=========或=========
i=========或=========
n-1>i
=========或=========
-1+n>i
=========或=========
i<=n-1
=========或=========
n-1>=i
=========或=========
-1+n>=i
=======(答案3)=======
str[j]>str[j+1]
=========或=========
str[j+1]=========或=========
str[j+1]=========或=========
str[j+1]<=str[j]
=======(答案4)=======
fputs(str,fp)
=========或=========
fprintf(fp,"%s\n",str)
=========或=========
fprintf(fp,"%s",str)
第2题(6.0分)题号:
472
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
现有两组有序数组(增序),x[i]、y[j]代表数组x、y的
任一元素,问满足x[i]>y[i]的元素对有多少个?
-------------------------------------------------------*/
#include
intdominance_count(intf[],intg[],intm,intn)
{
intindex_f,index_g;
intcount;
count=index_f=index_g=0;
while(index_fif(f[index_f]<=g[index_g])
index_f++;
else
{
index_g++;
/***********SPACE***********/
count+=【?
】;
}
/***********SPACE***********/
【?
】;
}
#include
voidmain(void)
{
intx[]={1,6,8};
intnx=sizeof(x)/sizeof(int);
inty[]={4,5,7};
intny=sizeof(y)/sizeof(int);
intdominance_count(int[],int[],int,int),i;
printf("\nDominanceCountoftwoincreasingArrays\n");
printf("\n#Array1Array2");
printf("\n----------------");
for(i=0;iprintf("\n%3d%10d%10d",i,x[i],y[i]);
printf("\n\nThereare%dDominancePairs.",
/***********SPACE***********/
【?
】);
}
答案:
=======(答案1)=======
m-index_f
=========或=========
m-index_f
=======(答案2)=======
returncount
=======(答案3)=======
dominance_count(x,y,nx,ny)
第3题(6.0分)题号:
442
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
将长整型数中每一位上为奇数的数依次取出,构成一个新数
放在t中。
高位仍在高位,低位仍在低位。
-------------------------------------------------------*/
#include
#include
voidfun(longs,long*t)
{
intd;
longsl=1;
/***********SPACE***********/
【?
】=0;
while(s>0)
{
/***********SPACE***********/
d=【?
】;
if(d%2)
{
/***********SPACE***********/
*t=【?
】+*t;
/***********SPACE***********/
sl【?
】10;
}
s/=10;
}
}
main()
{
longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
答案:
=======(答案1)=======
*t
=======(答案2)=======
s%10
=======(答案3)=======
d*sl
=========或=========
sl*d
=======(答案4)=======
*=
=========或=========
=s*
第4题(6.0分)题号:
481
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
一个自然数被8除余1,所得的商被8除也余1,再
将第二次的商被8除后余7,最后得到一个商为a。
又知这
个自然数被17除余4,所得的商被17除余15,最后得到一
个商是a的2倍。
编写程序求这个自然数。
-------------------------------------------------------*/
#include
main()
{
inti,n,a;
i=0;
while
(1)
{
if(i%8==1)
{
n=i/8;
if(n%8==1)
{
n=n/8;
/***********SPACE***********/
if(n%8==7)【?
】;
}
}
if(i%17==4)
{
n=i/17;
if(n%17==15)n=n/17;
}
if(2*a==n)
{
printf("result=%d\n",i);
/***********SPACE***********/
【?
】;
}
/***********SPACE***********/
【?
】;
}
}
答案:
=======(答案1)=======
a=n/8
=======(答案2)=======
break
=======(答案3)=======
i++
=========或=========
++i
=========或=========
i=i+1
第5题(6.0分)题号:
19
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
是将两个字符串连接为一个字符串,不许使用库函数strcat。
-------------------------------------------------------*/
#include
#include"string.h"
JOIN(s1,s2)
chars1[80],s2[40];
{
inti,j;
/***********SPACE***********/
【?
】;
/***********SPACE***********/
for(i=0;【?
】'\0';i++)
s1[i+j]=s2[i];
/***********SPACE***********/
s1[i+j]=【?
】;
}
main()
{
charstr1[80],str2[40];
gets(str1);gets(str2);
puts(str1);puts(str2);
/***********SPACE***********/
【?
】;
puts(str1);
}
答案:
=======(答案1)=======
j=strlen(s1)
=========或=========
for(j=0;s1[j]!
='10';j++);
=========或=========
for(j=0;s1[j];j++);
=======(答案2)=======
s2[i]!
=
=========或=========
*(s2+i)!
=
=======(答案3)=======
'\0'
=========或=========
NULL
=========或=========
0
=======(答案4)=======
JOIN(str1,str2)
四、程序设计共2题(共计20分)
第1题(10.0分)题号:
383
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用函数实现字符串的复制,不允许用strcpy()函数。
------------------------------------------------*/
#include
voidwwjt();
voidcopy(charstr1[],charstr2[])
{
/**********Program**********/
/**********End**********/
}
main()
{
voidcopy();
charc1[40],c2[40];
gets(c1);
copy(c1,c2);
puts(c2);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
chari[100];
charo[100];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}
fscanf(IN,"%s",i);
copy(i,o);
fprintf(OUT,"%s\n",o);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti;
for(i=0;str1[i]!
='\0';i++)
str2[i]=str1[i];
str2[i]='\0';
----------------------
第2题(10.0分)题号:
381
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求一批数中小于平均值的数的个数。
------------------------------------------------*/
#include
voidwwjt();
intaverage_num(inta[],intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
intn,a[100],i,num;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
num=average_num(a,n);
printf("thenumis:
%d\n",num);
wwjt();
}
voidwwjt()
{
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<5;n++)
{
fscanf(IN,"%d",&i[n]);
}
o=average_num(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
}
答案:
---------