编程题:
89.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#define N 12
typedef struct
{
char num [10];
double s;
}STREC;
double fun ( STREC *a, STREC *b, int *n )
{
}
main ()
{
STREC s[N]={{“GA05″,85}, {“GA03″,76}, {“GA02″,69}, {“GA04″,85},
{“GA01″,91}, {“GA07″,72}, {“GA08″,64}, {“GA06″,87},
{“GA09″,60}, {“GA11″,79}, {“GA12″,73}, {“GA10″,90}};
STREC h [N], t;
FILE *out ;
int i,j,n;
double ave;
ave=fun ( s, h, &n );
printf ( “The %d student data which is higher than %7.3f:\n”, n, ave);
for ( i=0; i printf (“%s %4.1f\n”, h[i]. num, h[i]. s); printf (“\n”); out=fopen(“out12.dat”,”w”); fprintf(out,”%d\n%7.3f\n”, n, ave); for(i=0;i for(j=i+1;j if(h[i].s { t=h[i] ; h[i]=h[j]; h[j]=t; } for(i=0;i fprintf(out, “%4.1f\n”,h[i].s); fclose(out); } 90.请编写函数fun,其功能是:计算并输出下列多项式值: Sn= (1-1/2) + (1/3-1/4)+…+(1/2n-1-1/2n) 例如,若主函数从键盘给n输入8后,则输出为S=0.662872。 注意:n的值要求大于1但不大于100。部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include double fun(int n) { } main() { int n; double s; printf(“\nInput n: “); scanf(“%d”,&n); s=fun(n); printf(“\ns=%f\n”,s); } 改错题: 12.下列给定程序中函数fun的功能是:求出在字符串中最后一次出现的子字符串的地 址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。 例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是:abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息:not be found!。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include #include char *fun(char *s,char *t) { char *p,*r,*a; /********found********/ a=NuLL; while(*s) { p=s;r=t; while(*r) /********found********/ if(r==p) { r++; p++; } else break; if(*r==’\0′) a=s; s++; } return a; } main() { char s[100],t[100],*p; clrscr(); printf(“\nplease enter string s:”); scanf(“%s”,s); printf(“\nplease enter substring t:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nthe result is:%s\n”,p); else printf(“\nnot found!\n”); } 20.N个有序整数数列已放在一维数组中,给定下列程序中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值;反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #define N 10 /********found********/ void fun(int a[],int m) { int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2;