一个前三项是0,0,1的数列,其后每项是前三项的和,输出前n(5~100)(含)项。C语言咋编程?

2025-06-23 04:38:06
推荐回答(1个)
回答1:

此题本身有点问题:当n较大时是个二十多位的十进制数,所以“每项6列”显然是行不通的;且4字节整型和8字节整型都不能胜任了,要溢出,所以需要用“大数加法”来处理。下面提供一个用每项27列输出的代码。供参考。

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

char a[4][26],n,i,j,k,t;

printf("Enter n(int 4

if(scanf("%d",&n)==1 && n>4 && n<101){

for(i=0;i<26;a[0][i++]=a[1][i]=a[2][i]='0');

a[2][25]='1';

printf("%26d %26d %26d ",0,0,1);

for(k=3,i=3;i

for(j=0;j<26;a[3][j++]='0');//和数组清0

for(j=0;j<3;j++)//大数加法

for(t=25;t>=0;t--)

if((a[3][t]+=a[j][t]-'0')>'9')

a[3][t]-=10,a[3][t-1]++;

for(t=0;t<3;t++)//存储加法结果

for(j=0;j<26;a[t][j++]=a[t+1][j]);

for(j=0;a[2][j++]=='0';putchar(' '));//输出

for(j--;j<26;putchar(a[2][j++]));

putchar(' ');

if(++k%4==0)

putchar('\n');

}

if(k%4)//若最后一行不足4项则补一回车

putchar('\n');

}

else//输入错误提示并退出

printf("Input error, exit...\n");

return 0;

}