
1条回答 默认 最新
CSDN专家-天际的海浪 2021-12-06 00:21关注用一个30×30的二维字符数组,用rand函数随机生成行列数放“@”到数组中,统计不是“@”的元素的周围8个元素中有多少“@”即可
你题目的解答代码如下:#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { char s[30][30]; srand((unsigned)time(NULL)); int a[8][2] = { -1, -1, -1, 0, -1, 1, 0, -1, 0, 1, 1, -1, 1, 0, 1, 1 }; int n, i, j, k, m, x, y; for (i = 0; i < 30; i++) for (j = 0; j < 30; j++) s[i][j] = '0'; scanf("%d", &n); for (i = 0; i < n; i++) { x = rand() % 30; y = rand() % 30; if (s[x][y]!='@') s[x][y] = '@'; else //如果随机出的位置已经是@,则i--让这次循环不计数 i--; } for (i = 0; i < 30; i++) { for (j = 0; j < 30; j++) { if(s[i][j] != '@') { m = 0; for (k = 0; k < 8; k++) { x = i + a[k][0]; y = j + a[k][1]; if(x>=0 && x<30 && y>=0 && y<30 && s[x][y] == '@') m++; } s[i][j] = m+'0'; } } } for (i = 0; i < 30; i++) { for (j = 0; j < 30; j++) { printf("%c ", s[i][j]); } printf("\n"); } return 0; }如有帮助,望采纳!谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录