编写函数求以下数列前n项的和
1/2+3/4+5/6……
'代码'
#include<stdio.h>
int main()
{
int t;
scanf("%d",t);
int a=2;
int b=1;
float sum=1/2;
int i;
float s;
for(i=1;i<t;i++)
{
a+=2;
b+=2;
s=b/a;
sum+=s;
}
printf("%f",sum);
}
```
有两个明显的错误:
在scanf函数中,应该传入变量t的地址,而不是t本身。因此,修正后的代码如下所示:
scanf("%d", &t);
在计算sum的初值时,使用了1/2这样的表达式,这是整数除法,结果为0。因此,修正后的代码如下所示:
sum = 0.5;
经过上述修改,完整的程序如下所示:
#include<stdio.h>
int main()
{
int t;
scanf("%d", &t);
int a=2;
int b=1;
float sum=0.5; // 修改初值
int i;
float s;
for (i = 1; i < t; i++) {
a += 2;
b += 2;
s = (float)b / a; // 修改为浮点数除法
sum += s;
}
printf("%f", sum);
return 0;
}
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
a和b都是int型,你做的是int型的除法,所以小数部分不见了
改为s=b*1.0/a