c - 如何在C中将数组作为输入?
问题描述
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
#define ROW 10
#define COL 10
char grid[ROW][COL+1] =
{
"--IHH---I-",
"-H--------",
"----------",
"----H-----",
"----IH----",
"----H-----",
"----H-----",
"-H--------",
"---------I",
"-HI--H---I",
};
void nextState() {
char tmpGrid[SIZE][SIZE+1];
int i , j;
for(i=0; i<SIZE; i++) {
for(j=0; j<SIZE; j++) {
tmpGrid[i][j] = grid[i][j];
}
}
for(i=0; i<SIZE; i++) {
for(j=0; j<SIZE; j++) {
if(tmpGrid[i][j] == 'I') {
if(i > 0 && tmpGrid[i-1][j] != '-') {
grid[i-1][j] = 'I';
}
if(j > 0 && tmpGrid[i][j-1] != '-') {
grid[i][j-1] = 'I';
}
if(i < (SIZE - 1) && tmpGrid[i+1][j] != '-') {
grid[i+1][j] = 'I';
}
if(j < (SIZE - 1) && tmpGrid[i][j+1] != '-') {
grid[i][j+1] = 'I';
}
}
}
}
}
void printGrid() {
int i , j;
for(i=0; i<SIZE; i++) {
for(j=0; j<SIZE; j++) {
printf("%c ", grid[i][j]);
}
printf("\n");
}
printf("\n\n");
}
int main() {
int n,sayac;
sayac = 0;
scanf("%d", &n);
while(sayac != n) {
nextState();
sayac++;
}
printGrid();
return 0;
}
我试图提供一个字符串数组作为输入,以使其成为一个算法,其中“H”(健康)在每次迭代中都被“I”(感染)感染,但不知道该怎么做。我怎样才能复制粘贴一个数组,例如;
--IHH---I-
-H--------
----------
----H-----
----IH----
----H-----
----H-----
-H--------
---------I
-HI--H---I
谢谢!
解决方案
要读取数组,您需要创建一个循环并扫描值 -
int i, j;
for(i = 0; i < ROW; i++) {
for(j = 0; j < COL + 1; j++) {
char c;
scanf("%c",&c);
if(c != '\n')
grid[i][j] = c;
else
j--;
}
}
控制循环变量是个坏主意。通常,您只需传递整个数组而无需任何换行符。但既然你想要,你可以使用它。我建议在没有任何换行符的情况下发送整个数组,并删除换行符的 else 部分。
我将输入传递为并得到与输出相同的结果。
HHHH
HHHH
HHHH
推荐阅读
- javascript - 使用 readline-sync (Javascript) 时定时器不工作
- java - Java grails:无法将具有类“java.util.Date”的对象“Mon Feb 12 00:00:00 PKT 2018”转换为类“org.joda.time.LocalDate”
- html - Bootstrap 导航栏下拉菜单不起作用。注销用户
- node.js - 为什么我无法在反应中安装所有依赖项?
- javascript - 为什么扩展的脚本不适用于某些页面和某些元素?
- c# - 用于 Shopify Admin API 集成速率限制问题的 c# 服务
- git - 如何终止当前正在运行的 git 进程?
- postgresql - Ansible playbook 使用 shell 命令更改用户
- keras - Keras课程学习——改变shuffle方法
- php - 如果我尝试获取不存在的密钥,PHP getallheaders() 将自动发送响应