我的任务是:编写一个程序,要求用户以任何顺序输入数字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;
}
我做错了什么? Ť
我必须使用简单的函数,而不是数组和循环。
我必须找到行/对角线/列总和。
答案 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编译并运行程序并进行一些小改动并得到了这个:
工作得很好
我所做的唯一改变是
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语句后执行此操作。
我没有包括对角线,因为我不确定你想要什么,但我猜你看到了一般的想法。