#include<stdio.h> #include<math.h> #include<string.h> #define LEN 6 int main() { static char s[LEN][96]; int n; for(int i=0;i<LEN;i++) { for(int j=0;j<=2*i;j++) { char tmp[10]; sprintf(tmp,"%d",j<i?(int)pow(2,j):(int)pow(2,2*i-j)); strcat(s[i],tmp); } } n=strlen(s[LEN-1]); for(int i=0;i<LEN;i++) { for(int j=0;j<(n-strlen(s[i]))/2;j++)putc(' ',stdout); puts(s[i]); } return 0; }
差不多吧。
采用递归方法一个函数就能解决,加上输出的是对称结构就更简单了,把输出分成三步,第一步打印空格,第二步打印前半部分(带上中间那个数字),最后打印剩下的数字。应该不难,把空格的个数数对就行。