(考试时间 14:00~16:30 共150分钟)
本试卷共8道题,考生需解答5道题,其中试题1~试题3是必答题,试题4和试题5两题任选1道题,试题6至试题8三题任选1道解答。对于任选题,如果解答的试题数超过1道,则题号小的1道题解答有效。每题15分,满分75分。
试题一(15分,每空3分)
阅读以下说明和流程图,将应填入__(n)__处的字句写在答题纸的对应栏内。
[说明]
已知头指针分别为La和Lb的有序单链表,其数据元素都是按值非递减排列。现要归并La和Lb得到单链表Lc,使得Lc中的元素按值非递减排列。程序流程图如下所示。
试题二(15分,每空3分)
阅读以下函数说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[程序2.1说明]
已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。
[程序2.1]
#include
#define N 100
void main()
{
float a[N=1],x;
int i,p;
printf("输入已经排好序的数列:");
for( i=0; i
scanf(%f",&a[i]);
printf("输入要插入的数:");
scanf("%f",&x);
for( i=0,p=N; i
if(x
{
___(1)___
break;
}
for( i=N-1; i>=p; i-- )
___(2)___
___(3)___
for( i=0; i<=N; i++ )
printf("%f\t",a[i]);
}
[程序2.2说明]
本程序用变量count统计文件中字符的个数。
[程序2.2]
#include
#include
void main()
{
FILE *fp;
long count=0;
if( (fp=fopen("letter.txt","r") ) == NULL )
{
printf("can not open file\n");
exit(0);
}
while( !feof(fp) )
{
___(4)___
count++;
}
printf("count=%d\n",count);
___(5)___
}
试题三(15分,每空3分)
阅读以下说明和C语言程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
Fibonacci数列A={11,2,3,5,8,…}有如下性质:
a0=a1=1
ai=ai-1+ai-2 i>1
对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:
xi=ai/ai+1 i=0,1,…,n
现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。
[程序]
#include
#include
#include
struct fact
{
long m,n;
};
void sort(int n,struct fact *p)
{
int a;
long s,t,u,v;
struct fact *q,*end;
for(end=p+(n-1),a=1;a;end--)
for(a=0,q=p;q
{
s=q->m;
t=q->n;
u=(q+1)->m;
v=(q+1)->n;
if(___(1)___)
{
q->m=u;