问答题
请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。 注意:要求n的值不大于100。 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include <stdio.h> double fun(int n) {} NONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE *rf, *wf; int n,i; double s; rf = fopen("in.dat","r"); wf = fopen("out.dat","w"); for(i = 0 ; i < 10 ; i++) {fscanf(rf, "%d", &n);s = fun(n);fprintf(wf, "%lf/n", s);}fclose(rf); fclose(wf);}main (){ int n; double s; printf("/nInput n: ");scanf("%d", &n) ; s=fun(n);printf("/n/ns=%f/n",s); NONO();}
【正确答案】正确答案:int i; double sum=0.0; for(i=1; i<=n; i++) if(i%5==0 ‖ i%9==0)/* 被5或9整除 */ sum+=1.0/i; return sum;
【答案解析】解析:程序功能是计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 (1)首先,通过循环,判断小于等于n的每一个整数是否符合题干中的要求。其中的判断条件能否被5或者被9整除为:i%5==0‖i%9=0。 (2)然后求得符合(1)要求的数的倒数的累加和。