根据用户输入的行数和列数用C语言制作一张n*m含有k个障碍的地图,并放在数组中,写一段代码
时间: 2023-03-08 18:15:12 浏览: 42
我们首先声明一个数组来存储地图,它的行数为n,列数为m,并且将所有元素初始化为0:int map[n][m];然后,我们生成k个障碍,并将它们放入数组中:
for(int i=0;i<k;i++){
int x=rand()%n;
int y=rand()%m;
map[x][y]=1;
}
相关问题
写一段代码,根据用户输入的行数和列数用C语言制作一张n*m含有k个障碍的地图,并放在数组中
### 回答1:
#include <stdio.h>
#include <stdlib.h>int main(int argc, char* argv[])
{
int n, m, k; //行数、列数、障碍数
printf("请输入行数:");
scanf("%d", &n);
printf("请输入列数:");
scanf("%d", &m);
printf("请输入障碍数:");
scanf("%d", &k);
int map[n][m]; //定义数组
int i, j;
for(i=0; i<n; i++) //初始化数组
{
for(j=0; j<m; j++)
{
map[i][j] = 0; //默认每格都没有障碍
}
}
int x, y;
for(i=0; i<k; i++) //把障碍放入数组
{
printf("请输入第%d个障碍的位置:", i+1);
scanf("%d %d", &x, &y);
map[x][y] = 1; //将指定位置设置为障碍
}
printf("地图制作完成!");
return 0;
}
### 回答2:
下面是用C语言编写的根据用户输入的行数和列数制作地图,并在其中随机放置k个障碍的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void generateMap(int n, int m, int k, int map[][m]) {
srand(time(NULL)); // 初始化随机数种子
// 先将地图全部设置为0,表示无障碍
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
map[i][j] = 0;
}
}
// 随机放置k个障碍
for (int i = 0; i < k; i++) {
int row = rand() % n; // 随机行索引
int col = rand() % m; // 随机列索引
map[row][col] = 1; // 将障碍设置为1
}
}
int main() {
int n, m, k;
printf("请输入地图行数:");
scanf("%d", &n);
printf("请输入地图列数:");
scanf("%d", &m);
printf("请输入障碍数:");
scanf("%d", &k);
int map[n][m];
generateMap(n, m, k, map);
// 打印地图
printf("生成的地图:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", map[i][j]);
}
printf("\n");
}
return 0;
}
```
用户可以按照提示输入地图的行数、列数和障碍数,代码会根据用户输入的数据生成对应的地图,并将地图打印出来。其中,0表示无障碍,1表示有障碍。
根据用户输入的行数和列数用C语言制作一张n*m含有k个障碍的地图,并放在数组中,写出代码
### 回答1:
我提出的具体代码如下:
int map[n][m];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
map[i][j]=0;
}
}
for(int i=0;i<k;i++){
int x=rand()%n; //随机生成行号
int y=rand()%m; //随机生成列号
if(map[x][y]==0){
map[x][y]=1; //障碍标记为1
}
else{
i--; //重新生成障碍
}
}
### 回答2:
您好,以下是一种用C语言制作一张含有障碍的地图的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
void createMap(int n, int m, int k, int map[][m]) {
// 初始化地图,将所有位置设为0表示空地
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
map[i][j] = 0;
}
}
// 随机生成k个障碍物的位置
for(int i = 0; i < k; i++) {
int row = rand() % n; // 随机生成行坐标
int col = rand() % m; // 随机生成列坐标
map[row][col] = 1; // 设为1表示有障碍物
}
}
int main() {
int n, m, k;
printf("请输入地图的行数:");
scanf("%d", &n);
printf("请输入地图的列数:");
scanf("%d", &m);
printf("请输入地图中障碍物的个数:");
scanf("%d", &k);
int map[n][m]; // 定义n*m的地图数组
createMap(n, m, k, map); // 创建地图
// 打印地图
printf("地图如下:\n");
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
printf("%d ", map[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码首先定义了一个createMap函数,该函数根据输入的行数n、列数m和障碍物个数k,在地图数组map中随机生成k个障碍物的位置,并将其设为1。
然后在主函数中,根据用户输入的行数、列数和障碍物个数,创建一个合适大小的地图数组map,并调用createMap函数来生成地图。
最后,程序会打印生成的地图,其中0表示空地,1表示障碍物。
希望对您有帮助!
### 回答3:
以下是根据用户输入的行数和列数用C语言制作一张n*m含有k个障碍的地图,并放在数组中的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void createMap(int n, int m, int k, char map[][m]) {
srand(time(NULL));
int i, j;
// 初始化地图为全空
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
map[i][j] = '.';
}
}
// 添加障碍
while (k > 0) {
i = rand() % n;
j = rand() % m;
if (map[i][j] == '.') {
map[i][j] = '#';
k--;
}
}
}
int main() {
int n, m, k;
printf("请输入地图的行数和列数(以空格分隔):");
scanf("%d %d", &n, &m);
printf("请输入地图中的障碍数量:");
scanf("%d", &k);
char map[n][m];
createMap(n, m, k, map);
printf("生成的地图为:\n");
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
printf("%c ", map[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码首先通过`scanf`函数获取用户输入的行数、列数和障碍数量。然后定义一个`char`类型的二维数组`map`来表示地图,并调用`createMap`函数生成地图。`createMap`函数使用`rand`函数生成随机数来确定障碍的位置,并将地图上的障碍用`'#'`表示。最后,在`main`函数中通过两个嵌套的循环打印出生成的地图。