输出二维斜矩阵,高手请围观
输入n,输出n*n的二维斜矩阵。例如,输入5
输出:
1 2 4 7 11
3 5 8 12 16
6 9 13 17 20
10 14 18 21 23
15 19 22 24 25
# include <stdio.h> int main (void) { int n; int i,j,k; int m=0; int x,y; int a[100][100]; printf("输入斜矩阵的阶数 "); scanf("%d",&n); for (i=0; i<=2*(n-1); ++i) { if (i < n) { x = 0; y = i; } else { x = i - (n-1); y = n-1; } for (j=x; j<=y; ++j) { k = i-j; m++; a[j][k] = m; } } for (j=0; j<n; ++j) { for (k=0; k<n; ++k) printf("%-5d",a[j][k]); printf("\n"); } return 0; } /*在VC++6.0中的输出结果为: ———————————— 输入斜矩阵的阶数 5 1 2 4 7 11 3 5 8 12 16 6 9 13 17 20 10 14 18 21 23 15 19 22 24 25 Press any key to continue ———————————— */
#include<stdio.h> int array[1000][1000]; int main() { int n,i,j,x,y,rst; scanf("%d",&n); rst=i=j=0; while(rst<n*n) { x=i;y=j; while(x<n && y>=0)array[x++][y--]=++rst; j+1<n ? j++ : i++; } for(i=0;i<n;i++) { for(j=0;j<n;j++) printf(i==0?"%3d":" %3d",array[i][j]); printf("\n"); } return 0; }
#include<stdio.h> main() {int j,k,l,i,n,a[20][20]; printf("请输入n:"); scanf("%d",&n); i=1; for(j=0;j<n;j++) for(k=j,l=0;k>=0&&l<n;k--,l++) a[l][k]=i++; for(j=1;j<n;j++) for(k=j,l=n-1;k<n;k++,l--) a[k][l]=i++; putchar('\n'); for(j=0;j<n;j++) {for(k=0;k<n;k++) printf("%4d ",a[j][k]); printf("\n"); } }
int a[100][100]; int n; main(){ int l,i; int o=1; printf("N="); scanf("%d",&n); for(i=0;i<n*2-1;i++){ for(l=(i>=n)?(n<<1)-i-2:i;l>-1;l--){ a[i-l-((i>=n)?i-n+1:0)][l+((i>=n)?i-n+1:0)]=o; o++; } } for(l=0;l<n;l++){ for(i=0;i<n;i++){ printf("%5d",a[l][i]); } printf("\n"); } getch(); }