【发布时间】:2014-06-04 10:09:49
【问题描述】:
我仍在学习 C 并且可以使用一些帮助。我正在尝试编写一个程序来搜索二维字符数组。并让它告诉您搜索的 char 与 (x y) 坐标中的 2D 数组相关的点。我的问题是程序没有输出正确的(x y)坐标。 现在我认为程序应该为 B 输出 (1,0),(1,1), (1,2), (1,3), (1,4)。我还计划调整坐标以便它会计数为 1 而不是 0,即 B 输出应为 (2,1),(2,2), (2,3), (2,4), (2,5)。到目前为止,唯一正确打印的坐标是 (1,1),我不确定为什么我的代码不起作用。我能做些什么来解决这个问题?
完整代码:
#define _CRT_SECURE_NO_WARNINGS
#define SIZE 5
#include <stdio.h>
int main()
{
int c, count = 0;
int x[SIZE] = { 0 };
int y[SIZE] = { 0 };
int j, i;
char array[SIZE][SIZE] = { { 0 }, { 0 } };
char array2[SIZE] = { 'A', 'B', 'C', 'D', 'S' };
char search;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
array[i][j] = array2[j];
}
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%c ", array[i][j]);
}
printf(" \n");
}
printf("What letter are you lookiong for? ");
scanf("%c", &search);
for (j = 0; j < 5; j++)
{
for (c = 0; c < 5; c++)
{
if (array[j][c] == search)
{
y[j] = j;
x[c] = c;
count++;
}
}
}
if (count == 0)
printf("%c is not present in array.\n", search);
else
{
for (i = 0; i < count; i++)
{
printf("%c is present at (%d , %d) times in array.\n", search, x[i], y[i]);
}
}
return 0;
}
【问题讨论】:
-
文本窗口的屏幕截图没用。每次你发布一个上帝杀死一只熊猫。你不能 grep 截图,你不能区分它们,你不能在其中选择文本,而且它们会浪费 my 带宽。请不要发布这些内容。
-
请注意,在 C 语言中,您使用
array[row][column]而您的首选答案似乎使用 Array(Column,Row)(或 A(C,R))表示法。这是一个表示问题,但如果您使用 A(C,R) 表示法,您可能会感到困惑。至少,您需要注意这种行为。 -
@n.m.我为什么要关心它是否会浪费您的带宽?如果我们不打算发布屏幕截图,那么为什么这个网站会有他们的选项?请不要发布刻薄的东西。
-
我多么愚蠢。你真的不应该关心那些想要帮助你的人的想法。使用它们并丢弃它们。为他们服务。
-
@m.n 我看不到你在下面或上面的答案。我感谢所有帮助我并考虑到他们所说的话的人。你所做的一切都是抱怨。
标签: c arrays multidimensional-array