首页 > 解决方案 > 如何在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

谢谢!

标签: c

解决方案


要读取数组,您需要创建一个循环并扫描值 -

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

推荐阅读