麻烦帮我看看我的代码为什么是错的,应该怎么修改?谢

实验4-1-6 求分数序列前N项和

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子.结果保留两位小数。

#include<stdio.h>
int main()
{
    int n,i;
    double a,b,x=1,y=2,sum=0;
    
    scanf("%d",&n);
    if(n==1){printf("0.50");}
    else{a=x;
         b=y;
    for(i=1;i<n;i++){
        
        b=a+b;
        a=b-a;
        sum+=1.0*b/a;
    }
    sum=sum+1.0/2;
    printf("%.2f",sum);}
    
    return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

你写反啦。

计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。

if(n==1){printf("0.50");}

#include<stdio.h>
int main()
{
    int n,i;
    double a=1.0,b=2.0,sum=0;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        sum+=b/a;
        //你可以输出下每一项的结果
        printf("%.1f/%.1f = %.3f\n",b,a,b/a);
        b=a+b;
        a=b-a;
    }
    printf("%.2f",sum);
    return 0;
}

你这代码有点问题,我发个代码给你看看。直接运行就可以了。

#include "stdio.h"
void main()
{
	/*
	
	数列前20项的和
		2/1,3/2,5/3,8/5,13/8,21/13....
		
		a=1,b=2;
		a1=2,b1=3;
		
		a=a+a1=3;
		b=b+b1=5;
		
		--------------------------
		a1=2,b1=3;
		a =3,b =5;
		---------
		a跟a1交换
		b跟b1交换
		a=2,b=3;
		a1=3,b1=5;
		
		
	*/
    int i;
    double a,a1,b,b1,a2,b2,sum=0;
    //b/a,b1/a1
    a=1,b=2;    //第一项:2/1   a=1,b=2;
    a1=2;b1=3;  //第二项:3/2   a=2,b=3;
      
    	        //第三项:5/3   a1=3,b1=5;
    	        //第四项:8/5   a =5, b=8
    sum = b/a+b1/a1;//前2项的值
    //从第3项开始计算
    for(i=2;i<20;i++)
    {
    	a=a+a1;   //3
    	b=b+b1;   //5
    	sum+= b/a;
    	printf("%0.0lf/%0.0lf+",b,a);
    	a2=a; //a2是临时变量
    	a=a1;
    	a1=a2;

    	b2=b; //b2是临时变量
    	b=b1;
    	b1=b2;
    }
  	printf("=%0.2lf",sum);  
    
}

 

请采纳,谢谢!