蛇形矩阵

蛇形矩阵(4分)

题目内容:

从键盘任意输入一个自然数nn表示矩阵的大小,假设不超过100),请编程输出一个n*n的蛇形矩阵。如果输入的n不是自然数或者输入了不合法的数字,则输出"Input error!"

函数原型: void ZigzagMatrix(int a[][N], int n);

函数功能:计算n*n的蛇形矩阵

提示:用两个双重循环分别计算n*n矩阵的左上三角和右下三角,设置一个计数器从1开始记录当前要写入矩阵的元素值,每次写完一个计数器加1,在计算左上角和右下角矩阵元素时,分奇数和偶数两种情况考虑待写入的元素在矩阵中的行列下标位置。

程序运行结果示例1:

Input n:

5

   1   2   6   7  15

   3   5   8  14  16

   4   9  13  17  22

  10  12  18  21  23

  11  19  20  24  25

 

程序运行结果示例2:

Input n:

4↙

   1   2   6   7

   3   5   8  13

   4   9  12  14

  10  11  15  16

 

程序运行结果示例3:

Input n:

-5

Input error!

 

程序运行结果示例4:

Input n:

105

Input error!

 

程序运行结果示例5:

 

Input n:

w↙

Input error!


输入提示信息"Input n: "

输入错误提示信息"Input error! "

输入格式 "%d"

输出格式:"%4d"

数据换行: " "

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

 

 

#include <stdio.h>
int a[110][110];
int main()
{
    int n, x;
    printf("Input n:
");
    x = scanf("%d", &n);
    if(x != 1 || n > 100 || n < 0)
    {
        printf("Input error");
        return 0;
    }
    int i = 0, j = 0, cnt1 = 0, cnt2 = 1, cnt = 1;
    while(cnt2 <= n)
    {
        a[i][j] = cnt++;
        if(++cnt1 == cnt2)
        {
            cnt1 = 0;
            if(cnt2 % 2 != 0 && i == 0) j++;
            else if(cnt2 % 2 == 0 && j == 0) i++;
            cnt2++;
        }
        else
        {
            if(cnt2 % 2 == 0) i++, j--;
            else i--, j++;
        }
    }
    i = n - 1, j = n - 1, cnt = n * n, cnt2 = 1;

    while(cnt2 <= n - 1)
    {
        a[i][j] = cnt--;
        if(++cnt1 == cnt2)
        {
            cnt1 = 0;
            if(cnt2 % 2 != 0 && i == n - 1) j--;
            else if(cnt2 % 2 == 0 && j == n - 1) i--;
            cnt2++;
        }
        else
        {
            if(cnt2 % 2 == 0) j++, i--;
            else j--, i++;
        }
    }
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            printf("%4d", a[i][j]);
        printf("
");
    }

    return 0;
}

 

 

自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
原文地址:https://www.cnblogs.com/WTSRUVF/p/14475262.html