解题思路:愚笨的方法
注意事项:
参考代码:
#include <stdio.h>
#define N 1000
int main() {
int n1, n2;
char sl[N][N];
int i, j, m, n, count1,count2;
count1 = 0;
count2=0;
while(scanf("%d %d", &n1, &n2)&&(n1!=0&&n2!=0)){
// getchar();
for (i = 0; i < n1; i++) {
// scanf_s("%s", sl[i],n2+1);//这里的n表示缓冲区大小,最多只能容纳n-1个字符*/
scanf("%s",sl[i]);
}
// printf("\n");
//解决中间部分的数字
for (i = 1; i < n1-1; i++) {
for (j = 1; j < n2-1; j++) {
if (sl[i][j] == '.') {
for (m = i - 1; m <= i + 1; m++) {
for (n = j - 1; n <= j + 1; n++) {
if (sl[m][n] == '*') {
count1++;
}
}
}
sl[i][j] = count1+48;
count1 = 0;
}
}
}
//解决上边的数字
for(j=1;j<n2-1;j++){
if(sl[0][j]=='.'){
for(i=0;i<2;i++){
for(m=j-1;m<=j+1;m++){
if(sl[i][m]=='*'){
count1++;
}
}
}
sl[0][j]=count1+48;
count1=0;
}
}
for(j=1;j<n2-1;j++){
if(sl[n1-1][j]=='.'){
for(i=n1-2;i<n1;i++){
for(m=j-1;m<=j+1;m++){
if(sl[i][m]=='*'){
count1++;
}
}
}
sl[n1-1][j]=count1+48;
count1=0;
}
}
for(i=0,j=0;i<n1;i++){
if(sl[i][j]=='.'){
for(m=i-1;m<=i+1;m++){
for(n=j;n<=j+1;n++){
if(sl[m][n]=='*'){
count1++;
}
}
}
sl[i][j]=count1+48;
count1=0;
}
}
for(i=0,j=n2-1;i<n1;i++){
if(sl[i][j]=='.'){
for(m=i-1;m<=i+1;m++){
for(n=j-1;n<=j;n++){
if(sl[m][n]=='*'){
count1++;
}
}
}
sl[i][j]=count1+48;
count1=0;
}
}
count2++;
printf("Field #%d:\n",count2);
for (i = 0; i < n1; i++) {
printf("%s\n",sl[i]);
}
printf("\n");
}
return 0;
}
0.0分
0 人评分
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:910 |
不容易系列 (C语言代码)浏览:702 |
最长单词 (C语言代码)浏览:1474 |
WU-复数求和 (C++代码)浏览:2119 |
printf基础练习2 (C语言代码)浏览:690 |
有关字符,字符串的输入输出函数说明浏览:498 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:627 |
IP判断 (C语言代码)浏览:592 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:712 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |