刚学C语言,昨天做了一道题,不知道错在哪? 谁能帮我看下,非常感谢了。

来源:百度知道 编辑:UC知道 时间:2024/06/30 19:57:56
#include"stdio.h"
main()
{int n=0;
float s=0;
while(s<8)
{n++;
s=s+1/n;};
if(2*s>16+1/n)
{s=s-1/n;
printf("%f,%d",s,n);}
else printf("%f,%d",s,n);
}
上面是我编的。是为了求s=1+1/2+1/3...+1/n;输出s最接近8时候的n,s值
if(2*s>16+1/n)
{s=s-1/n;
n--;
printf("%f,%d",s,n);}
自己先改下。

while(s<8)
{n++;
s=s+1/n;};

改为

while(s<8)
{n++;
s=s+1.0/n;}//如果写成1/n,由于n是整型值,所以当n>1时,1/n将恒等于0从而使程序掉入死循环。

#include "stdio.h"
main()
{
int n=1;
float s=0;s1;
{while(s<8)
s=s+1.0/n;
n++
}
s1=s-1.0/n-1
if((8-s1)>(s-8))
cout<<s

}

#include"stdio.h"
main()
{
int n=1;
float s=0;
while(s<8.0) s+=1.0/n++;
printf("%f\t%d\n",s,n);
s-=1.0/--n;
printf("%f\t%d\n",s,n);
getch();
}

输出:
8.000487 1675
7.999890 1674

搞不懂你的if语句是什么意思,似乎根本就与题目不搭尬!

while循环大括号外面多了个分号

if(2*s>16+1/n) 这句话可能有问题
编译器会判断2*s>16是否成立
再做+1/n