y有人帮我看看错误的原因吗(语言-c语言)

编写函数求以下数列前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);
}

```

有两个明显的错误:

  1. 在scanf函数中,应该传入变量t的地址,而不是t本身。因此,修正后的代码如下所示:

    scanf("%d", &t);
    
  2. 在计算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