选择数组中的某个字符

时间:2016-10-31 12:06:34

标签: c arrays

如何在2d数组中选择某个字符并在打印输出时显示?

例如:

int x,y;
char box[4][4];

for(x=0;x<2;x++)
{
    for(y=0;y<2;y++)
    {
        box[x][y]='x';
        printf("%c",box[x][y]);
    }

    printf("\n");
}

当选择x中的一个时,屏幕的输出将为此,字符顶部和底部的-表示该字符已被选中。

enter image description here

2 个答案:

答案 0 :(得分:0)

如果选择一个字符,就意味着在字符的上方和下方打印连字符(-),那么您必须为数组的每个元素计算连字符位置的一些公式。

示例:

Line 1:
Line 2: | x | | x | | x |
Line 3:
Line 4: | x | | x | | x |
Line 5:
Line 6: | x | | x | | x |
Line 7:

现在,您可以注意到,每个方框前面都有一个空格,并且在连字符的每个方框之间插入一个空白行。

每个元素[i,j]位于[Line i*2, Col (j-1)*6+4]

位置

让我们说你希望&#34;选择&#34;元素[i,j],您需要在位置[Line (i*2)-1, Col (j-1)*6+4][Line (i*2)+1, Col (j-1)*6+4]上打印连字符。

要选择[2,3],请在位置[3,16][5,16]上添加连字符:

Line 1:
Line 2: | x | | x | | x |
Line 3:               -
Line 4: | x | | x | | x |
Line 5:               -
Line 6: | x | | x | | x |
Line 7:

您可以使用各种值代替ij,看看它是如何运作的。

要转到特定位置,您可以使用换行符和空格的组合。你甚至可以打印3个连字符,以便更清晰!

这只是为了给你一个想法。对于程序使用的特定格式,您可以在上述方法中轻松更改一个或两个值。

答案 1 :(得分:0)

您可以尝试这样的事情:

#include <stdio.h>
#include <stdlib.h>

#define ROWS 9
#define COLS 9

int
main(void) {
    int x, y, row, column;
    char box[ROWS][COLS];

    printf("Enter row of box(1-4): ");
    if (scanf("%d", &row) != 1) {
        printf("Invalid input\n");
        exit(EXIT_FAILURE);
    }

    printf("Enter column of box(1-4): ");
    if (scanf("%d", &column) != 1) {
        printf("Invalid input\n");
        exit(EXIT_FAILURE);
    }

    for (x = 0; x < ROWS; x++) {
        for (y = 0; y<COLS; y++) {
            if (x % 2 == 0) {
                box[x][y] = ' ';
            } else {
                box[x][y] = 'x';
            }
        }
    }

    for (x = 1; x < ROWS; x+=2) {
        for (y = 0; y < COLS; y++) {
            if (x == (2*row-1) && y == column - 1) {
                box[x-1][y] = '-';
                box[x+1][y] = '-';
            }
        }
    }


    for (x = 0; x < ROWS; x++) {
        for (y = 0; y < COLS; y++) {
            if (x % 2 == 0) {
                printf(" %c ", box[x][y]);
            } else {
                printf("|%c|", box[x][y]);
            }
        }
        printf("\n");
    }

    return 0;
}