蛇形方陣詳細分析【經(jīng)典之得一看哈】文章分類:C++編程
1.#include<stdio.h> void main() { int i,j,a[100][100],n,k; printf("請輸入列數(shù)n= "); scanf("%d",&n); k=1; for(i=1;i<=n;i++) for(j=1;j<=i;j++) //每一層輸入 i 個元素,故j<=i. { a[i+1-j][j] = k; //在內(nèi)循環(huán),并且與j有關(guān)。 //第i層的第一個數(shù)的橫坐標為i+1-j,然后隨著j++而橫坐標漸漸斜上輸入, //數(shù)組第二個下標以 j 作為基值,隨著j++縱坐標向右延伸。 k++; } for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n+1-i;j++) //每一行輸出 n+1-i 個元素 printf("%4d",a[i][j]); } printf("\n"); }
2 代碼:與上一個程序相比只僅僅改變了:a[i+1-j][j] —> a[j][i+1-j].
#include<stdio.h> void main() { int i,j,a[100][100],n,k; printf("請輸入列數(shù)n= "); scanf("%d",&n); k=1; for(i=1;i<=n;i++) for(j=1;j<=i;j++) { if(i%2==0) a[i+1-j][j]=k; else a[j][i+1-j]=k; k++; } for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n+1-i;j++) printf("%4d",a[i][j]); } printf("\n"); }
5、代碼:
#include<stdio.h> void main() { int i,j,a[100][100],n,k; printf("請輸入列數(shù)n= "); scanf("%d",&n); k=1; //輸出上三角 for(i=1;i<=n;i++) for(j=1;j<=i;j++) { if(i%2==0) a[i+1-j][j]=k; else a[j][i+1-j]=k; k++; } //輸出下三角 for(i=n+1;i<2*n;i++) for(j=1;j<=2*n-i;j++) { if(i%2==0) a[n+1-j][i-n+j]=k; //n+1在這里是定值了 else a[i-n+j][n+1-j]=k; k++; } for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n;j++) printf("%4d",a[i][j]); } printf("\n"); }
6、代碼:只是把上面5代碼中兩個地方交換位置
#include<stdio.h> void main() { int i,j,a[100][100],n,k; printf("請輸入列數(shù)n= "); scanf("%d",&n); k=1; for(i=1;i<=n;i++) for(j=1;j<=i;j++) { if(i%2==0) a[j][i+1-j]=k; else a[i+1-j][j]=k; k++; } for(i=n+1;i<2*n;i++) for(j=1;j<=2*n-i;j++) { if(i%2==0) a[i-n+j][n+1-j]=k; else a[n+1-j][i-n+j]=k; k++; } for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n;j++) printf("%4d",a[i][j]); } printf("\n"); }
#include<stdio.h> void main() { int i,j,a[100][100],n,k; printf("請輸入列數(shù)n= "); scanf("%d",&n); k=1; for(i=1;i<=n;i++) for(j=1;j<=i;j++) { a[j][i+1-j]=k; k++; } for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n+1-i;j++) //每一行輸出 n+1-i 個元素 printf("%4d",a[i][j]); } printf("\n"); }
3、代碼:與上一個相比加了一個奇偶數(shù)層的if判斷,這正好就是“拐點”的關(guān)鍵!
#include<stdio.h> void main() { int i,j,a[100][100],n,k; printf("請輸入列數(shù)n= "); scanf("%d",&n); k=1; for(i=1;i<=n;i++) for(j=1;j<=i;j++) { if(i%2==0) a[j][i+1-j]=k; else a[i+1-j][j]=k; k++; } for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n+1-i;j++) printf("%4d",a[i][j]); } printf("\n"); } |
|