应为:
if(a[j]>a[k])
if(k=i)错!
应为:
if(k!
=i)
{
t=a[j];错!
应为:
t=a[k];
a[j]=a[i];错!
应为:
a[k]=a[i];
a[i]=t;
}
}
}
一.单项选择题(每小题2分,共30分)
一个程序的执行是从()。
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C.本程序的main函数开始,到本程序文件的最后一个函数结束。
D.本程序文件的第一个函数开始,到main函数结束。
2.设有以下定义:
defineD2
inta=0;
doubleb=1.25;
charc=’A’;
则下面语句中错误的是()。
A.a++;B.b++;C.c++;D.D++;
3.有如下输入语句:
scanf(“x=%d:
y=%d”,&x,&y);为使变量x的值为2002,
变量y的值为11,那么从键盘输入数据的正确格式为()。
A.200211B.x=2002:
y=11
C.x=2002y=11D.x=2002,y=11
4.设有变量定义intx=5,n=5;计算表达式x+=n++后,变量x,n值分别为()。
A.11,6B.10,5C.10,6D.5,6
5.已知inti=5;执行下列语句后,变量i的值为()。
switch(i)
{case4:
i+=1;
case5:
i+=1;
case6:
i+=1;
default:
i+=1;
}
A.5B.6C.7D.8
6.表示关系X<=Y<=Z的c语言表达式为()。
A.(X<=Y)&&(Y<=Z)B.(X<=Y)AND(Y<=Z)
C.X<=Y<=ZD.(X<=Y)&(Y<=Z)
7.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。
A.1B.2C.2.0D.2.5
8.表达式strcmp(“box”,“boss”)的值是一个()。
A、正数B、负数C、0D、不确定的数
9.判断字符串是否相等,应当使用()。
A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(!
strcmp(a,b))
10.以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在main()函数中定义的变量是全局变量,可以被文件中的其它函数使用
11.若i和j已定义为int类型,则以下程序段中内循环体的总的执行次数是()。
for(i=5;i;i--)
for(j=0;j<4;j++)
{.........}
A.25B.20C.24D.30
12.若有以下说明和语句:
structworker
{
intno;
char*name;
}work,*p=&work;
则以下引用方式不正确的是()。
A.work.noB.(*p).noC.work->noD.p->no
13.设有定义:
inta,*pa=&a;
则以下语句中能正确为变量a读入数据的是()。
A.scanf(“%d”,&pa);B.scanf(“%d”,a);
C.scanf(“%d”,pa);D.scanf(“%d”,*pa);
14.有如下定义
structperson
{charname[9];
intage;
};
structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam16,};
根据上述定义,能输出字母M的语句是()。
A.printf(“%c\n”,class[3].name);
B.printf(“%c\n”,class[3].name[1]);
C.printf(“%c\n”,class[2].name[1]);
D.printf(“%c\n”,class[2].name[0]);
15.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A.i=*p;B.*p=j;C.i=*j;D.i=**p;
阅读和分析下列程序,根据程序写出程序的输出结果或填空。
(1~4小题每小题3分,5~6小题每空3分,共30分)
1. 以下程序的输出结果是:
_____。
#include
main()
{
inti,s=0;
for(i=1;i<10;i+=2)
s+=i+1;
printf(“%d\n”,s);
}
2. 以下程序段的输出结果是:
________。
#include
main()
{
intm=0;
while(m++<=1)
printf("%d\n",m);
printf("%d\n",m);
}
3. 以下程序段的输出结果是:
________。
#include"stdio.h"
voidfun(intx,inty)
{x=x+y;
y=x-y;
x=x-y;
printf("%d,%d,",x,y);}
main()
{intx=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);}
4. 以下程序段的输出结果是:
_______。
#include"stdio.h"
main()
{
inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
5.下面程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
请填空。
main()
{floatx,max,min;
scanf(“%f”,&x);
max=x;
min=x;
while(
(1))
{if(x>max)max=x;
if(
(2))min=x;
scanf(“%f”,(3))
}
printf(“\nMax=%f\nMin=%f\n”,max,min);
}
6. 函数fun的功能是求xy(y>=1),请填空。
doublefun(doublex,inty)
{
(1)
doublez;
for(i=1,z=1;
(2);i++)
z=z*x;
(3)
}
三、编程题(共40分)
1.编写一程序求出表达式s=1!
+3!
+5!
+…….+19!
(10分)
2.编写一个strlen函数,它能对一个字符串测出其长度,函数返回值就是字符串的长度。
(注:
长度不包括字符串结束标志“\0“)。
(10分)
3.假设在磁盘文件in.dat中存放着如下格式的10个整数:
583723618492932
试编写程序实现如下功能:
编写函数input从文件in.dat中读出所有数据;编写函数sort将这组数据按从小到大的顺序排列;编写函数output将排序后的数据输出到文件out.dat中。
在主函数中依次调用以上函数。
(20分)
二.单项选择题(每小题2分,共30分)
1.A2.D3.B4.C5.D
6.A7.C8.A9.D10.D
11.B12.C13.C14.D15.B
三.阅读和分析下列程序,根据程序写出程序的输出结果或填空。
1.30
2.1
2
3
3.3,2,2,3
4.8,7,7,8
5.
(1)x>=0
(2)x6.
(1)inti;
(2)i<=y(3)return(z)或returnz
三、编程题(共40分)
1.参考程序如下:
(10分)
#include“stdio.h”
main()
{inti;
longs=1,f=1;
for(i=3;i<=19;i+=2)
{f=f*(i-1)*i;
s=s+t;