如何在循环中打印特殊字符?

时间:2016-10-07 16:04:15

标签: c for-loop

我试图打印以下模式:

@@@@@@@@
@@@@@@@
@@@@@@
@@@@@

但是,我得到了这个:

@ABCDEFG
ABCDEFG
BCDEFG
CDEFG

我不确定我做错了什么。我希望得到任何反馈或指导。

#include <stdio.h>
#define ROWS 4
#define CHARS 8

int main(void)
{
    for(int row = 0; row < ROWS; row++)
    {
        for(char ch = ('@' + row); ch < ('@' + CHARS); ch++)
            printf("%c", ch);
        printf("\n");
    }

    return 0;
}

3 个答案:

答案 0 :(得分:5)

+运算符无法按照您的想法运行。 @转换为它的ASCII值(64),然后添加row。当row2时,您说:打印出与A编号相对应的字符(64 + 2)。

Here's an ASCII Table

我会将内部循环更改为:

for(int ch = row; ch < CHARS; ch++) {
    printf("%c", '@');
}
printf("\n");

答案 1 :(得分:5)

为什么让第二个for与该角色复杂化。它可以简单地

for(int col = row; col < CHARS; col++)
    printf("%c", '@');

答案 2 :(得分:0)

将ch更改为'@' printf("%c", '@');