c语言程序分析与设计计算数列和

img


编写程序,计算下列数列前n项和,各位帮帮忙谢谢,

img


已编内容如下,不知道问题出在哪了

你的输入中间是逗号分隔,可是你的程序scanf是空格分隔,不匹配

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7611800
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:c语言中,对于给定的一个十进制数n,求出它是几位数并求它的各个位的数值,顺序输出和逆序输出
  • 除此之外, 这篇博客: C语言求分数序列前N项和中的 求分数序列前N项和 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

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

    输入格式: 输入在一行中给出一个正整数N。

    输出格式: 在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

    输入样例: 20 输出样例:
    32.66

    #include "stdio.h"
    void beam()
    {
    	int i,N,a;
    	double sum=0,m=2.0,n=1.0;
    	scanf("%d",&N);
    	for(i=0;i<N;i++)
    	{
    		sum+=m/n;
    		a=m;//用a存储前一项的分子 
    		m+=n;
    		n=a;//将前一项的分子赋给后一项的分母 
    	}
    	printf("%.2f\n",sum);
     } 
     int main()
     {
     	beam();
     	return 0; 
     }
    

    运行结果如下图:
    在这里插入图片描述

  • 您还可以看一下 朱有鹏老师的指针才是C的精髓-4.3.C语言专题第3部分课程中的 4.3.7.指针与强制类型转换小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    该程序计算的是数列1/12 + 2/34 + 3/5*6 + ... + n/(2n-1)(2n),代码设计上没有明显的问题。

    我们可以对照程序和题目,一步步检查答案是否正确,首先检查输入是否有误,如果输入的n小于等于0,程序会输出“输入错误!”,可以确认输入有误的情况已经得到处理。

    进入循环之前,sum被初始化为0,如果n=1,则只计算一个数列项:1/12,结果为0.5。如果n=2,则计算两个数列项:1/12 + 2/3*4,结果为0.8333。分别手算一下,验证结果正确。

    接下来将程序改为函数形式,便于以后调用。代码如下:

    #include<stdio.h>
    
    float CalcSeriesSum(int n)
    {
        int i=1, j=1;
        float sum=0;
    
        if(n<=0)
        {
            printf("输入错误!\n");
            return 0;
        }
    
        while(i<=n)
        {
            sum+=((float)i)/(j*(j+1));
            i++;
            j+=2;
        }
        return sum;
    }
    
    int main()
    {
        int n;
        float sum;
        printf("请输入数列项数n: ");
        scanf("%d", &n);
    
        sum = CalcSeriesSum(n);
        printf("数列前%d项和为: %.2f\n", n, sum);
    
        return 0;
    }
    

    这个函数应该是完全正确的,可以放心使用。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^