2014年計算機等級考試C語言衝刺題(程序改錯題)

 試題

2014年計算機等級考試C語言衝刺題(程序改錯題)

下列給定的程序中,函數proc()的功能是:用選擇法對數組中的m個元素按從小到大的順序進行排序。

例如,排序前的數據爲:11 32 -5 2 14則排序後的數據爲:-5 2 11 14 32

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include

#define M 20

void proc(int a[],int n)

{

int i,j,t,P;

//****found****

for(j=0;j {

P=j;

for(i=j;i if(a[i] p=i;

t=a[p]];

a[p]=a[j];

//****found****

a[p]=t:

}

}

void main()

{

int arr[M]={11,32,-5,2,14).i,m=5;

printf(”排序前的數據:”);

for(i=0;i printf(”%d”,arr[i]):

printf(”n”);

proc(arr,m):

printf(”排序後的順序:”);

for(i=0;i printf(”%d”,arr[i]);

printf(”n”);

}

}

試題二

下列給定程序中,函數proe()的功能是:對M名學生的學習成績,按從高到低的順序找出前m(m<10)名學生來,並將這些學生數據存放在一個動態分配的連續存儲區中,此存儲區的首地址作爲函數值返回。

請修改程序中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include%stdlib.h>

#include

#include

#include

#include%malloe.h>

#define M 10

typedef struct ss

{

char num[10];

int s;

}

STU;

STU *proc(STU a[],int m)

{

STU b[-M],*t;

int i,j,k;

//****found****

*t=calloc(m,sizeof(STU));

for(i=0;i for(k=0;k {

for(i=j=0;i if(b[i].s>b[j].s)j=i;

//****found****

t[k]=b[j];

t[k].s=b[j].S;

b[j].s=0;

}

return t:

}

void outresuh(STU a[],FILE *pf)

f

int i;

for(i=0;i fprintf(pf,”No=%s Mark=%dn”,

a[i] mum,a[i].s);

fprintf(pf,”nn”);

)

void main()

{STU stu[M]={{¨A01”,81},{¨A02”,89},

{¨A03”,66},{”A04”,87),{”A05”,77),

{”A06”,90),{"A07”,79),{”A08”,61),

{”A09”,80},{”A10”,71));

STU+pOrder;

int i,m;

system(”CLS”);

printf(”****THE RESULT****n”);

outresuh(stu,stdout);

print{(”nGive the number of the students

who have better score:”);

scanf(”%d”,&m);

while(m>10)

printf(”nGive the number of the

students who have better score:”);

scanf(”%d”,&m);

}

p()rder=proc(stu,m);

printf(”****THE RESULT****n”);

printf(”The lop:n”);

for(i=0:i printf(”%s%dn”,pOrder[i],

pOrder[i].s);

free(pOrder);

)

 試題三

下列給定程序中,函數proc()的功能是:根據整型形參n的值,計算如下公式的值。

t=i-1/(2*2)-1/(3*3)-…-1/(n*n)

例如.當n=7時。t=0.188203。

請修改函數proc()中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include

#include

#include

double proc(int n)

{double y=1.0;

inl i;

//****found****

for(i=2;i //****found****

y-=1/(i*i):

telurn(y);

}

void main()

{ int n=7:

system(”CLS”):

print[(”nThe result is%lfn”,proe(n))。

}

試題四

下列給定程序中函數proc的功能是:取出長整型變量s中偶數位上的'數,依次構成一個新數放在t中。例如,當s中的數爲123456789時,t中的數爲2468。請修改程序中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include

#include