c语言魔方阵编程代码是什么

worktile 其他 49

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    C语言魔方阵编程代码如下:

    #include <stdio.h>
    
    #define N 15
    
    int main() {
        int magic_square[N][N] = {0}; // 初始化魔方阵
        
        int n;
        printf("请输入魔方阵的阶数(奇数):");
        scanf("%d", &n);
        
        if (n % 2 == 0) {
            printf("请输入一个奇数!\n");
            return 0;
        }
        
        int row = 0, col = n / 2; // 设置起始位置
        
        for (int i = 1; i <= n * n; i++) {
            magic_square[row][col] = i; // 将当前数字填入位置
            
            row--;
            col++;
            
            if (row < 0) {
                row = n - 1;
            }
            
            if (col == n) {
                col = 0;
            }
            
            if (magic_square[row][col] != 0) {
                row++;
                col--;
                
                if (row == n) {
                    row = 0;
                }
                
                if (col < 0) {
                    col = n - 1;
                }
            }
        }
        
        printf("生成的%d阶魔方阵为:\n", n);
        
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                printf("%3d ", magic_square[i][j]);
            }
            printf("\n");
        }
        
        return 0;
    }
    

    以上是一个生成魔方阵的C语言代码。用户需要输入一个奇数作为魔方阵的阶数,然后程序会生成对应阶数的魔方阵并输出。魔方阵的生成算法是通过不断地向右上方移动,并将数字填入位置,当遇到已经填入数字的位置时,则向下移动一行。最后输出生成的魔方阵。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    C语言编写魔方阵的代码如下:

    #include <stdio.h>
    
    #define MAX_SIZE 15
    
    void generateMagicSquare(int n)
    {
        int magicSquare[MAX_SIZE][MAX_SIZE];
    
        // 初始化魔方阵
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                magicSquare[i][j] = 0;
            }
        }
    
        // 设置初始位置
        int row = 0;
        int col = n / 2;
        int num = 1;
    
        // 填充魔方阵
        while (num <= n * n)
        {
            magicSquare[row][col] = num;
            num++;
    
            // 移动位置
            int nextRow = (row - 1 + n) % n;
            int nextCol = (col + 1) % n;
    
            // 判断下一个位置是否已被占用
            if (magicSquare[nextRow][nextCol] != 0)
            {
                row = (row + 1) % n;
            }
            else
            {
                row = nextRow;
                col = nextCol;
            }
        }
    
        // 打印魔方阵
        printf("Magic Square of size %d:\n", n);
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                printf("%3d ", magicSquare[i][j]);
            }
            printf("\n");
        }
    }
    
    int main()
    {
        int size;
    
        printf("Enter the size of magic square (odd number): ");
        scanf("%d", &size);
    
        if (size % 2 == 0)
        {
            printf("Invalid size. Please enter an odd number.\n");
        }
        else
        {
            generateMagicSquare(size);
        }
    
        return 0;
    }
    

    以上代码是一个生成魔方阵的C语言程序。程序首先要求用户输入魔方阵的大小,然后根据用户输入的大小生成相应的魔方阵。

    代码中使用一个二维数组magicSquare来表示魔方阵。首先,程序会将magicSquare数组中的所有元素初始化为0。然后,程序会设置一个初始位置,接着依次填充魔方阵,直到所有位置都被填满。

    填充魔方阵时,程序会判断下一个位置是否已被占用。如果下一个位置已被占用,则向下移动一行;否则,向右上方移动一格。通过循环重复这个过程,直到魔方阵被填满。

    最后,程序会打印生成的魔方阵。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    C语言魔方阵编程代码如下所示:

    #include <stdio.h>
    
    #define MAX_SIZE 15
    
    void magicSquare(int n)
    {
        int square[MAX_SIZE][MAX_SIZE];
        int i, j, k;
        int row, col;
    
        // 初始化魔方阵为0
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                square[i][j] = 0;
            }
        }
    
        // 设置初始值
        row = 0;
        col = n / 2;
        square[row][col] = 1;
    
        // 填充其他数字
        for (k = 2; k <= n * n; k++)
        {
            // 计算下一个位置
            if (row - 1 < 0)
            {
                row = n - 1;
            }
            else
            {
                row--;
            }
    
            if (col + 1 >= n)
            {
                col = 0;
            }
            else
            {
                col++;
            }
    
            // 如果该位置已经有数字,则向下移动一行
            while (square[row][col] != 0)
            {
                if (row + 1 >= n)
                {
                    row = 0;
                }
                else
                {
                    row++;
                }
            }
    
            // 填充数字
            square[row][col] = k;
        }
    
        // 打印魔方阵
        printf("Magic Square of size %d:\n\n", n);
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                printf("%5d", square[i][j]);
            }
            printf("\n");
        }
    }
    
    int main()
    {
        int n;
    
        printf("Enter the size of Magic Square (odd number between 3 and 15): ");
        scanf("%d", &n);
    
        // 检查输入的合法性
        if (n % 2 == 0 || n < 3 || n > 15)
        {
            printf("Invalid input! Size should be an odd number between 3 and 15.\n");
            return 0;
        }
    
        magicSquare(n);
    
        return 0;
    }
    

    以上代码实现了一个C语言魔方阵的程序。用户可以输入一个奇数大小的矩阵,程序会生成一个相应大小的魔方阵,并将其打印出来。

    首先,在magicSquare()函数中,我们定义了一个二维数组square来表示魔方阵。然后,我们使用两个变量rowcol来表示当前要填充的位置。我们将初始位置设置为第一行的中间列。然后,我们使用一个循环来填充魔方阵中的每一个数字。在每一次循环中,我们首先计算下一个位置,然后检查该位置是否已经被填充过,如果是,则向下移动一行。最后,我们将当前数字填充到魔方阵中。

    main()函数中,我们首先要求用户输入魔方阵的大小,并进行输入合法性检查。如果输入不合法,则输出错误信息并退出程序。如果输入合法,则调用magicSquare()函数生成魔方阵。

    最后,我们在magicSquare()函数中使用嵌套循环打印出生成的魔方阵。每个数字都占据5个字符的宽度,以保证输出的对齐性。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部