//求一种数列的和
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
double n,m;
while(scanf("%lf%lf",&n,&m) !=EOF)
{
int i=0;
double s=0;
while(i<m){
s+=n;
n=sqrt(n);
i+=1;
}
printf("%.2lf\n",s);
}
return 0;
}
调试报告:
1.一开始输入没有输出,立马反应是不是忘记了 & ,果不其然,忘了。。
2.一开始将 s 定义为整型,当然是浮点型啦
3.一开始将 n , m 按照题目要求设置成整型,但发现输出都是带两位小数 .00 的’整数‘,意识到应该是内层 while 循环的 n 的类型问题,故用精度更高的双精度(可以姑且理解为实数)
4.竟然将保留两位小数错写成 %2.lf ,基础知识还不够牢固!应为 %.2lf
也应该有人想到了下标实现:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int m;
double s,n,a[10010];
while(scanf("%lf%d",&n,&m)!=EOF){
s=0;
for(int i=1;i<=m;i++){
a[i]=n;
s=s+a[i];
n=sqrt(n);
}
printf("%.2lf\n",s);
}
return 0;
}
本质上都是将 n 的值一边变化一边加到 s 上,从而满足题目要求
和ZDZ一起加油吧!
少壮不努力,
老大徒伤悲!
哦耶!