填空题

下列给定程序中,函数fun()的功能是:求出以下分数序列的前n项之和。
2/1,3/2,5/3,8/5,13/8,21/13,……
和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <conio.h>
#include <stdio.h>
/*************found**************/
fun (int n)
int a=2,b=l,c, k;
double s=0.0;
for(k=l;k<=n;k++)
s=s+l.0*a/b;
/*************found**************/
c=a; a+=b; b+=c;

return (s);

main ()
int n=5;
clrscr ();
printf("\nThe value of function is:
%1f\n", fun (n));

【参考答案】

错误:fun(int n) 正确:double fun(int n)
(2)错误:c=a;a+=b;;b+=c;......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #define N 16 typedef struct char num[10]; int s ; STREC; int fun (STREC *a, STREC *b, int 1, int h ) main () STREC s [N] = GA005 , 85 , GA003 , 76 , GA002 , 69, GA004 , 85, GA001 , 96 , GA007 , 72, GA008 , 64, GA006 , 87 , GA015 , 85, GA013 , 94, GA012 , 64 , GA014 , 91, GA011 , 90, GA017 , 64 , GA018 , 64 , GA016 , 72 ; STREC h [N], tt; FILE *out; int i, j, n, low, heigh, t; printf( Enter 2 integer number low & heigh: ); scanf ( %d%d , &low, &heigh); if (heigh<low) t=heigh;heigh=low; low=t; n=fun (s,h, low, heigh); printf ( The student’s data between %d--%d: n , low, heigh); for (i=0; i<n; i++) printf( %s %4d n ,h[i] .num, h[i].s); *输出指定分数范围内的学生记录* printf( n ); out=fopen ( out74.dat , w ) fprintf(out, %d n ,n)- n=fun (s,h, 80, 98); for (i=0; i<n-1; i++) * 分数在80~98之间的学生记录按他数从低到高排序* for (j=i+l; j<n; j++) if (h[i] .s>h [j] .s) tt=h [i] ;h [ii =h [j] ;h [j] =tt; for (i=0; i<n; i++) fprintf(out, %4d n ,h[i] .s);fprintf(out, n );fclose (out);