weiker @ 2023-03-05 20:05:09
#include<stdio.h>
double JiShu(double x)
{
double S = 1;
int i = 1;
/*if (x == 1)
{
return 2;
}*/
while(i <= x)
{
S = S + (1.00 / i);
i++;
}
return S;
}
int main(void)
{
double n;
scanf_s("%lf",&n);
if (JiShu(n) > n)
{
printf("%0.4lf\n", JiShu(n));
}
else
{
printf("不成立\n");
}
return 0;
}
by zhaohanwen @ 2023-03-05 20:16:59
scanf_s("%lf",&n);
换成scanf("%lf",&n);
by zhaohanwen @ 2023-03-05 20:17:43
但是你这个代码有问题
by zhaohanwen @ 2023-03-05 20:18:14
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k,g=1;
double n=0.0;
cin>>k;
while(1)
{
n+=1.0/g;
if(n>k)
{
break;
}
g++;
}
cout<<g<<endl;
return 0;
}
by QCM4902 @ 2023-03-05 20:42:46
可能错就错在
while(i <= x)//就是这个判定
{
S = S + (1.00 / i);
i++;
}
这里。
这儿的判定条件应当是S<=x
个人想法:不需要定义函数,直接写一个循环。
#include <stdio.h>
int main()
{
double s=0.0,i=1.0;
int k,n;
scanf("%d",&k);
for(i=1;i<=0x7FFFFFFF;i++)
{
s+=1/i;
n++;
if(s>k)
{
printf("%d",n);
return 0;
}
}//精简的判定过程
}
(有可能是错的)