B)intj,a[5]={1,3,6,7,8},s=0,*p=a;
for(j=0;j<5;j++)if(*p%2==0)s+=*p++;
C)intj,a[5]={1,3,6,7,8},s=0,*p=a;
for(j=0;j<5;j++)if(*(p+j)/2*2==*(p+j))s+=*(p+j);
D)intj,a[5]={1,3,6,7,8},s=0,*p=a;
for(j=0;j<5;j++)if(*p%2==0)s+=*p++;
elsep++;
7.不能正确计算代数式sin2(1/2)/3值的C语言表达式是________。
其中pow(x,y)是求x的y次方函数。
A)1/3*sin(1/2)*sin(1/2)B)sin(0.5)*sin(0.5)/3
C)pow(sin(0.5),2)/3D)1/3.0*pow(sin(1.0/2),2)
试卷类别
[A]
[B]
使用班级
全校统考
使用学期
2011年春
命题人签字
审题人签字
_________
审定人签字
____________
8.有以下函数
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s-1);
}
该函数的功能是________。
A)比较两个字符串的大小B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中
9.若有说明语句:
double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是__。
A)*p=&a;scanf(“%lf”,p);B)*p=&a;scanf(“%f”,p);
C)p=&a;scanf(“%lf”,*p);D)p=&a;scanf(“%lf”,p);
10.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是__。
A)if(x++);B)if(x>y&&y!
=0);
C)if(x>y)x--elsey++;D)if(y<0){;}elsex++;
11.下列语句组中,正确的是________。
A)char*s;s=“Olympic”;B)chars[7];s=“Olympic”;
C)char*s;s={“Olympic”};D)chars[7];s={“Olympic”};
12.以下关于return语句的叙述中正确的是________。
A)一个自定义函数中必须有一条return语句
B)一个自定义函数中可以根据不同情况设置多条return语句
C)定义成void类型的函数中可以有带返回值的return语句
D)没有return语句的自定义函数在执行结束时不能返同到调用处
13.以下结构体变量的操作中,不能正确执行的语句是________。
struct
{intnum;
charname[20];
floatscore;
}stua,stub;
A)stua=stub;B)stua.num=stub.num;
C)stua.name=stub.name;D)stua.score=stub.num;
14.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是________。
A)5B)6C)8D)9
15.以下函数是计算多项式________的值。
doublef(intn)
{doublei,t=1,s=t;
for(i=2;i<=n;i++){
t=t*(2*i-2)*(2*i-1);
s+=t;
}
returns;
}
A)2!
+4!
+6!
……B)2+4+6……C)1+3+5……D)1!
+3!
+5!
……
二、程序阅读题(每题3分,共30分)
16.有以下程序
#include
voidmain()
{chara=‘a’,b;
printf(“%c,”,++a);
printf(“%c\n”,b=a++);
}
程序运行后的输出结果是________。
A)a,bB)a,cC)b,bD)b,c
17.有以下程序
#include
voidmain()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf(“%d,%d\n”,k,m);
}
程序运行后的输出结果是________。
A)0,0B)0,1C)1,0D)1,1
18.有以下程序
#include
voidmain()
{inta=5,b=4,c=3,d=2;
if(a>b>c)printf(“%d\n”,d);
elseif((c-1>=d)==1)printf(“%d\n”,d+1);
elseprintf(“%d\n”,d+2);
}
程序运行后的输出结果是________。
A)2B)3C)4D)编译时有错,无结果
19.有以下程序
#include
voidmain()
{
intk=5,n=0;
while(k>0){
switch(k){
default:
break;
case1:
n+=k;
case2:
case3:
n+=k;
}
k--;
}
printf(“%d\n”,n);
}
程序运行后的输出结果是________。
A)0B)4C)6D)7
20.有以下程序
#include
#include
structA{inta;charb[10];doublec;};
voidf(structAt);
voidmain()
{
structAa={1001,“ZhangDa”,1098.0};
f(a);
printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);
}
voidf(structAt)
{
t.a=1002;
strcpy(t.b,“ChangRong”);
t.c=1202.0;
}
程序运行后的输出结果是________。
A)1001,ZhangDa,1098.0C)1001,ChangRong,1098.0
B)1002,ChangRong,1202.0D)1002,ZhangDa,1202.0
21.有以下程序
#include
#defineSUB(a)(a)-(a)
voidmain()
{
inta=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf(“%d\n”,d);
}
程序运行后的输山结果是________。
A)0B)10C)-12D)-20
22.有以下程序
#include
structstudent{charname[20];intsex;intscore;};
voidmain()
{FILE*fp;structstudentstu,mamin,femax;
fp=fopen(“myfile.txt”,“r”);
mamin.score=100;
femax.score=0;
while(!
feof(fp))
{
fscanf(fp,“%s%d%d”,stu.name,&stu.sex,&stu.score);
if(!
stu.sex)
if(stu.score>femax.score)femax=stu;
if(stu.sex)
if(stu.score}
fclose(fp);
printf(“\n%s%d,%s%d”,femax.name,femax.score,mamin.name,mamin.score);
}
程序运行后的输出结果是________。
A)Sun93,Qian92B)Wang72,Zheng63
C)Sun93,Zheng63D)Wang72,Qian92
myfile.txt文件的内容
zhao085
Qian192
Sun093
Li078
Zhou175
Wu186
Zheng163
Wang072
23.有以下程序
#include
intfun()
{
staticintx=1;
x*=2;
returnx;
}
voidmain()
{
inti,s=1;
for(i=1;i<=2;i++)s+=fun();
printf(“%d\n”,s);
}
程序运行后的输出结果是________。
A)7B)5C)3D)1
24.有以下程序
#include
intf(intt[],intn);
voidmain()
{
inta[4]={1,2,3,4},s;
s=f(a,4);
printf(“%d\n”,s);
}
intf(intt[],intn)
{
if(n>0)returnt[n-1]+f(t,n-1);
elsereturn0;
}
程序运行后的输出结果是________。
A)4B)10C)14D)6
25.以下程序运行后的输出结果是________。
#include
voidf(int*b,intn,intflag)
{
inti,j,t;
for(i=0;ifor(j=i+1;jif(flag?
*(b+i)>*(b+j):
*(b+i)<*(b+j))
{
t=*(b+i);*(b+i)=*(b+j);*(b+j)=t;
}
}
voidmain()
{
inta[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0);
f(a,5,1);
for(i=0;i<10;i++)
printf(“%d,”,a[i]);
printf(“\n”);
}
A)1,2,3,4,5,6,7,8,9,10B)3,4,5,6,7,2,1,8,9,10
C)5,4,3,2,1,6,7,8,9,10D)10,9,8,7,6,5,4,3,2,1
三、程序填充题(每空4分,共40分)
●以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。
#include
intisprime(inta)
{
inti;
if(a<2)return0;
if(a==2)return1;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)【26】;
【27】;
}
【26】A)returniB)returnaC)return0D)return1
【27】A)returniB)returnaC)return0D)return1
●下面程序的功能是统计子串substr在母串str中出现的次数,请选择填空。
例如母串str=“abcdabcdabc”,字串substr=“bc”,则字串在母串中出现的次数为3.
#include
voidmain()
{
intcount(char*str,char*substr);
charstr[80],substr[80];
gets(str);
gets(substr);
printf(“%d\n”,count(str,substr));
}
intcount(char*str,char*substr)
{inti,j,k,num=0;
for(i=0;【28】;i++)
for(【29】,k=0;substr[k]==str[j];k++,j++)
if(substr[【30】]==’\0’)
{
num++;
break;
}
return(num);
}
【28】A)str[i]==substr[i]B)str[i]!
=‘\0’
C)str[i]==’\0’D)str[i]>substr[j]
【29】A)j=i+1B)j=iC)j=0D)j=1
【30】A)kB)k++C)k+1D)++k
●把一个整数序列按奇数在前,偶数在后的顺序重新排列,并要求奇偶两部分分别有序。
#include
voidsort(int*a,intn)
{
int*i,*j,t;
for(i=a;ifor(j=i+1;jif(*i>*j){
【31】
}
}
}
}
voidmain()
{
inti,t,n1=0;
inta[10]={2,1,3,4,5,9,8,6,10,7};
for(i=0;i<10;i++){
if(a[i]%2){
【32】
}
}
sort(【33】
(1));
sort(【33】
(2));
for(i=0;i<10;i++){
printf("%5d",a[i]);
}
printf("\n");
}
【31】A)t=a[i];a[i]=a[j];a[j]=t;B)a[i]=a[j];a[j]=a[i];
C)t=*i;*i=*j;*j=t;D)t=i;i=j;j=t;
【32】A)t=a[i];a[i]=a[0];a[0]=t;B)t=a[i];a[i]=a[n1++];a[n1]=t;
C)t=a[i];a[i]=a[n1];a[n1++]=t;D)a[n1++]=a[i];
【33】A)
(1)a,10B)
(1)a,n1
(2)a,10-n1
(2)a+n1,10-n1
C)
(1)a,n1D)
(1)a,10-n1
(2)a+n1,n1
(2)a+n1,10
●折半查找法的思路是:
先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值,如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。
函数binary_search的作用是应用折半查找法从存有n个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。
请选择填空。
(注:
假设实参数组已经按照从小到大顺序排列)。
intbinary_search(inta[],intn,intm)
{
intlow=0,high=n-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(melseif(m>a[mid])【35】;
elsereturn(mid);
}
return(-1);
}
【34】A)high=mid-1B)low=mid+1
C)high=mid+1D)low=mid-1
【35】A)high=mid-1B)low=mid+1
C)high=mid+1D)low=mid-1
答案
01-05A,B,B,C,D
06-10B,A,C,D,C
11-15A,B,C,D,D
16-20C,C,B,D,A
21-25D,C,A,B,B
26-30C,D,B,B,C
31-35C,C,B,A,B