目录
题干
题目描述
输入一个正整数 repeat (0
输入
见sample
输出
见sample
样例输入
1
1E-4
样例输出
0.785348
源代码
#include<stdio.h>
int main()
{
int repeat;
scanf("%d",&repeat);
while(repeat--)
{
double eps; //定义一个双精度浮点型变量
scanf("%lf",&eps); //输入
double now=1.0,ans=0; //初始化
int i=1,j=0; //初始化too
while(now>=eps) //如果eps比now大,输出会有问题
{
if(j%2==0) //这个if else是来判断分数前面的符号的奇数为正,偶数为负
ans=ans+now;
else
ans=ans-now;
i=i+2; //这种运算方式叫自加
j=j+1;
now=1.0/i; //因为i是整型变量,而1除任何一个整数都是零,所以在分子处用1.0,
// 1.0是浮点数,整个分数就也为浮点数
}
printf("%.6f\n",ans); //保留六位小数并输出
}
return 0;
}
//ENDING
解题思路
终于有一道还算复杂的题了(虽然也还好)
自加有两种写法
i=i+2;
和
i+=2;
这两种是一样的
当然还有一种特殊的
i++; //这是 i=i+1 的意思
当然还有自减,自乘 等等
这里顺便提一下
i++;
与
++i;
的区别
它们的区别就在于是先调用变量 i ,还是先自加
#include<stdio.h>
int main()
{
int i=0;
printf("%d ",i++);
printf("%d",++i);
}
这样输出 2 0 ,而
#include<stdio.h>
int main()
{
int i=0;
printf("%d ",++i);
printf("%d",i++);
}
这样输出 1 1 。
不知道你明白了没有
希望你喜欢这道题目还有我的解题思路!!!
如有问题请留言,谢谢!!!