名字帧难取 2022-08-31 21:13 采纳率: 100%
浏览 19
已结题

请问定义变量的语句写在主函数外或主函数内有何区别


#include <iostream>
using namespace std;
int main()
{
    int n , m , ans = 0;
    char a[101][101];
    cin >> n;
    for (int i = 1 ; i <= n ; i++)
    {
        for (int j = 1 ; j <= n ; j++)
        {
            cin >> a[i][j];    
        }    
    }
    cin >> m;
    m--;
    while(m--)
    {
        for (int i = 1 ; i <= n ; i++)
        {
            for (int j = 1 ; j <= n ; j++)
            {
                if (a[i][j] == '@')
                {
                    if (a[i - 1][j] == '.')
                    {
                        a[i - 1][j] = '!';
                    }
                    if (a[i + 1][j] == '.')
                    {
                        a[i + 1][j] = '!';
                    }
                    if (a[i][j - 1] == '.')
                    {
                        a[i][j - 1] = '!';
                    }
                    if (a[i][j + 1] == '.')
                    {
                        a[i][j + 1] = '!';
                    }
                }
            }
        }
        for (int i = 1 ; i <= n ; i++)
        {
            for (int j = 1 ; j <= n ; j++)
            {
                if (a[i][j] == '!')
                {
                    a[1][j] = '@';
                }
            }
        }
    }
    for (int i = 1 ; i <= n ; i++)
    {
        for (int j = 1 ; j <= n ; j++)
        {
            if (a[i][j] == '@')
            {
                ans++;
            }
        }
    }
    cout << ans;
    return 0;
}

#include <iostream>
using namespace std;
char a[101][101];
int n , m , ans = 0;
int main()
{
    cin >> n;
    for (int i = 1 ; i <= n ; i++)
    {
        for (int j = 1 ; j <= n ; j++)
        {
            cin >> a[i][j];
        }
    }
    cin >> m;
    m--;
    while(m--)
    {
        for (int i = 1 ; i <= n ; i++)
        {
            for (int j = 1 ; j <= n ; j++)
            {
                if (a[i][j] == '@')
                {
                    if (a[i - 1][j] == '.')
                    {
                        a[i - 1][j] = '!';
                    }
                    if (a[i + 1][j] == '.')
                    {
                        a[i + 1][j] = '!';
                    }
                    if (a[i][j - 1] == '.')
                    {
                        a[i][j - 1] = '!';
                    }
                    if (a[i][j + 1] == '.')
                    {
                        a[i][j + 1] = '!';
                    }
                }
            }
        }
        for (int i = 1 ; i <= n ; i++)
        {
            for (int j = 1 ; j <= n ; j++)
            {
                if (a[i][j] == '!')
                {
                    a[i][j] = '@';
                }
            }
        }
    }
    for (int i = 1 ; i <= n ; i++)
    {
        for (int j = 1 ; j <= n ; j++)
        {
            if (a[i][j] == '@')
            {
                ans++;
            }
        }
    }
    cout << ans;
    return 0;
}

问题描述:

img


按样例输入,第一段代码结果为7,第二段代码结果为16
麻烦哪位高人指点一下,感激不尽

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-08-31 21:38
    关注

    主函数外就是全局变量
    主函数内就是函数内局部变量
    第1段第51行你写错了
    a[1][j] = '@';
    应该是a[i][j] = '@';

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 9月9日
  • 已采纳回答 9月1日
  • 修改了问题 8月31日
  • 创建了问题 8月31日