0

我的任务是:编写一个程序,要求用户以任意顺序输入数字 1-16,然后以 4 x 4 的排列显示这些数字。我的程序编译并运行,但是当它运行时,它显示:

num2 num5 num 7 num9
num3 num16 num15 num14
num4 num6 num8 num10
num12 num11 num 13 num1

代替:

15 16 2 1
3 5 7 9
6 8 10 11
13 12 14 4

我的代码是:

#include <stdio.h>

int main (void)

{
int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16;

printf ( "Enter number 1-16 in any order: ");

scanf ( "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &num1, &num2, &num3, &num4, &num5, &num6, &num7, &num8, &num9, &num10, &num11, &num12, &num13, &num14, &num15, &num16);

printf ( "%d%d%d%d\t%d%d%d%d\t%d%d%d%d\t%d%d%d%d",num1,num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16);

return 0;
}

我究竟做错了什么?吨

我必须将它与简单的函数一起使用,而不是与数组和循环一起使用。

我必须找到行/对角线/列的总和。

4

4 回答 4

0

使用这样的东西

printf ( "%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n%d %d %d %d",num1,num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16);

您正在使用\t用于水平间距的,使用\n它,它将带您到下一行...输出 1 位数字将是这样的

5 6 7 8
8 9 0 1
1 2 3 4

现在使用它并将其扩展为超过 1 位输入......希望它有帮助!

于 2013-07-22T08:18:12.930 回答
0

我已经使用这个站点编译并运行了程序,做了一些小的改动,得到了这个: 在此处输入图像描述

工作得很好

我所做的唯一改变是

printf ( "\n%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n%d %d %d %d",num1,num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16);
于 2013-07-22T08:19:28.920 回答
0

由于问题的第一部分已经解决,我只是添加了 row/col/diag sum 位,您可以这样做:

int sum_row1 = (num1 + num2 + num3 + num4);
int sum_row2 = (num5 + num6 + num7 + num8);

int sum_col1 = (num1 + num5 + num9 + num13);
int sum_col2 = (num2 + num6 + num10 + num14);

在阅读完数字并在适当的位置添加到 printf 语句后执行此操作。

我没有包括对角线,因为我不确定你想要什么,但我想你看到了大致的想法。

于 2013-07-22T08:25:18.427 回答
0

我编译并运行了您的应用程序,它在数字之前没有显示任何“num”。事实上,如果您只使用 %d 打印数字,我无法理解如何获得该输出。

我只是用\n(换行符)替换\t(制表符空间)。它应该按您的预期工作。

于 2013-07-22T08:21:10.407 回答