高三计算机专业第二次月考试试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⾼三计算机专业第⼆次⽉考试试卷2011届对⼝升学第⼆次⽉考《C语⾔》试卷
姓名:班级:
⼀、单选题(本⼤题共10⼩题,每⼩题3分,共30分。
在每⼩题给出的四个选项中,只有⼀项是符合题⽬要求的)
1、若数组a有m列,则a[i][j]之前的数组元素个数为( )
A、(i-1)*(j-1)
B、i*m+j+1
C、i*m+j-1
D、i*m+j
2、已知字母a的ASCI的⼗进制代码为97,则执⾏下列语句后输出为( ) char a=?a?;
a--;
printf(“%d,%c\n”,a+?2?-?0?,a+?3?-…0?);
A、a, c
B、100,c
C、98,c
D、格式描述和输出项不匹配,输出⽆定值
3、在C语⾔中,当函数调⽤时( )
A、实参和形参各占⼀个独⽴的存储单元
B、形参和实参共⽤存储单元
C、可以由⽤户指定形参和实参是否共⽤存储单元
D、由系统⾃动确定形参和实参是否共⽤存储单元
4、执⾏下⾯语句后的输出结果为( )
int a=-1;
if(a<=0)
printf(“****\n”);
a=2;
else
printf(“%%%%\n”);
A、 ****
B、 %%%%
C、%%
main( )
{ int x=1,y=0,a=0,b=0;
switch (x)
{ case 1:
switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2:
a++; b++;
case 3:
a++; b++;
}
printf(“a=%d, b=%d”,a,b);
}
A、 a=3, b=2
B、 a=2, b=3
C、 a=3, b=3
D、 a=2, b=2
6、以下程序段( )
int x=1,y=4;
printf(x>y? ”x=%d”:”y=%d”,x,y);
A、输出控制格式错误
B、输出:x=1
C、输出: y=4
D、输出:y=1
7、若下述程序运⾏时输⼊的数据是“3.6,2.4”,则输⼊结果是( ) #include
#include
main( )
{float x,y,z;
scanf(“%f,%f”,&x,&y);
{if(fabs(z)>1.0)
{ x=y;
y=z;
z=x/y;
}
else
break;
}
printf(“%f”,y);
}
A、1.500000
B、1.600000
C、2.000000
D、2.400000
8、下列程序段不能实现求阶乘8!(结果存放在p中)的是( )
A、p=1;
B、p=2;
for(x=1;x<9;x++) for(x=8;x>3;x--)
p=p*x; p=p*x;
B、p=1, x=1; D、p=1,x=8;
while(x<9) do
p=p*x++; { p=p*x--;}
while(x>1)
9、执⾏如下程序段,当输⼊为happy! 时,输出的结果为( ) char str[14]={“I am”};
strcat(str,”sad!”);
scanf(“%s”,str);
printf(“%s”,str);
A、 I am sad!
B、happy!
C、I am happy!
D、happy ad!
10、下述程序的输出结果是( )
long fun(int n)
{
long s;
if(n==1||n==2)
s=2;
s=n+fun(n-1);
return s;
}
void main( )
{printf(“\n%ld”,fun(4)); }
A、 7
B、8
C、9
D、10
⼆、多选题(本⼤题共2⼩题,每⼩题5分,共10分。
在第⼩题给出的四个选项中,有两项或两项以上是符合题⽬要求的。
多选、少选不给分)
1、下列有关函数的说法中正确的是( )
A、C语⾔中的函数只具有static 和extern 两种类型
B、 C语⾔中允许函数的递归调⽤
C、调⽤函数时,C语⾔要求实参与形参的个数、完全⼀致
D、C语⾔函数的缺省数据类型是空类型(void 型)
2、下列数组的定义中,不会产⽣错误的是( )
A、int a[10]={…0?,?1?,?2?,?3?,?4?,?5?,?6?,?7?,?8?,?9?};
B、int a[10]={0,1,2,3,4,5,6,7,8,9};
C、char a[5]=”china”;
D、char a[5]={…h?,?e?,?l?,?l?,?o?};
三、填空题(本⼤题共3⼩题,每⼩题5分,共15分)
1、在函数的说明和定义时若没有指出函数的类型,则系统⾃动地认为函数的类型为____________。
2、printf(“%d”,strlen(“\s\”\000\xff”))的结果是_____________。
3、下述函数的功能是____________________________。
void func(int a[],int n)
{int i,j;
for(i=1;i
a[j]=t;
}
}
}
四、基本操作题(本⼤题共2 ⼩题,每⼩题5分,共10分)写程序段(命令)
1、分析程序运⾏结果:
#include
#include
main( )
{int m;
char str[10],temp[10];
gets(temp);
for(m=0;m<4;m++)
{ gets(str);
if(strcmp(temp,str)<0)
strcpy(temp,str);
}
printf(“%s\n”,temp);
}
上述程序运⾏后,如果从键盘上输⼊(在此代表回车键) C++
BASIC
Quick
Ada
Pascal
则程序的输出结果为_________________。
2、读下⾯程序,分析程序运⾏结果:
#define N 3
int array[N][N];
convert(array)
{ t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
main( )
{
int i,j;
printf(“请输⼊数组元素:\n”); for (i=0;i
for(j=0;j
scanf(“%d”,&array[i][j]); printf(“\n数组是:\n”); for (i=0;i
{ for(j=0;j
printf(“%5d”, array[i][j]);
printf(“\n”);
}
convert(array);
printf(“the convert array:\n”); for (i=0;i
for(j=0;j
printf(“%5d”,array[i][j]);
printf(“\n”);
}
若输⼊数据
1
2
3
4
5
6
7
8
运⾏结果为:
五、程序设计题(本⼤题共3⼩题,每⼩题15分,共45分)
程序填空每空5分。
1、有以下程序,其功能是将两个有序(由⼩到⼤排列)数组中的数据合并到
⼀个数组中,要求合并后的数组依然是由⼩到⼤顺序排列,最后输出排序后数组内容。
数组中以数据0表⽰数据的结束。
请在下划线处填上正确的内容,以实现程序功能。
#include
main()
{int a[20]={1,4,7,17,23,0};
int b[20]={2,6,9,10,15,24,45,72,81,92,0};
int i,j,k,c[20];
i=j=k=0;
while((a[i]!=0)&&(b[j]!=0))
{ if(a[i]
{c[k]=_________;
i++;
}
else
{
c[k]=__________;
j++;
}
k++;
}
if(a[i]==0)
while(b[j]!=0)
c[k++]=b[j++];
if(b[i]==0)
while(a[j]!=0)
c[k++]=a[j++];
_________;
}
2、下⾯程序的功能是:从键盘上输⼊⼀个五位整数,对此整数中的五个
数值(即万位、千位、百位、⼗位、个位上的数字)进⾏从⼤到⼩的排序,形成⼀个新的五位整数,输出这个整数。
如输⼊12435,则54321。
请完成该程序。
#include
main()
{
long int x,y;
int i,a[5];
scanf(“%ld”,&x);
if((x<10000)||(x>99999))
{printf(“This data is error”);
exit(0);
}
for(i=0;i<5;++i)
{a[i]=x%10;
x=x/10;}
fun(a);
y=0;
for(i=0;i<5;++i)
y=___________;
printf(“%ld”,y);
}
fun(int a[])
{ int i,j,k;
for(i=0;i<5;++i)
for(j=i;j<5;++j)
if( ______________)
{ ______________;
a[i]=a[j];
a[j]=k;
}
}
3、下⾯函数的功能是将⼀个⼗六进制数转换成相应的⼗进制数,请完成该函数。
htoi(s)
char s[ ];
{int i,n;
for(i=0;s[i]!=?\0?;i++)
{if (s[i]>=?0?&&s[i]<=?9?)
____________________;
if(s[i]>=?a?&&s[i]<=?f?)
____________________;
if(s[i]>=?A?&&s[i]<=?F?)
____________________;
}
return(n);
}
}
六、综合应⽤题(本⼤题共1⼩题,共15分)
程序填空每空5分
孪⽣素数是指两个相差为2的素数。
例如:3 和5,5 和7 ,11和13等,下⾯的程序可输出15对孪⽣素数,请填空。
其中函数isprime 的功能是整数a是否为素数。
#include
main()
{
int k,n;
n=0;k=2;
do
{
if(isprime(k)&&_____________)
{
n=n+1;
printf(“%d,%d”,k,k+2);
}
k=k+1;
}
______________;
}
isprime(int a)
{int k,j;
j=1;k=2;
if( ________________)
j=0;
else k=k+1;
}
return(j);
}
七、选考题(每⼀名考⽣根据⾃⼰的专业⽅向,从2组题中任选⼀组,多选的
则只计前⼀组的成绩。
每组2⼩题,每⼩题15分,共30分)
[第⼆组:C语⾔⽅向]
1、下列程序是分解⼀个数的质因⼦,例如126的质因⼦是2,3,3,7,
⽽126=2*3*3*7。
请将程序填充完整,使之能正确运⾏。
(每空5分) main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while( )
{
if( )
{ printf("%d*",i);
n=n/i;
}
else
;
}
}
printf("%d",n);
}
2、程序编写
⼗位不为0,个位不为0和1的三位素数中,去掉其百位后仍是素数,且该数的个位也是素数。
如113是素数,13也是素数,3也是素数。
编程输出所有这样的三位数。