【发布时间】:2014-12-23 16:24:42
【问题描述】:
我正在学习 C,并尝试从输入中的一对数字(图形的边)打印一个布尔矩阵 (5 x 5)。如果矩阵中元素的位置有对应的边,则为“1”,否则为“0”。例如:
我输入:1 2, 1 4, 2 4, 2 3, 3 5
我希望它位于 (1,2) 和 (2,1) 位置; (1,4) 和 (4,1); (2,4) 和 (4,2); (2,3) 和 (3,2), (3,5) 和 (5,3) 它打印 1,但其他所有打印 0。
这是我能写的,但实际上并没有用:
(我研究过多维数组,但我看不出它们是否对这种情况有用。)
int i, j;
int array1[5], array2[5];
for (i = 0; i < 5; ++i)
{
printf("Insert the edges %d of the graph\n", i);
scanf("%d %d", &array1[i], &array2[i]);
}
printf("{");
for (i = 0; i < 5; ++i)
printf("(%d,%d)", array1[i], array2[i]);
printf("}\n");
for (i = 0; i < 5; ++i) {
for (j = 0; j < 5; ++j)
if (((array1[i] == i+1) && (array2[i] == j+1)) || ((array1[i] == j+1) && (array2[i] == i+1))) printf("%d ", 1);
else printf("%d ", 0);
printf("\n"); }
我应该看到什么(使用这些示例输入):
http://imageshack.com/a/img537/9986/jx5roa.png
我得到了什么:
http://imageshack.com/a/img537/6341/kroVQK.png
感谢您的宝贵时间!
【问题讨论】:
-
你能发布一些你迄今为止尝试过的示例输出吗?也就是说,你能澄清一下它在哪些方面不起作用吗?