设为首页 加入收藏

TOP

C语言编程笔试题(第四十一套)
2014-11-24 01:20:13 来源: 作者: 【 】 浏览:5
Tags:语言编程 试题 第四十一

编程题:


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(lowhigh,查找结束。


请改正程序中的错误,使它能得出正确结果。


注意:不要改动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;


if(m

high=mid-1;


/********found********/


else


if(m>=a[mid])


low=mid+1;


else


return(mid);


}


return (-1);


}


main()


{


int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;


printf(“a:”);


for(i=0;i

printf(“%d “,a[i]);


printf(“Enter m:”);


scanf(“%d”,&m);


k=fun(a,m);


if(k>=0)


printf(“m=%d,index=%d\n”,m,k);


else


printf(“Not be found!\n”);


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言编程笔试题(第四十套) 下一篇C语言编程笔试题(第四十二套)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: