• 蛇形矩阵


    蛇形矩阵(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;
    }

     

     

    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    [Android开发]cocos2dx工程中接入支付宝sdk
    cocos2dx android SDK接入总结
    Cocos2d-vs避免过长编译的小技巧
    math.h里的数学计算公式介绍
    Cocos Code IDE入门指南
    kbengine引擎的安装
    游戏服务端pomelo完整安装配置过程
    cocos2d-x 两个场景间进行传参数
    cocos2d-x 设置全局可变变量
    如何将cocos2d-x项目打包成一个.exe
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/14475262.html
Copyright © 2020-2023  润新知