我正在尝试打印以下模式:
@@@@@@@@
@@@@@@@
@@@@@@
@@@@@
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)
该+
运营商不工作,你觉得它的方式.@
转换为它的ASCII值(64)然后添加row
.如果row
是2
,你说:打印coresponds这是数(64 + 2)的字符A
.
我会将内部循环更改为:
for(int ch = row; ch < CHARS; ch++) {
printf("%c", '@');
}
printf("\n");
Run Code Online (Sandbox Code Playgroud)
你为什么要把for
这个角色复杂化呢?它可以很简单
for(int col = row; col < CHARS; col++)
printf("%c", '@');
Run Code Online (Sandbox Code Playgroud)