以四乘四的方式排列数字

时间:2013-07-22 08:02:59

标签: c

我的任务是:编写一个程序,要求用户以任何顺序输入数字1-16,然后以4乘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 个答案:

答案 0 :(得分: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位数输入... 希望它有所帮助!!

答案 1 :(得分:0)

我使用this site编译并运行程序并进行一些小改动并得到了这个: enter image description here

工作得很好

我所做的唯一改变是

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);

答案 2 :(得分:0)

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

我只想用 \ n (新行)替换 \ t (标签空间)。它应该像你期望的那样工作。

答案 3 :(得分:0)

由于问题的第一部分已经解决,我只是添加行/列/诊断总和位,你可以这样做:

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语句后执行此操作。

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