C语言计算1+1/2+1/3+……+1/100

#include<stdio.h>intmain(){inti;floatall=0;for(i=1;i<=100;i++){all=all+1/i;}printf("总... #include<stdio.h>
int main()
{ int i;
float all=0;
for(i=1;i<=100;i++)
{ all=all+1/i; }
printf("总合为%f",all);
return 0;
}
我这么写为什么得不到最终结果?
展开
 我来答
帐号已注销
2020-11-27 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:159万
展开全部

把1/i改成1.0f/i就有结果了——因为除了i=1时1/i==1以外,i>1时1/i就永远是0了,所以结果总是1。/在两边都是整数时是取整除,得不么小数部分的。

#include<stdio.h>

main()

{

int i;

float s=0;

for(i=1;i<=100;i++)

{

if(i%2==0)

s-=1/(float)i;

else

s+=1/(float)i;

}

printf("%f\n",s);

return 0;

}

扩展资料:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

参考资料来源:百度百科-c语言

White_MouseYBZ
2018-12-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6377万
展开全部
把1/i改成1.0f/i就有结果了——因为除了i=1时1/i==1以外,i>1时1/i就永远是0了,所以结果总是1。/在两边都是整数时是取整除,得不么小数部分的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自我编程
2018-12-20 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部
把1/i改成1.0/i
'/'是整除符号,整数除整数小数忽略。
想要精确值就要用浮点数除。
更多追问追答
追问
原先编译结果为1.000000,为什么不是5?(正确的编译结果是5.187378)
追答

。。。。。。只要把1/i改成1.0/i,答案不就是5.187378,我没说错啊。

#include<stdio.h>
int main()
{ int i;
    float all=0;
    for(i=1;i<=100;i++)
    { all=all+1.0/i; }
        printf("总合为%f",all);
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2021-10-31
展开全部

//c++语言

#include<bits/stdc++.h>

using namespace std;

int main()

{

int i;

float S=0;

for(i=1;i<=100;i++){

S=S+1.0/i;

}

cout<<fixed<<setprecision(3)<<S; 

return 0;

}

//如果i>1,那么1/i=1。只要把i改成小数就行了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叔伯老表
2017-01-06 · TA获得超过1256个赞
知道小有建树答主
回答量:698
采纳率:0%
帮助的人:250万
展开全部
#include<stdio.h>
main()
{
int i;
float s=0;
for(i=1;i<=100;i++)
{
if(i%2==0)
s-=1/(float)i;
else
s+=1/(float)i;
}
printf("%f\n",s);
return 0;
}

你再试试。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式