c++ - 错误是什么?Q-确定并打印给定 n 值的以下谐波级数之和。(1+1/2+1/3+........+1/n)

标签 c++ c loops c++11 for-loop

void main()  
{  
    int n,i;  
    printf("enter number");  
    scanf("%d",&n);  
    float s=0;  
    for(i=1;i<=n;i++)  
    {  
        s=s+(1/i);  
    }  
    printf("sum is %f",s);  
}  

我得到的输出为 1.00。为什么?

最佳答案

试试这个......

void main()  
{  
    int n,i;  
    printf("enter number");  
    scanf("%d",&n);  
    float s=0;  
    for(i=1;i<=n;i++)  
    {  
        s=s+(1.0/i);  
    }  
    printf("sum is %f",s);  
} 

如果有 int/float 则预期结果将为 int。如果你想要精确的浮点结果,那么你必须使 float/float

关于c++ - 错误是什么?Q-确定并打印给定 n 值的以下谐波级数之和。(1+1/2+1/3+........+1/n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53777778/

相关文章:

C编译器可以在运行时消除这个条件测试吗?

int 的 C 命令行参数

php - 从数组中的所有元素中删除不需要的字符

C++0x const RValue 引用作为函数参数

c++ - 如何创建脚本语言

C 语言 - 无法将 SIGINT 重置为默认值

javascript - 在 foreach 循环内调用 javascript 函数,等待回复?

C++ boost 线程 ID 和单例

c++ - 在 OO 设计中避免 RTTI

方法中的 Java 循环要求额外的 return 语句