求给定精度的简单交错序列部分和

weixin_35429409 2016-11-08 06:41:16
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。

输入格式:

输入在一行中给出一个正实数eps。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例1:

4E-2
输出样例1:

sum = 0.854457
输入样例2:

0.02
输出样例2:

sum = 0.826310


我的代码#include <stdio.h>
#include <math.h>
int main(void){
int i=1;
double eps;
double j=1.0,k,s=0.0;
scanf("%lf",&eps);
do{
k=i/j;
if (fabs(k)<eps)
break;
i=-i;
j+=3;
s+=k;
}while(fabs(k)>=eps);
printf("sum = %.6lf\n",s);
return 0;
}
测试点错了
...全文
4275 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmbrmb 2019-01-03
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
double a,b,d,sum=0;
int i,c=1;
scanf("%lf",&a);
for(i=1;c!=0;i=i+3)
{
b=1.000/i;
if(i%2!=0)
sum=sum+b;
else
sum=sum-b;
if(b<=a)
c=0;
}
printf("sum = %lf",sum);
return 0;
}
爱小嘤嘤 2018-12-27
  • 打赏
  • 举报
回复
看一下while的循环条件,应该是while(fabs(k)>eps)
有杕之杜 2017-11-02
  • 打赏
  • 举报
回复
首先“ }while(fabs(k)>=eps);”改成“ }while(fabs(k)>eps);”,满足题目中不大于的条件; 其次将 if (fabs(k)<eps) break; 改成 if (fabs(k)<eps) { s=1.0; break; } 这样是保证当输入esp的值大于1时,输出的值为1.
paschen 2016-11-09
  • 打赏
  • 举报
回复
题目中说不大于, 这里改成 }while(fabs(k)>eps); 看下是否可以
赵4老师 2016-11-09
  • 打赏
  • 举报
回复
printf("sum = %.15lg\n",s); ?
实验7 循环结构程序的设计(二) 程序填空,不要改变与输入输出有关的语句。 1. 1-1/2+1/3-1/4+…… 输入一个正整数repeat (0求1-1/3+1/5-1/7+…… 输入一个正整数repeat (0求每一项的绝对值均大于等于eps,并以float类型输出数据)。 例:括号是说明 输入 2 (repeat=2) 1E-4 0.1 输出 0.7853 0.8349 import java.util.Scanner; public class Test40006 { public static void main(String[] args) { int ri, repeat; int temp, flag; double eps, item, sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ eps=in.nextDouble(); /*--------------------*/ item=1; sum=0; temp=flag=1; while(Math.abs(item)>=eps){ sum+=item; flag=-flag; temp+=2; item=flag*1.0/temp; } System.out.println((int)(sum*10000+0.5)/10000.); } } } 3. 2/1+3/2+5/3+8/5+... 输入一个正整数repeat (0序列从第2项起, 每一项的分子是前一项分子与分母的和,分母是前一项的分子) 例:括号是说明 输入 3 (repeat=3) 1 5 20 输出 2.0 (第1项是2.0) 8.3917 (前5项的和是8.3917) 32.6603 (前20项的和是32.6603) import java.util.Scanner; public class Test40011 { public static void main(String[] args) { int ri, repeat; int i,n; float a,b,s,t; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ a=1; //分母 b=2; //分子 s=0; for(i=1;i<=n;i++) { s+=b/a; t=a; a=b; //分母是前一项的分子 b=t+b; //分子是前一项分子与分母的和 } System.out.println((int)(s*10000+.5)/10000.); } } } 4. a+aa+aaa+aa…a 输入一个正整数repeat (0求a+aa+aaa+aa…a(n个a)之和。

70,023

社区成员

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

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