每当我运行程序时,它都没有开始打印星号,直到换行后,为什么? 这是我的代码:
int main()
{
int createRow = 0,
createCol;
while (createRow <= 5)
{
while (createCol <= ((createRow * 2) - 1))
{
printf("*");
createCol++;
}
createCol = 1;
createRow++;
printf("\n");
}
return 0;
}
输出:
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
如您所见,就在第一个星号之前,有一个换行符。我该如何解决这个问题?
答案 0 :(得分:3)
createCol
未初始化并在分配值之前使用。
进行以下更改
int createRow = 1,
createCol = 0;
while (createRow <= 5)
{
while (createCol <= ((createRow * 2)-1))
{
//Loop body
}
createCol = 0;
// Rest of the code
}
答案 1 :(得分:2)
您可以通过更改
将其删除printf("\n");
到
createRow == 1 ?: printf("\n");
这与以下内容相同,但更为简洁,对于知道如何使用ternary operator
的程序员有意义。
if (createRow != 1) {
printf("\n");
}
使用三元运算符时condition ? expression1 : expression2;
表达式不是必需的,但表达式2 是。如果条件为真,则执行Expression1
;如果条件为假,则执行expression2
。