永发信息网

C语言之编求级数第n项的函数

答案:3  悬赏:50  手机版
解决时间 2021-03-05 13:04
  • 提问者网友:刺鸟
  • 2021-03-04 14:38
题目描述
用函数的方法编写一个求级数前n项和的程序:S=1+(1+3)+(1+3+5)+…+(1+3+5+…+ (2n-1))。
输入
每行输入一个正整数n(1<=n<=1000),n为0则结束输入。
输出
与输入相对应,逐行输出对应的求和结果S。S=1+(1+3)+(1+3+5)+…+(1+3+5+…+ (2n-1))。
最佳答案
  • 五星知识达人网友:纵马山川剑自提
  • 2021-03-04 16:16
1+3+5+...+(2n-1) = n(1+2n-1)/2 = n^2
1^2+2^2+3^2+n^2 = n(n+1)(2n+1)/6


所以编程实现的话如下:
#include "stdio.h"

int main ()
{
int n,ret;
printf("please input a integer n:");
scanf("%d",&n);
while(n > 0)
{
ret = n*(n+1)*(2*n+1)/6;
printf("result : %d\n",ret);
printf("please input a integer n:");
scanf("%d",&n);
}

    return 0;

}
全部回答
  • 1楼网友:低音帝王
  • 2021-03-04 18:23
#include<stdio.h> int fun1(int n); int fun2(int n); void main() { int n; printf("Input a number:"); scanf("%d",&n); if((n>1000)||(n<0)) { printf("Error!\n"); return; } printf("The number you input is:n=%d\n",n); printf("After operation, S=%d\n",fun2(n)); } int fun1(int n) { int s=0; if(n) { s+=n*2-1; n--; s+=fun1(n); } return s; } int fun2(int n) { int s=0; if(n) { s+=fun1(n); n--; s+=fun2(n); } return s; } 你试一下。
  • 2楼网友:梦中风几里
  • 2021-03-04 17:11

你的这个程序并没有太大的问题,只是一些细节问题,显示的话 ,可以调整为每个几个(推荐10个)一行的输出格式,函数的功能是输出前n项吧,那就得处理好输出的格式问题咯,还有你说前50项,其实,在输出前30项的时候,数字就已经很大了,所以输出格式难免会有点混乱,这是正常的,下面是我改善了之后的代码,希望对您有所启示:

#include<stdio.h> void fibo(int n) {  int i,count=2;  double x1,x2,x; x1=1; x2=1;  printf("%6.0f\t%6.0f\t",x1,x2);  for(i=1;i<=(n-2);i++)  {   x=x1+x2;   printf("%6.0f\t",x);   x1=x2;   x2=x;   count++;   if(count%10==0)    printf("\n");  }  printf("\n"); } void main() {  int n;  scanf("%d",&n);  fibo(n); }

演示:

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯