问题 填空题

下列给定程序中,函数fun()的功能是:传入一个整数m,计算如下公式的值。 t=1/2-1/3-…-1/m 例如,若输入5,则应输出-0.283333。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <conio.h> #include <stdio.h> double fun(int m) { double t=l.0; int i; for (i=2; i<=m; i++) /*************found**************/ t=l.0-1/i; /*************found**************/ } main ( ) {int m; clrscr (); printf ("\nPlease enter 1 integer numbers : In"); scanf ("%d", &m); printf("\n\nThe result is %lfln", fun (m)); }

答案

参考答案:错误:t=1.0-1/i; 正确:t-=1.0/i;

解析:(2)错误: ; 正确:return t; 解答类似题目的思路是我们依然先从数学思路着手,即理解数学上的规律,再分析C语言的流程,本题中分母依等差数列递增,最好用循环语句解决。我们先从第1句1/2的表达式来看起:当i从2(必须从2开始)开始循环的时候,虽然 t=1.0-1/i;和t-=1.0/i;的第1个值都是相同的,但随着循环的累加,我们就能发现问题所在了!

选择题
选择题