题目描述
用函数的方法编写一个求级数前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))。
C语言之编求级数第n项的函数
答案:3 悬赏:50 手机版
解决时间 2021-03-05 13:04
- 提问者网友:刺鸟
- 2021-03-04 14:38
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 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^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); }
演示:
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯