问一下这个程序算出来的s为什么老是1
#include
int main(void)
{
int k ;
double s;
k=1;
s=0;
do {s=s+1/k;k++;}
while (k<=10) ;
printf("s=%0.2lf\n",s);
return 0;
}
因为s是double 1/k结果是int类型,只有1/1的时候结果是1,其他情况结果都是0,需要转成double 比如 1.0/k
你那里s=s+1/k 会先算1/k 而k是整形 1也是整形 两个整形相除会执行整形除法 要得到小数位要写成
s=s+1.0/k就可以了