4条回答 默认 最新
- qfl_sdu 2021-07-06 18:58关注
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h> #include <stdlib.h> void fun(int **a, int sx,int sy,int n,int start) { int i,j; for (i=0;i<n;i++) { for (j=0;j<n;j++) { if(i==j) a[sx+i][sy+j] = start + i; else if(i==n-1) a[sx+i][sy+j] = start + 3*n-i-3 -j; else if (j==0) a[sx+i][sy+j] = start + 3*n-i-3; } } if(n<=3) return; else { sx +=2; sy +=1; fun(a,sx,sy,n-3,3*n-2); } } int main() { int **a = 0; int n,i,j; printf("n="); scanf("%d",&n); a = (int**)malloc(n*sizeof(int*)); for (i=0;i<n;i++) { a[i] = (int*)malloc(n*sizeof(int)); } for (i=0;i<n;i++) { for (j=0;j<n;j++) { a[i][j] = 0; } } fun(a,0,0,n,1); for (i=0;i<n;i++) { for (j=0;j<n;j++) { if(j<=i) printf("%4d",a[i][j]); } printf("\n"); } for (i=0;i<n;i++) { free(a[i]); } free(a); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用