c - 在 C 中每行打印双数组的 5 个元素时出现问题

标签 c arrays formatting printf output

我一直在为学校做一项作业,基本上我们正在创建 2 个随机 double 组,然后使用 3 种不同的算法对它们进行排序并打印结果。输出需要每行打印 5 个元素。

我有这个代码:

    //print sorted arrayB
for (i = 0; i < size; i++)
{
    printf ("%.1lf  ", arrayB[i]);
    if (i % 5 == 0 && i > 0)
    {
        printf ("\n");
    }
}

其中所有变量都是在排序之前定义的,我的输出每次都像这样:

1.0  2.0  3.0  4.0  5.0  6.0
7.0  8.0  9.0  10.0 11.0
12.0 13.0 14.0 15.0 16.0
17.0 18.0 19.0 20.0 21.0
etc...

我不明白为什么它在顶行打印 6 个元素,而在其余行打印 5 个元素。非常感谢任何帮助!

最佳答案

只需为您的条件手写评估即可:

if (i % 5 == 0 && i > 0)

i  result
0  false
1  false
2  false
3  false
4  false
5  true
6  false

现在我们可以看到它有 5 次为 false,然后为 true,这使得它打印换行符,但只有在打印数字之后!

所以你需要稍微重新安排你的逻辑,但条件是正确的。

关于c - 在 C 中每行打印双数组的 5 个元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46136910/

相关文章:

c - 自动添加转义字符

c - 在 C 中,如何删除 char 数组中相同且连续的行?

java - 整数数组 : fill with all combinations of numbers from one to a give number

c++ - matlab和c/cpp之间的fwrite和fread

c - <<= 和 |= 的含义

java - 移动值以清除数组中的空间隙

java - 在 Java 中序列化 Longs 数组的最紧凑方法

windows - 在 Windows 批处理脚本中格式化日期和时间

C++ 对长度说明符的支持

vba - 如何在条件格式中适应非常长的条件