蛇形数组和“之”字形打印

来源:互联网 发布:数据录入平台 编辑:程序博客网 时间:2024/05/18 01:39

蛇形数组:

     wKioL1cZ7Bmz9Im7AABkMZGZTSQ588.png

spacer.gif

上面的数组就叫做蛇形数组

如何打印蛇形数组:一定不要一行一行的考虑,不然就陷入误区了。

wKioL1cZ61rA1sUIAAB0kdx7aiU472.png

spacer.gif

#include<stdio.h>#include<stdlib.h>#define line 10 void initsarr(int arr[line][line]){int i1 = 0;int j1 = 0;int m1 = line - 1;int n1 = line - 1;int k = 0;int i2;int j2;int m2;int n2;while (i1 <= m1&&j1 <= n1){for (j2 = j1; j2 <= n1; j2++)             //从第一行开始打印行{k++;arr[i1][j2] = k;}for (i2 = i1 + 1; i2 <= m1; i2++)             //从最后一列开始打印列{k++;arr[i2][n1] = k;}for (n2 = n1 - 1; n2 >= j1; n2--)            //从最后一行开始打印行{k++;arr[m1][n2] = k;}for (m2 = m1 - 1; m2>i1; m2--)                //从第一列开始打印列{k++;arr[m2][j1] = k;}j1++;                                    //准备下一圈的打印i1++;n1--;m1--;}}void output(int arr[line][line]){int i;int j;for (i = 0; i<line; i++){for (j = 0; j<line; j++){printf("%5d", arr[i][j]);}printf("\n\n");}}int main(){int arr[line][line];initsarr(arr);output(arr);system("pause");return 0;}



“之”字形打印:

wKiom1cZ63bgrsxyAABggVqvIRQ667.png

spacer.gif

上面这幅图就是“之”字形打印出来的。


如何打印“之”字形:

wKiom1cZ6zny6Ox1AABrUrSEZHk114.png

spacer.gif


#include<stdio.h>#include<stdlib.h>#define line 10 void output(int arr[line][line]){int i;int j;for (i = 0; i<line; i++){for (j = 0; j<line; j++){printf("%5d", arr[i][j]);}printf("\n\n");}}
void initsarr(int arr[line][line]){int i = 0;int j = 0;int k = 0;int i2;int j2;for (i = 0, j = 0; i<line&&j<line; i++, j++){if (i % 2 == 0)                  //上三角形从左下到右上斜线的打印{for (i2 = i, j2 = 0; i2 >= 0 && j2 <= j; i2--, j2++){k++;arr[i2][j2] = k;}}else                          //上三角形从右上到左下斜线的打印{for (j2 = j, i2 = 0; j2 >= 0 && i2 <= i; j2--, i2++){k++;arr[i2][j2] = k;}}}for (i = line - 1, j = line - 1; i >= 0 && j >= 0; i--, j--){if (i % 2 != 0)             {                          //下三角形从左下到右上斜线的打印for (i2 = line - 1, j2 = line - j; i2<line&&j2<line; i2--, j2++){k++;arr[i2][j2] = k;}}else                 {                         //下三角形从右上到左下斜线的打印for (i2 = line - 1, j2 = line - j; i2<line&&j2<line; i2--, j2++){k++;arr[j2][i2] = k;}}}}int main(){int arr[line][line];intput(arr);output(arr);system("pause");return 0;}
4 0
原创粉丝点击