出现了不需要的换行符

时间:2015-02-21 19:21:53

标签: c loops random newline

每当我运行程序时,它都没有开始打印星号,直到换行后,为什么? 这是我的代码:

int main()
{
    int createRow = 0,
        createCol;

    while (createRow <= 5)
    {
        while (createCol <= ((createRow * 2) - 1))
        {
            printf("*");
            createCol++;
        }
        createCol = 1;
        createRow++;

        printf("\n");
    }
    return 0;
}

输出:

*
***
*****
*******
*********
***********
*************
***************
*****************
*******************

如您所见,就在第一个星号之前,有一个换行符。我该如何解决这个问题?

2 个答案:

答案 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