如何在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
中的一个时,屏幕的输出将为此,字符顶部和底部的-
表示该字符已被选中。
答案 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:
您可以使用各种值代替i
和j
,看看它是如何运作的。
要转到特定位置,您可以使用换行符和空格的组合。你甚至可以打印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;
}