C:(100分)
我是用二维数组做的
思路是当初学C的时候学做扫雷游戏的基础:
C语言从入门到进阶(C语言入门搞定C语言C语言视频教程C语言入门到进阶C语言教程C语言教程C语言教程C语言入门教程C语言入教程C语言C语言视频C语言教程)_哔哩哔哩_bilibili
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int leiqu[120][120] = { 0 }; //二维数组,用于储存 雷的位置 以及 用于记录非雷格子int main()
{int a, b;char ch;scanf("%d %d", &a, &b);getchar(); //有一个 换行符,要去掉for (int i = 1; i <= a; i++){for (int j = 1; j <= b; j++){ch = getchar();if (ch == '*'){leiqu[i][j] = 10; //因为我是 int类型的数组,不能直接储存'*',就取巧//你一个格子周围就8格,那这个格子最大的数就是8,我用10表示'*'//在下面输出的时候判断 如果数字大于8 就是雷leiqu[i - 1][j]++; //上leiqu[i - 1][j - 1]++; //上左leiqu[i - 1][j + 1]++; //上右leiqu[i + 1][j]++; //下leiqu[i + 1][j - 1]++; //下左leiqu[i + 1][j + 1]++; //下右leiqu[i][j - 1]++; //左leiqu[i][j + 1]++; //右}}getchar(); //每一行结尾 有一个看不见的 换行符,要去掉}for (int i = 1; i <= a; i++){for (int j = 1; j <= b; j++){if (leiqu[i][j] > 8) //判断 如果数字大于8 就是雷{printf("*");}else{printf("%d", leiqu[i][j]);}}printf("\n"); //补上 换行符}return 0;
}
C++ 和 python 方面没有新思路,逻辑差不多