结论: 1、加一个数到double 类型的值里面,1/n,麻烦改成1.0!!!! 2、作用域,在循环内定义的数据类型,只在循环内输出,想循环结束输出该值的话,要定义在循环外
上题:1035 题目不难,但是是暴力循环求解 1+1/2+1/3+…+1/n 可以数列错位相减求和(不过还没试)
#include<bits/stdc++.h>
using namespace std;
int main(){
int k,i=0;
cin>>k;
for (double sn;sn<=k;i++,sn+=1.0/i);
cout << i;
return 0;
}
不难 但好奇为什么 不是1.0/i,会超时,就想输出sn看看,然后 输不出来!!就很气,代码没问题吧!心慌慌! 求助了大佬,告诉了作用域,
#include<bits/stdc++.h>
using namespace std;
int main(){
int k,i=0;
cin>>k;
double sn=0;
for ( sn;sn<=k;i++,sn+=1.0/i);
cout << sn <<endl;
cout << i ;
return 0;
}
就可以啦~ 然后改成 1/i就运行不出来了 这个可以解释 就是 1 i 都是整数(int) 所以,计算出来的数也是整数,即0! .5被舍掉了,so 不可能有结果
ok 小白学习今天就到这了!
|