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

-3 c for-loop

我正在尝试打印以下模式:

@@@@@@@@
@@@@@@@
@@@@@@
@@@@@
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个:

@ABCDEFG
ABCDEFG
BCDEFG
CDEFG
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么.我将不胜感激任何反馈或指示.

#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;
}
Run Code Online (Sandbox Code Playgroud)

Ril*_*ley 5

+运营商不工作,你觉得它的方式.@转换为它的ASCII值(64)然后添加row.如果row2,你说:打印coresponds这是数(64 + 2)的字符A.

这是一个ASCII表

我会将内部循环更改为:

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


j12*_*567 5

你为什么要把for这个角色复杂化呢?它可以很简单

for(int col = row; col < CHARS; col++)
    printf("%c", '@');
Run Code Online (Sandbox Code Playgroud)

  • 或者`printf("@");`甚至`putchar('@');`当打印的字符是常量时,`%c`转换是没有意义的. (2认同)