杭电acm2011题C语言问题,求大神解答!!
想求1-1/2+1/3-1/4+1/5-1/6+...的合,但输出的结果怎么都不对啊,不知道哪里错了,求大神解答!!#include"stdio.h"#include"m...
想求1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...的合,但输出的结果怎么都不对啊,不知道哪里错了,求大神解答!!
#include "stdio.h"
#include "math.h"
int main()
{
int m,n;
double sum;
double x,z;
while (scanf("%d",&m)!=EOF) {
x=-1;
sum=0;
while (m>0) {
scanf("%d",&n);
while (n) {
z=pow(x,n-1);
sum+=z*(1/n--);
x=-1;
}
printf("%.2lf\n",sum);
m-=1;
}
}
return 0;
}
我知道问题出在哪了,sum+=z*(1/n--);应该改成sum+=z*(1.0/n--);
但是为什么提交杭电acm2011题还是显示wrong answer? 展开
#include "stdio.h"
#include "math.h"
int main()
{
int m,n;
double sum;
double x,z;
while (scanf("%d",&m)!=EOF) {
x=-1;
sum=0;
while (m>0) {
scanf("%d",&n);
while (n) {
z=pow(x,n-1);
sum+=z*(1/n--);
x=-1;
}
printf("%.2lf\n",sum);
m-=1;
}
}
return 0;
}
我知道问题出在哪了,sum+=z*(1/n--);应该改成sum+=z*(1.0/n--);
但是为什么提交杭电acm2011题还是显示wrong answer? 展开
1个回答
展开全部
你试试你n = 1是多少,其实这题没这么复杂
这么写就成
#include<stdio.h>
int main()
{
int T,i,a;
scanf("%d",&T);
while(T--)
{
scanf("%d",&a);
double sum=1.000;
for(i=2;i<=a;i++)
{
if(i%2==1) sum+=1.000/double(i);
else sum-=1.000/double(i);
}
printf("%.2lf\n",sum);
}
return 0;
}
华芯测试
2024-09-01 广告
2024-09-01 广告
深圳市华芯测试科技有限公司是一家专业从事半导体晶圆检测设备的企业,公司集制造、研发、销售和服务于一体,不仅拥有专业的生产设备、精湛的加工工艺及品质检测体系,具有经验丰富的设计与研发团队及完善的售后服务团队,并集成相关测试仪器、仪表,提供半导...
点击进入详情页
本回答由华芯测试提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询