【C语言代码】扫雷
本文最后更新于 1649 天前,其中的信息可能已经有所发展或是发生改变。

此题可巩固字符串和二维数组,加上函数解题更妙~

描述

你玩过扫雷游戏吗?这个可爱的小游戏附带了某个操作系统,我们记不起名字了。游戏的目标是在M × N字段中找到所有地雷的位置。游戏显示一个正方形中的数字,它会告诉你那个正方形附近有多少个地雷。每个正方形最多有八个相邻的正方形。左边的4×4字段包含两个地雷,每个地雷都用“*”字符表示。

输入

输入将由任意数量的字段组成。每个字段的第一行包含两个整数n和m(0<n,m<100),分别代表字段的行数和列数。接下来的n行中每行都包含恰好m个字符,表示字段。安全方块以“.”表示,地雷方块以“*”表示,两者都没有引号。n = m = 0 的第一个字段行表示输入的结束,不应处理。

输出

对于每个字段,打印消息“Field #x:”仅在一行上,其中x代表从1开始的字段数。接下来的n行应该包含字段,字段的“.”字符替换为该正方形附近的地雷数量。每一段输出之间必须有一条空行。

样例输入

4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0

样例输出

Field #1:
*100
2210
1*10
1110

Field #2:
**100
33200
1*100
#include <stdio.h>

char translate(int n)
{
    if (n == 1)    return '1';
    if (n == 2)    return '2';
    if (n == 3)    return '3';
    if (n == 4)    return '4';
    if (n == 5)    return '5';
    if (n == 6)    return '6';
    if (n == 7)    return '7';
    if (n == 8)    return '8';
    if (n == 9)    return '9';
    if (n == 0)    return '0';
}

int main()
{
    char arr[100][100];
    int m, n;
    int i, j;
    int jsq = 0;
    int jc = 0;
    while (scanf("%d%d", &m, &n), m || n)
    {
        jc++;
        for (i = 0; i < m; i++)
        {
            scanf("%s", arr[i]);
        }

        for (i = 0; i < m; i++)
        {
            for (j = 0; j < n; j++)
            {
                if (arr[i][j] == '*')
                {
                    continue;
                }
                else
                {
                    jsq = 0;
                    if (i - 1 >= 0 && j - 1 >= 0 && arr[i - 1][j - 1] == '*')
                        jsq++;
                    if (i - 1 >= 0 && arr[i - 1][j] == '*')
                        jsq++;
                    if (i - 1 >= 0 && j + 1 >= 0 && arr[i - 1][j + 1] == '*')
                        jsq++;
                    if (j - 1 >= 0 && arr[i][j - 1] == '*')
                        jsq++;
                    if (j + 1 >= 0 && arr[i][j + 1] == '*')
                        jsq++;
                    if (i + 1 >= 0 && j - 1 >= 0 && arr[i + 1][j - 1] == '*')
                        jsq++;
                    if (i + 1 >= 0 && arr[i + 1][j] == '*')
                        jsq++;
                    if (i + 1 >= 0 && j + 1 >= 0 && arr[i + 1][j + 1] == '*')
                        jsq++;
                    arr[i][j] = translate(jsq);
                }
            }
        }

        printf("Field #%d:\n", jc);

        for (i = 0; i < m; i++)
        {
            for (j = 0; j < n; j++)
            {
                printf("%c", arr[i][j]);
            }
            printf("\n");
        }

        printf("\n");
        
    }

    return 0;
}
如需转载,请注明出处。

【C语言代码】扫雷
https://blog.ethan0ne.com/%e3%80%90c%e8%af%ad%e8%a8%80%e4%bb%a3%e7%a0%81%e3%80%91%e6%89%ab%e9%9b%b7/
作者:Ethan (@ethan0ne)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇