有如下数列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,..计算并输出前1000项的和 要求:使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有如下数列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,..计算并输出前1000项的和 要求:使用?相关的知识,希望对你有一定的参考价值。

题目:有如下数列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,..计算并输出前1000项的和
要求:使用循环实现。 输出结果的形式为:s=29820
#include <stdio.h>
int main()

int j = 1;
int num = 1;
int countNum = 0;
int sum = 0;
/**********Program**********/

while (【?】)

for (【?】)

【?】;
if (【?】)

break;

【?】 num;

++num;


/********** End **********/
printf("s=%d", sum);
fclose(stdout);
return (0);

参考技术A #include <stdio.h>
int main()

int j = 1;
int num = 1;
int countNum = 0;
int sum = 0;
/**********Program**********/

while (num<=1000)

for (j=1;j<=num;j++)

num++;
if (num>1000)

break;

sum+= num;

++num;


/********** End **********/
printf("s=%d", sum);
fclose(stdout);
return (0);

Fibonacci数列问题 求解 谢谢了~没分可加了 。。

Fibonacci 数列有如下特点:其第 1 , 2 项均为 1 , 1 。从第 3 个数开始,该数是其前两个数之和 . 即 :

F1=1 (n=1)
F2=1 (n=2)
Fn=Fn-1+Fn-2 (n>=3)
请你编写一个函数 fun ,它的功能是:对于一个给定的 数( N ), 求不大于 N 的最大 Fibonacci 数。

输入

输入的第一行是一个正整数,表示下面有几组数据需要计算。之后的每一行是一个数据 N ,其中 1 < N <= 101000 。

输出

对应输入的每一行,输出一个 不大于 N 的最大 Fibonacci 数。
注意是高精度高手些不要用C++编啊 要 C。。
谢谢了
谢谢你的回答 但是不是我要的答案 你这个答案是非高精度算法的 ~~
因为TC是16位系统 整数表示的范围不够,
long 也不够的 这个数列的第100项就已经超过LONG 了 DOUBLE 也不行的

最后一楼格式不对:给个参考用例吧
测试输入:
2
9
1234567890
测试输出:
8
1134903170

帮你改了一下,测试没有问题
-----------------------------------------------------------------------------
/*
* fib.c
*/
#include <stdio.h>
#define MAX_NUM 100

char a[MAX_NUM];
char b[MAX_NUM];
char c[MAX_NUM];

/*计算第N项*/
char *fibonacci(unsigned long N)

unsigned long i;
int k,tmp,flag;
memset(a,0,MAX_NUM);
memset(b,0,MAX_NUM);
memset(c,0,MAX_NUM);
a[0]=1;
b[0]=1;
c[0]=1;

if(N<3) return c;

for(i=3;i<=N;i++)

k=0;
flag=0;
while(k<MAX_NUM)

tmp = a[k]+b[k]+flag;
c[k] =tmp%10;
flag =tmp/10;
k++;

memcpy(a,b,MAX_NUM);
memcpy(b,c,MAX_NUM);

return c;

/*比较两个数的大小*/
int CompareFibonacci(char *f1, char *f2)

char tmp[MAX_NUM];
int i=0,t,flag=0;
int flag0=0;

while(i<MAX_NUM)

t=f1[i]-f2[i]-flag;
if(t<0)

t += 10;
flag =1;

else flag=0;
if(t!=0&&flag0==0) flag0=1;
tmp[i++]=t;

if (flag) return -1;
if (flag0) return 1;
return 0;

void main()

int count,i=0,j=0,k=0,kk;
unsigned long N=1;
char d[100][MAX_NUM];
char e[MAX_NUM];
printf("First row is the count:");
scanf("%d", &count);
do

printf("input a integer or 'end' to finished:");
scanf("%s",d[i]);
while(i<count-1 && d[i++][0]!='e');

printf("Output:\n");
for(j=0;j<=i;j++)

memset(e,0,MAX_NUM);
k=MAX_NUM-1;
while(d[j][k]==0) k--;
kk=0;
while(k>=0)e[kk++]=d[j][k--]-'0';

/*计算比给定数大的Fibonacci数*/
N=1;
do

fibonacci(N++);
while(CompareFibonacci(e,c)>0);

/*输出a[]就是所求*/
k=MAX_NUM-1;
while(a[k]==0)k--;
while(k>=0) printf("%d",a[k--]);
printf("\n");


printf("\nPress any key to exit.\n");
getch();
参考技术A 函数 fun()如下:

int fun(int n)

if(n==1||n==2)

return 1;

else if(n>=3)

return fun(n-1)+fun(n-2);

else

return 0;



补充:
哦,明白了,原来是这样
那么你可以把上面的int,全部修改为long啊
参考技术B 函数 fun()如下:

int fun(int n)

if(n==1||n==2)

return 1;

else if(n>=3)

return fun(n-1)+fun(n-2);

else

return 0;

参考技术C 不行的,这个数太大了:101000

如果要高精度,只有把数字分段保存在数组中。

以上是关于有如下数列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,..计算并输出前1000项的和 要求:使用?的主要内容,如果未能解决你的问题,请参考以下文章

2+3+4…+77怎么算

在3、7、2、5、4、3、7、2、5、4这个数列中第2006个数字是几?求计算方法

深浅拷贝和数列,变量的区别

1182 数列分段2

1、1、2、3、5、8、13.....数列 第2006位除以5的余数是多少?

泰波那契数列题解