老冲怪 @ 2020-01-21 15:05:41
先上代码
#include <stdio.h>
int main(){
double k;//输入的k值
scanf("%lf",&k);
double n=0;//输出
double sn=0;
for(n=0;sn<=k;){
n+=1;
sn=sn+1.0/n;
}
printf("%f",n);
return 0;
}
首先,在for循环中第二个分号后用n++和++n之后通过调试n都没有变化,导致sn的值都为inf。不知道什么原因。再者是提交之后为0分。不知道什么原因。
by ztxtjz @ 2020-01-21 15:08:45
把n改为int
by ztxtjz @ 2020-01-21 15:11:44
#include <stdio.h>
int main(){
double k;
scanf("%lf",&k);
int n;
double sn=0;
for(n=0;sn<=k;){
n++;
sn=sn+1.0/n;
}
printf("%d",n);
return 0;
}
可AC
by 老冲怪 @ 2020-01-21 15:45:04
@ztxtjz 我改了以后确实可以,但是我有两个疑问。
1,为什么我把n++改到for的括号内只会输出1呢?我输入任何一个数都会输出1.
2,为什么n用double定义就不行呢?
by ztxtjz @ 2020-01-21 22:28:36
@老冲怪 因为你第一次时候n=0,1/0有问题。第二个问题我也不是很了解