刚学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);}
自己先改下。
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