c语言求助,为什么算不到正确答案,单步运行时发现t的值总是0,大神能告诉我怎么改,原文字,运算结果如

#include<stdio.h>main(){ int i,sum,t; sum=0; for(i=1;i<=50;i=i+2) { t=1/i,sum=sum+t; } printf("1+1/2+1/4+……+1/50的和为:%d\n",sum);}
编译文字

#include <stdio.h>
//主要问题是  整形与浮点型之间转换精度丢失
int main(){ 
    int i;
    float sum=0.0, t=0.0; //这两个定义成浮点型,因为是要小数的
    sum=0; 
    for(i=1;i<=50;i=i+2) { 
        t=1.0/i; //原定义中t是int型,t=1/t 被取整为0
        sum=sum+t; //sum也是,因为是整形,加上小数会被取整
    } 
    printf("1+1/2+1/4+……+1/50的和为:%f\n",sum);//相应输出类型也要改
}

温馨提示:答案为网友推荐,仅供参考
相似回答