《二级C语言考前押题.pdf》由会员分享,可在线阅读,更多相关《二级C语言考前押题.pdf(87页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 96套:给定程序中,函数fun的功能是根据形参i 的值返回某个函数的值。当调用正确时,程序输出 xl=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000给定源程序:include double fl(double return x*x;double f2(double return x*y;X)x,double y)/*-Q|J p|*/_ 1 _ fun(int i,double x,double y)if(i=l)/*/return _ 2 _(x);else/*found*/return _ 3 _(x,y);)main()double xl=5z
2、x2=3,r;r=fun(lz xl,x2);r+=fun(2,xl,x2);printf(nnxl=%f,x2=%fz xl*xl+xl*x2=%fnnzxl,x2,r);解题思路:本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double第二处:当 i 等于1 时,则返回f l 函数的值,所以应填:f l。第三处:如果i 不等于1,则返回f2 函数的值,所以应填:f2。参考源程序:c:wexam24990001HLPSYS参考答案、blankl.c清此程序拷贝到考生文件夹中,然后运行这个程序就可以得到正
3、确的结果。*给定程序M0DI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:include/*found*/char fun(char*s,char*t)int sl=Oztl=O;char*ssz*tt;ss=s;tt=t;while(*ss)sl+;/*found*/(*ss)+;)while(*tt)tl+;/*found*/(*tt)+;if(tlsl)return t;else return s;main()char
4、 a80,b80;printf(nEnter a string:);gets(a);printf(nEnter a string again:);gets(b);printf(nThe longer is:nn,%sn/fun(a/b);解题思路:第一处:试题要求返回字符串的首地址,所以应改为:char*fun(char*s,char*t)第二处:取字符串指针SS的下一个位置,所以应改为:SS+;。第三处:取字符串指针tt的下一个位置,所以应改为:*请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1 到第m 个字符,平移到字符串的最后,把 第 m+1到最后的字符移到字符
5、串的前部。例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABCo给定源程序:/include#include#d efine N 80void funl(char*w)/*本函数的功能是将字符串中字符循环左移,个位置*/(int i;chart;t=w0;for(i=0;i(int)strlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;void fun(char*w,int m)/*可调用 funl 函数左移字符*/main()char aN=(,ABCDEFGHIJK,;int m;void NONO()
6、;printf(nThe original string:n);puts(a);printf(nnEnter m:“);scanf(“%d”,&m);fun(a,m);printf(nThe string after moving:n);puts(a);printf(nn);NONO();)void NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据,关闭文件。*/FILE*rf,*wf;char aN;int m,i;rf=fopen(c:testin.dat,/,rn);wf=fopen(c:testout.dat/,w);for(i=0;i 10;i+)
7、fscanf(rf,%d%s,&m,a);fun(a,m);fprintf(wf,%sn,a);)fclose(rf);fclose(wf);参考答案:#include/include#d efine N 80void funl(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/(int i;char t;t=w0;for(i=0;istrlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;void fun(char*w,int m)/*可调用 funl 函数左移字符*/int i;for(i=0;i m;i+)funl(w);main()char aN=,A
8、BCDEFGHIJK;int m;printf(The original string:n);puts(a);printf(nnEnter m:);scanf(%d,&m);fun(a,m);printf(nThe string after moving:n);puts(a);p rintfCW);NONO();NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据,关闭文件。*/FILE*rf,*wf;char aN;int m,i;rf=fopen(“c:testin.dat”J r“);wf=fopen(c:testout.dat,7,w);for(i=0;
9、i 10;i+)fscanf(rf,%d%s,&m,a);fun(a,m);fprintf(wf,%sn“,a);fclose(rf);fclose(wf);)第 14套:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。给定源程序:ftinclude typedef struct int num;char name10;PERSON;/*found*/void fun(PERSON _ 1 _)/*found*I_2_ temp;if(stdO.numstdl.num)temp=
10、stdO;stdO=stdl;if(std0.numstd2.num)temp=stdO;std0=std2;if(stdl.numstd2.num)temp=stdl;stdl=std2;stdl=temp;std2=temp;std2=temp;main()PERSON std=5/Zhanghu,2,WangLiz6;LinMin;int i;/*found*/fun(_3_);printf(nThe result is:n);for(i=0;i3;i+)printf(%d,%sn,stdi.num,stdi.name);)解题思路:本题是要求对结构体数组中的三个元素按num成员升序排列
11、。第一处:由于在函数体fun中,已经使用了 std变量,所以应填:*std。第二处:由于temp是存放交换记录的中间变量,所以应填:PERSON,第三处:函数的调用,所以应填:std。给定程序M0DI1.C中函数fun的功能是:将m(lW m W lO)个字符串连接起来,组成一个新串,放入pt所指存储区中。例 如:把 3 个串:abc,CD,EF连接起来,结 果 是 abcCDEF%ftinclude#include void fun(char str10,int m,char*pt)/*found*/Int k,q,i;for(k=0;k m;k+)q=strlen(str k);for(i
12、=0;iq;i+)/*found*/pti=strk,i;Pt+=q;ptO=0;)main()int m,h;chars1010z p120;printf(HnPlease enter m:H);scanf(%d,&m);gets(sO);printf(nPlease enter%d string:n,m);for(h=0;h m;h+)gets(sh);fun(s,m,p);printf(nThe result is:%sn,p);)解题思路:第一处:保留字int错写成Int。第二处:字符数组的字符串书写格式错误。程序定义了N X N 的二维数组,并在主函数中自动赋值。请编写函数fun(i
13、ntaN),函数的功能是:使数组左下三角元素中的值全部置成0。例如:a 数组中的值为|197|0 9 7|a=|2 38|则返回主程序后a 数组中的值应为|0 0 8|4 5 6|0 0 0|给定源程序:#include#include#d efine N 5void fun(int aN)main()(void NONO();int aNN,iz j;printf(*The array*n);for(i=0;iN;i+)for(j=0;jN;j+)ai01=rand()%10;printf(%4d,aij);printf(n);)fun(a);printf(THE RESULTn);for(
14、i=0;iN;i+)for(j=0;jN;j+)printf(%4dz aij);printf(nn);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;int i,j,a;rf=fopenCciWtestWin.daf/r);wf=fopen(“c:testout.dat“Jw);for(i=0;i 5;i+)for(j=0;j 5;j+)fscanf(rf,%d,&aij);fun(a);for(i=0;i 5;i+)for(j=0;j5;j+)fprintf(wfz%4d/aij);fprintf(wf,n)
15、;)fclose(rf);fclose(wf);)参考答案:#include include#define N 5int fun(int aN)(int i,j;for(i=0;i N;i+)for(j=0;j=i;j+)aij=0;main()int aNN,i,j;printf(H*The array*n);for(i=0;iN;i+)for(j=0;jN;j+)ai0=rand()%10;printf(”4d”,aij);printf(un);)fun(a);printf(THE RESULTn);for(i=0;iN;i+)for(j=0;jN;j+)printf(aij);print
16、f(n);)N0N0();N0N0()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;int a;rf=fopenCciWtestWin.datVr);wf=fopen(c:testout.datzw);for(i=0;i 5;i+)for(j=0;j 5;j+)fscanf(rf,%d,&aij);fun(a);for(i=0;i 5;i+)for(j=0;j 5;j+)fprintf(wf,%4d,aij);fprintf(wf,n);)fclose(rf);fclose(wf);)第 06套:给定程序中已建立一个带有头结点的单向链表,在 mai
17、n函数中将多次调用fun函数,每调用次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。给定源程序:include#include#d efine N 8typedef struct list int data;struct list*next;SLIST;void fun(SLIST*p)SLIST*t,*s;t=p-next;s=p;while(t-next!=NULL)S=t;/*found*/t=t-_ 1 _;)/*found*/printf(%d,2);s-next=NULL;/*found*/fr
18、ee(_ 3 _);SLIST*creatlist(int*a)SLIST*h,*p/q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=0;idata=ai;p-next=q;p=q;)p-next=O;return h;void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(nThe list is NULL!n);else printfCAnHead);do printf(-%dH,p-data);p=p-next;while(p!=NULL);printf(n-EndnM);main()SL
19、IST*head;int aN=ll,12,15,18,19,22,25,29;head=creatlist(a);printf(nOutput from head:n);outlist(head);printf(HnOutput from tail:n);while(head-next!=NULL)fun(head);printf(nn);printf(HnOutput from head again:nH);outlist(head);)解题思路:本题是对已经建立的链表,通过调用一次函数就输出链表尾部的数据。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。第一处:由于本题要求输出
20、链表尾部的数据,函数是利用while循环语句找出链表尾部的指针并存入临时变量s 中,那么每循环一次就要判断链表是否已结束位置,如果是,则退出循环,进行输出,由于是通过t 指针变量进行操作的,因此,都要取t 的 next指针重新赋给 t 来实现,所以本处应填next。第二处:输出最后一个结点的数据,所以应填t-data或(*t).data。第三处:输出出最后一个结点数据后,并把此结点删除了,程序要求释放内存,所以应填 t给定程序M0DI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:deba。请改正程序中的错误,使它能计算出正确
21、的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:include/*found*/fun(char a)if(*a)fun(a+l);/*found*/printf(%c*a);)main()char s10=abcd;printf(处理前字符串=%sn处理后字符串=,s);fun(s);printf(n);解题思路:第一处:形参a 应定义为字符串指针。第二处:语句中缺少逗号。*请编写一个函数fu n,它的功能是:比较两个字符串的长度,(不得调用C 语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入 b
22、eijing shanghai (为回车键),函数将返回shanghaio给定源程序:include char*fun(char*s,char*t)main()char a20,b20;void NONO();printf(lnput 1th string:);gets(a);printf(lnput 2th string:);gets(b);printf(H%sn,fun(a,b);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fpz*wf;int i;char a20,b20;fp=fopen(,c:testin.dat
23、,rM);wf=fopen(c:testout.dat,w);for(i=0;i 10;i+)fscanf(fpz%s%s/a,b);fprintf(wfz%snz fun(az b);)fclose(fp);fclose(wf);)参考答案:#include char*fun(char*s,char*t)int i;char*p=s,*q=t;for(i=0;*p&*q;i+)P+;q+;if(*p=0&*q=0)return s;if(*p)return s;else return t;main()char a20,b20;printf(Hlnput 1th string:);gets(a
24、);printfflnput 2th string:);gets(b);printf(%sn,fun(a,b);NONO();NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fpz*wf;inti;char a20,b20;fp=fopenCcrWtestWin.datVr);wf=fopen(c:testout.dat/,w);for(i=0;i 10;i+)fscanf(fp,%s%s/a,b);fprintf(wf,%snHz fun(a,b);fclose(fp);fclose(wf);)第 42套:函数fun的功能是:计算的前n 项之和。若
25、x=2.5,n=15时,函数值为:1.917914。给定源程序:include#include double fun(double x,int n)double 11;int i;/*found*It=-l;1for(i=l;in;i+)/*found*/t*=(_2_)*x/i;/*found*/f+=3.)return f;main()double x,y;x=2.5;y=fun(x,15);printf(nThe result is:n);printf(x=%-12.6f y=%-12.6fn,x,y);)解题思路:第一处:根据公式可知,变量f 的初值为1。第二处:根据公式可知,此处是正
26、负号的变换,所以应填:-1。第三处:计算的结果进行累加并赋值给变量f,所以应填:t。*给定程序M0DI1.C中函数fun的功能是:从 3 个红球,5 个白球,6 个黑球中任意取出8 个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15o 程序中i 的值代表红球数,j 的值代表白球数,k 的值代表黑球数。给定源程序:#include int fun()int i,j,k,sum=0;printf(nThe result:nn);/*foundfor(i=0;i=3;i+)for(j=l;j=0&K=6)sum=sum+l;printf(
27、red:%4d white:%4d black:%4dn,ij,k);)return sum;main()int sum;sum=fun();printf(sum=%4dnn,sum);)解题思路:第一处:外 for循环的初始变量i 的值应为lo第二处:变量k 写成了大写K 了。*请编写函数fu n,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给n 输入 1 5,则输出为:s=2.718282。注意:要求n 的值大于1 但不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句.给定源程序:#inc
28、lude double fun(int n)main()int n;double s;void NONO();printf(lnput n:);scanf(%dn,&n);s=fun(n);printf(s=%fnzs);NONO();)void NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据,关闭文件。*/FILE*rf,*wf;int n,i;double s;rf=fopen(“c:testin.dat“J r“);wf=fopen(c:testout.dat/,w);for(i=0;i 10;i+)fscanf(rf,%d,&n);s=fun(n)
29、;fprintf(wf,%lfn,s);fclose(rf);fclose(wf);参考答案:#include double fun(int n)double s=l;long t=l;int i;for(i=l;i=n;i+)t=t*i;s+=l./t;/*计算阶乘*/*计算每项的值并累加至变量S中*/return s;/*返回多项式的值*/main()int n;double s;printf(lnput n:);scanf(%d,&n);s=fun(n);printf(,s=%fn,s);NONO();)NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据
30、,关闭文件。*/FILE*rf,*wf;int n,i;double s;rf=fopenCcrWtestWin.datVr);wf=fopen(c:testout.dat,7,w);for(i=0;i 10;i+)fscanf(rf,%d,&n);s=fun(n);fprintf(wfz%lfn,s);)fclose(rf);fclose(wf);第 10套:给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。给定源程序:/include ftinclude#d efine N
31、8typedef struct list int data;struct list*next;SLIST;SLIST*creatlist(int*);void outlist(SLIST*);int fun(SLIST*h)SLIST*p;p=h-next;while(p)int s=0;/*fQ(jpid*/s+=p-1;/*found*/P=P-一 2一;)return s;main()SLIST*head;int aN=12,87,45,32,91,16,20,48);head=creatlist(a);outlist(head);/*found*/printf(,nsum=%dnH,f
32、un(_3_);SLIST*creatlist(int a)SLIST*h,*p,*q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=0;idata=ai;p-next=q;p=q;)p-next=0;return h;)void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(The list is NULL!n);else printf(nHead);do pnntf(-%d,p-data);p=p-next;while(p!=NULL);printf(-Endn);解题思路:本题是计算出带有头
33、结点的单向链表中各结点数据域中值之和。第一处:累加数据域中的值,所以应填:data。第二处:指定p 的下一-个指针,所以应填:next。第三处:函数调用,在主函数中已经给出了 h ead,所以应填:heado*给定程序M0DI1.C中函数fun的功能是:将s 所指字符串中出现的与t l 所指字符串相同的子串全部替换成t2 所指字符串,所形成的新串放在w 所指的数组中。在此处,要求t l 和 t2 所指字符串的长度相同。例如,当 s 所指字符串中的内容为:abcdabfab,t l 所指子串中的内容为:ab,t2 所指子串中的内容为:99时,结果在w 所指的数组中的内容应为:99cd99f99o
34、给定源程序:#include include void fun(char*s,char*tl,char*t2,char*w)char*p,*r,*a;strcpy(w,s);while(*w)p=w;r=tl;y*Q p|*/while(r)jf(*r=*p)r+;p+;else break;if(*r=0)a=w;r=t2;while(*r)/*QUp*I*a=*r;a+;r+)w+=strlen(t2);)else w+;)main()(char s100,tl100,t2100,w100;printf(nPlease enter string S:);scanf(%s,s);printf
35、(nPlease enter substring tl:);scanf(%s,tl);printf(nPlease enter substring t2:);scanf(%s,t2);if(strlen(tl)=strlen(t2)fun(s,tl,t2,w);printf(nThe result is:%sn,w);)else printf(Error:strlen(tl)!=strlen(t2)n);)解题思路:第一处:判断字符串当前字符是否是字符串结束符,所以应改为:while(*r)o第二处:语句后缺少分号。*函数fun的功能是:将 s 所指字符串中下标为偶数的字符删除,串中剩余字符形
36、成的新串放在t 所指数组中。例 如,当 s 所指字符串中的内容为:ABCDEFGHIJK,在 t 所指数组中的内容应是:BDFHJ给定源程序:#include include void fun(char*s,char t)main()(char s100,t100;void NONO();printf(nPlease enter string S:);scanf(%s,s);fun(s,t);printf(nThe result is:%sn,t);NONO();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars100,t100;FILE*rf
37、,*wf;int i;rf=fopenCciWtestWin.datVr);wf=fopen(c:testout.datzw);for(i=0;i 10;i+)fscanf(rf,%s,s);fun(s,t);fprintf(wf,%sn,t);)fclose(rf);fclose(wf);)参考答案:include#include void fun(char*s,char t)int i,j=0;for(i=1;i strlen(s);i+=2)tj+=si;tj=o;)main()(char s100,t100;printf(nPlease enter string S:);scanf(%
38、s,s);fun(s,t);printf(nThe result is:%sn,t);NONO();)NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/char s100,t100;FILE*rf,*wf;int i;rf=fopen(c:testin.dat,r);wf=fopen(c:testout.dat,w);for(i=0;i 10;i+)fscanf(rf,s);fun(s,t);fprintf(wf,%sn,t);fclose(rf);fclose(wf);)第 05套:给定程序中己建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增
39、有序链接。函数fun的功能是:把形参x 的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。给定源程序:#include#include#d efine N 8typedef struct list int data;struct list*next;SLIST;void fun(SLIST*h,int x)SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST);/*found*/s-data=_1.q=h;p=h-next;while(p!=NULL&xp-data)/*found*7q=一 2一p=p-next;s-next=p;/*f
40、ound*jq-next=_3_;SLIST*creatlist(int*a)SLIST*h,*p/q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=0;idata=ai;p-next=q;p=q;)p-next=0;return h;void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(nThe list is NULL!n);else printf(nHead);do printf(-%d,p-data);p=p-next;while(p!=NULL);printf(-Endn);)main
41、()SLIST*head;int x;int aN卜11,12,15,18,19,22,25,29;head=creatlist(a);printf(nThe list before inserting:n);outlist(head);printf(nEnter a number:);scanf(%d,&x);fun(head,x);printf(nThe list after inserting:n);outlist(head);)解题思路:本题是要求在一个有序的链表中插入一个数,插入后各结点仍然是有序的。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。第一处:在函数fun的开始
42、处,已经对结构指针s 分配了内存,其中data是一个整型变量,实际要求填入个整型数据。根据本题要求在个链表插入一个整型数,该数已通过函数的形参x 传入,因此应填X。第二处:使用一个while循环找出要插入一个数的位置,在循环体中q 实际上保留当前链表P 位置的临时变量,如果xp-data时,那么再移动链表指针到下一个结果,再进行判断是否符合条件,如果仍大于,则仍q 保留链表p 的位置。因此,此处应填p。第三处:当找到结点位置后,就要插入这个数,完成插入过程。由于函数体中分配了结构指针s,s 的 next指针已经指向了 p,所以,当前位置q 的 next指针就应该指向指针s 完成链表的链接。因此
43、,此处应填s。*给定程序M0DI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:2 5 2,则输出应该是:20。若输入:2 0 2,则输出应该是:0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:include long fun(long num)/*found*/long k;do k*=num%10;/*found*/num=10;while(num);return(k);main()long n;printf(nPlease enter a number:);scanf(%ld,&n)
44、;printf(n%ldnzfun(n);解题思路:第一处:由于在k定义时没有赋初值,所 以k是一个随机数,根据试题要求,k应赋值为lo第二处:整除的符号是/。*请编写一个函数fu n,它的功能是:计 算n门课程的平均分,计算结果作为函数值返回。例如:注意:若 有5门课程的成绩是:90,5,72,80,61.5,55则函数的值为:71.80。部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include float fun(float*a,int n)main()float score30=90.5z
45、 72,80,61.5,55,aver;void NONO();aver=fun(score,5);printf(HnAverage score is:%5.2fnz aver);NONO();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fpz*wf;int i,j;float avec score5;fp=fopen(c:testin.dat,r);wf=fopen(c:testout.dat,w);for(i=0;i 10;i+)for(j=0;j 5;j+)fscanf(fp,fj,&scorej);aver=fun(score,5
46、);fprintf(wf,%5.2fnz aver);)fclose(fp);fclose(wf);参考答案:#include float fun(float*a,int n)(int i;float ave=0.0;for(i=0;in;i+)ave=ave+ai;ave=ave/n;return ave;)main()float score30=90.5,72,80,61.5,55,aver;aver=fun(score,5);printf(nAverage score is:%5.2fn,aver);NONO();NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件
47、。*/FILE*fp,*wf;int i,j;float aver;score5;fp=fopen(,c:testin.dat,rH);wf=fopenCciWtestWout.datVw);for(i=0;i 10;i+)for(j=0;j 5;j+)fscanf(fp,”f,”,&scorej);aver=fun(score,5);fprintf(wf,%5.2fn,aver);fclose(fp);fclose(wf);第 20套:给定程序中,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n 所指变量中。ss所指字符串数组中共有
48、M 个字符串,且串长 N。给定源程序:#include/include ftdefine M 5/define N 20/*found*/int fun(char(*ss)_1_,int*n)int i,k=0,len=0;for(i=0;i*n)/*found*/一 3 _;k=i;)return(k);main()char ssMN=shanghai,guangzhou,beijing;,tianjing;,cchongqing);int n,k,i;printf(HnThe original strings are:n);for(i=0;iM;i+)puts(ssi);k=fun(ss,
49、&n);printf(nThe length of longest string is:%dn/n);printf(nThe longest string is:%sn,ssk);解题思路:第一处:形参ss的定义,它是一个字符串数组的定义,其宽度为N,所以应填:N。第二处:取第一个字符串的长度赋值给变量*n,所以应填:len。第三处:每循环一次,判断当前字符串的长度是否大于*n,如果大于,则*n=len。*给定程序M0DI1.C中 fu n 函数的功能是:根据形参m,计算如卜.公式的值。111 1t=1+2 3 4 m例如,若 输 入 5,则应输出2.283333。给定源程序:#include
50、 double fun(int m)(double t=1.0;int i;for(i=2;i=m;i+)/*found*7t+=1.0/k;/*found*/main()(int m;printf(nPlease enter 1 integer number:);scanf(&m);printf(nThe result is%lfn/fun(m);解题思路:第一处:在此变量k 没有定义过,再根据公式和for循环语句中所用的变量可知,这里的 k 实际上是io第二处:应是返回公式的值,函数中公式的值是存放在临时变量t 中,所以应填returnt;。*编写一个函数,该函数可以统计一个长度为2 的字