3. 打印一个 N*N 的方阵,N为每边 N=15 打印出下面图形 字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT 外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT 起每层依次打印数字 1,2,3,... TJ11111111111JT (右图以N为15为例) TJ12222222221JT TJ12333333321JT TJ12344444321JT TJ12345554321JT TJ12345654321JT TJ12345554321JT TJ12344444321JT TJ12333333321JT TJ12222222221JT TJ11111111111JT TJJJJJJJJJJJJJT TTTTTTTTTTTTTTTint main(void){ char c,a[8]={'T','J','1','2','3','4','5','6'}; int i,j; for(i=0;i<15;i++){ for(j=0;j<15;j++){ if(i<=8){ if(j<=i) c=a[j]; else if(14-j<=i) c=a[14-j]; } else{ if(j<=14-i) c=a[j]; else if(14-j<=14-i) c=a[14-j]; } printf("%c",c); if(j==14) printf("\n"); } } return 0; }/*4. 在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅 出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。 编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4*/int main(void){ int i,j,k; printf("请输入一个比26小的数字:\n"); scanf("%d",&k); if(k>25){ printf("数值太大,打印不下,程序退出。\n"); exit(0); } for(i=0;i<k;i++){ for(j=1;j<=k;j++){ (j+i<=k)?printf("%3d",j+i):printf("%3d",i+j-k); if(j==k) printf("\n"); } } return 0;}

评论