HDOJ2011水题不知道错在哪里

qq_23908539 2014-12-29 04:41:31

多项式求和
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 47564 Accepted Submission(s): 27678


Problem Description
多项式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
现在请你求出该多项式的前n项的和。


Input
输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。


Output
对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。


Sample Input
2
1 2


Sample Output
1.00
0.50

#include <stdio.h>
int main()
{
double sum_odd,sum_even,sum;
int i,m,n;
scanf("%d",&m);
while(m--)
{
sum_odd=0;
sum_even=0;
sum=0;
scanf("%d",&n);
if(n==1)printf("1.00\n");//如果输入的n为1
else if(n%2!=0)//如果n不为1且n为奇数
{
for(i=1;i<=n;i=i+2)
{
sum_odd+=1/i;
}
for(i=2;i<=n-1;i=i+2)
{
sum_even+=1/i;
}
sum=sum_odd-sum_even;
printf("%.2lf\n",sum);//用奇数和减去偶数和
}
else //如果n不为1且n为偶数
{
for(i=1;i<=n-1;i=i+2)
{
sum_odd+=1/i;
}
for(i=2;i<=n;i=i+2)
{
sum_even+=1/i;
}
sum=sum_odd-sum_even;
printf("%.2lf\n",sum);//用奇数和减去偶数和
}
}
return 0;
}
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FightForProgrammer 2014-12-30
  • 打赏
  • 举报
回复

1.0/i
野男孩 2014-12-29
  • 打赏
  • 举报
回复
恩,楼上正解,注意类型,int / int 结果还是int,至少有一个操作数要转换成double,比如1改成1.0
mxway 2014-12-29
  • 打赏
  • 举报
回复
程序中1/i,由于i是整形,当i大于1时。所有的1/i结果都是0,也就得不到你想要的结果。
LuckyBug 2014-12-29
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
    double sum_odd,sum_even,sum;
    int i,m,n;
    scanf("%d",&m);
    while(m--)
    {
        sum_odd=0;
        sum_even=0;
        sum=0;
        scanf("%d",&n);
        if(n==1)printf("1.00\n");//Èç¹ûÊäÈëµÄnΪ1
        else if(n%2!=0)//Èç¹ûn²»Îª1ÇÒnΪÆæÊý
        {
            for(i=1;i<=n;i=i+2)
            {
                sum_odd+=1.0/i;//这里用1.0/i,浮点数除法
            }
            for(i=2;i<=n-1;i=i+2)
            {
                sum_even+=1.0/i;
            }
            sum=sum_odd-sum_even;
            printf("%.2lf\n",sum);//ÓÃÆæÊýºÍ¼õȥżÊýºÍ
        }
        else //Èç¹ûn²»Îª1ÇÒnΪżÊý
        {
            for(i=1;i<=n-1;i=i+2)
            {
                sum_odd+=1.0/i;
            }
            for(i=2;i<=n;i=i+2)
            {
                sum_even+=1.0/i;
            }
            sum=sum_odd-sum_even;
            printf("%.2lf\n",sum);//ÓÃÆæÊýºÍ¼õȥżÊýºÍ
        }
    }
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧