我想知道,为什么输出中指定的位置会打印空行。 它对我没有意义,因为这意味着即使测试条件为假,循环也会继续。 (这是“C Primer Plus”第6章的第9个回答问题)
#include <stdio.h>
int main(void)
{
int n, m;
n = 30;
while (++n <= 33)
printf("%d|",n);
n = 30;
do
printf("%d|",n);
while (++n <= 33);
printf("\n***\n");
for (n = 1; n*n < 200; n += 4)
printf("%d\n", n); // Why will this print an empty line at the end?
printf("\n***\n");
for (n = 2, m = 6; n < m; n *= 2, m+= 2)
printf("%d %d\n", n, m); // and this
printf("\n***\n");
for (n = 5; n > 0; n--)
{
for (m = 0; m <= n; m++)
printf("=");
printf("\n");
}
return 0;
}
产生输出:
31|32|33|30|31|32|33|
***
1
5
9
13
(<= Why is there an empty line here?)
***
2 6
4 8
8 10
(<= and here?)
***
======
=====
====
===
==
答案 0 :(得分:1)
这会在数字后面添加一个新行:
printf("%d\n", n);
这会在星号之前添加一个新行:
printf("\n***\n");
如果我理解你,你只想写:
printf("***\n");
答案 1 :(得分:0)
这两行:
printf("%d\n", n);
printf("\n***\n");
在循环的最后一次迭代中减少到
printf("%d\n\n***\n", n);
\n\n
会打印一个空行