/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:根据整型形参m,计算如下公式的值: y=1+1/3+1/5+1/7+...+1/(2m-3) ------------------------------------------------------*/ #include <stdio.h> double fun(int m) { /**********FOUND**********/ double y=1; int i; /**********FOUND**********/ for(i=0; i<=m; i++) /**********FOUND**********/ y+=1.0/(2*i-3); return(y); } void main() { int n; printf("Enter n: "); scanf("%d", &n); printf("\nThe result is %1f\n", fun(n)); }
时间: 2023-07-05 20:35:31 浏览: 107
这段代码中存在以下问题:
1. 在 for 循环中,i 的初始值应该为 1,而不是 0,因为公式中分母的值从 1 开始。
2. 在 for 循环中,循环条件应该是 i<=2*m-1,而不是 i<=m,因为公式中分母的值为 2i-1,当 i=m 时分母应为 2m-1,而不是 2m-3。
3. 在 printf 函数中,格式控制符应为 %f,而不是 %1f。
修改后的代码如下:
```c
#include <stdio.h>
double fun(int m)
{
double y = 1;
int i;
for(i = 1; i <= 2 * m - 1; i++)
y += 1.0 / (2 * i - 1);
return y;
}
void main()
{
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %f\n", fun(n));
}
```
阅读全文