此题本身有点问题:当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; }