C语言计算1+1/2+1/3+……+1/100
int main()
{ int i;
float all=0;
for(i=1;i<=100;i++)
{ all=all+1/i; }
printf("总合为%f",all);
return 0;
}
我这么写为什么得不到最终结果? 展开
把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语言
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改成小数就行了。
#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;
}
你再试试。