关于#c++#的问题,如何解决?

img


【输入样例】

4

【输出样例】

10 11 12  1 
 9 16 13  2 
 8 15 14  3 
 7  6  5  4 

毫无思路,求解答
c++二维数组

纯手工写的,如果满意,还请采纳

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int arr[100][100];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            arr[i][j] = 0;
    }
    int x = 0, y = n - 1;
    int d = 0;
    int dir[4][2] = { { 1, 0 }, { 0, -1 }, { -1, 0 }, { 0, 1 } };
    for (int i = 1; i <= n * n; i++)
    {
        arr[x][y] = i;
        if (x + dir[d][0] == -1 || x + dir[d][0] == n || y + dir[d][1] == -1 || y + dir[d][1] == n || arr[x + dir[d][0]][y + dir[d][1]] != 0)
            d = (d + 1) % 4;
        x += dir[d][0];
        y += dir[d][1];
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            printf("%d\t", arr[i][j]);
        printf("\n");
    }
    return 0;
}

img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7625539
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++学习01:如何使用C++创建二维矩阵类并实现各类运算符的重载
  • 除此之外, 这篇博客: 基于c++的线索化二叉树链表中的 线索化后销毁 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 很多小伙伴对线索化后如何销毁产生很多疑惑,因为指针指向发生了改变,但是我们依然可以用后序遍历的方法进行销毁,我们都知道线索化后一些原本指向NULL确实发生了改变,但是原先标志域已经由0变成了1,所以我们可以增加一个判断,如果为1就不进入,从而进行后序遍历达到销毁功能。

    这里我加了 cout函数,主要是删除一个就显示一下,从而查看是否完全删除,一般小伙伴写后运行时可以不加。

  • 您还可以看一下 张景平老师的C++零基础入门(计算机二级考试)课程中的 数据的输入与输出小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    回答:

    关于C++二维数组的声明、初始化和使用,可以参考以下内容:

    1. 声明一个二维数组
    int arr[2][3];  // 声明一个2×3的二维数组
    
    1. 初始化二维数组

    2. 全部元素初始化为0

    int arr[2][3] = {{0}}; //所有元素都初始化为0
    
    • 部分元素初始化为0
    int arr[2][3] = {{0,0,0},{0,0,0}}; // 第一维长度为2,第二维长度为3,所有元素都初始化为0
    
    • 手动初始化每个元素的值
    int arr[2][3] = {{1,2,3},{4,5,6}}; // 第一维长度为2,第二维长度为3,手动初始化每个元素的值
    
    • 只初始化部分元素,其他元素自动初始化为0
    int arr[2][3] = {{1,2,3}}; // 第一维长度为2,第二维长度为3,第一行为1、2、3,其他元素自动初始化为0
    
    1. 访问二维数组中的元素
    int arr[2][3] = {{1,2,3},{4,5,6}};
    cout << arr[0][1] << endl; // 访问第一行(index为0),第二列(index为1)的元素,输出2
    cout << arr[1][2] << endl; // 访问第二行(index为1),第三列(index为2)的元素,输出6
    

    建议结合自己的具体情况加以使用。