为什么没有输出啊,什么都没显示

img


#include<stdio.h>
int main()
{
    int n,i;
    float sum;
    scanf("%d",&n);
    for(sum=0,i=0;i<=n;i++)
        sum+=1/(i*(i+1));
    printf("%.2f",sum);
    return 0;
 } 

img

已经改好了

  • 看题目,n从1开始而不是0
  • for循环里面如果不改的话,那个地方始终小于0,而且全是整型运算,结果会向下取整(比如1/(1+2)它小于1,向下取整就是0),因而每次得到的都是0
  • 最后建议把sum改成double类型,float容易溢出,虽然本题数据量小并不会
#include<stdio.h>
int main()
{
    int n,i;
    float sum;
    scanf("%d",&n);
    for(sum=0,i=1;i<=n;i++)   //看题目,n从1开始
        sum+=1.0/(i*(i+1));   //浮点数
    printf("%.2f",sum);
    return 0;
 } 

第九行改成

sum+=1.0/(i*(i+1));
  1. sum推荐使用double类型,以后少使用float防止溢出(这题不会,数很小)
  2. i应该从1开始(而不是i=0)
  3. 因为i已经设置为int整数型,1/(i*(i+1))这个表达式都是整数,运算后会向下去整(例如:1/(1*2) 大于0小于1,所以值为0而不是0.5,将1换成浮点型1.0或者将i换成double或者float)

i = 0时,分母为0,直接报错退出了吧

sum+=1/(i*(i+1));
第一次循环(i*(i+1))的值是0,不能把0作为除数,会报错