求问关于c++里的while

#include
#include
int main()
{
int i,sum,x;
i=1;
sum=0;
while(i>=1/100000)
{
sum=i+sum;
i=1/i+1;
printf("%d\n",i);
}
x=sum-double log10(double 100000);
printf("%d\n",x);
return 0;
}
为什么总是错?

第一,你没包含头文件吧;
第二,你的while()是个死循环

while(i>=1/100000)
这不死循环呀? 1/100000是0,i肯定大于0呀

不知道你要做什么,但是你的变量,比如x sum i似乎都应该定义成double
另外强制类型转换少了括号。

http://codepad.org/4Zap5ozh
这是一个可以编译的版本

 #include <stdio.h>
#include <math.h>
int main()
{
    double i,sum,x;
    i=1;
    sum=0;
    while(i>=1/100000)
    {
        sum=i+sum;
        i=1/i+1;
        printf("%f\n",i);
    }
    x=sum-(double)log10((double)100000);
    printf("%f\n",x);
    return 0;
}

你的程序太多的错误了,不知道你要干什么。你程序的变量全部定义为整型的,你后面的运算结果又几乎全部是浮点 型的,while循环里面,i=i/1+1会永远
大于1/100000,循序就跳不出去,系统进行或者强制的进行类型转换,会造成数据精度的丧失
还有就是X = SUM -DOUBLE LOG10(DOUBLE 100000)这句,如果你要进行强制的类型转换,应该这样写(type)var

循环语句成分
while(一个约束条件)
do{一项操作};
或者
do{一项操作}
while(满足一项条件)
前者是先判断如果条件成立,再执行操作。
后者是先执行操作,当满足条件时停止。

我写了一个while循环,
double i=1.0;(注意这里i不能定义为Int型,如果定义成int型,到计算1/i的时候,系统只会取其整整部分,结果会是零,你的结果最终会是1)
double sum=0.0;
while(i<1000000)
{
sum = sum + 1/i;
i++;
}
其余的你自己写吧

定义的变量是整形,而你运算时都把它当成浮点数数运算了。

i=1/i+i好像会导致你的程序死循环。

1)编译错误请给出编译报错结果便于分析
2)代码中出现死循环,i的值重复为1和2,循环条件有问题
3)x=sum-double log10(double 100000);// 这句贴错了么?这种语句肯定是有问题的

#include
int main()
{
int i = 1;
double sum = 0;
while(i <= 100000)
{
sum += 1/(double)(i++);
}
sum -= ::logf(100000); // logf表示自然取底
}
这个是按照x=1+1/2+1/3+1/4+......+1/100000-ln100000的代码,本地测试是可以的。你可以试试(用的是VS2010编译器)

类型错误了,i=1/i+i这样写,i的值会等于1