int main(void)
{
for(int i = 0; i < 6; i++)
{
char c = 'F';
for(int j = 0; j < i + 1; j++)
{
printf("%c", c - j);
}
printf("\n");
}
return 0;
}
这里 char c = 'F';
for(int j = 0; j < i + 1; j++)
{
printf("%c", c - j);
}为什么可以做到F FE..FEDCBA这样效果的
char c = 'F';
这条语句位于第一个for循环内,当内层循环输出之后,这条语句又会被执行一次
这里 char c = 'F';
for(int j = 0; j < i + 1; j++)
{
printf("%c", c - j);
}
c-j
实际上运算的ASCII码值,F
的ascii码值是102,那么c-0
就是自身,c-1
就是101 对应的字符是E
,可以参照ACSII表。
而第一层循环的i是控制输出的字符个数,当i=0时,只输出F
I =2时,输出两个FE
最多输出6个,因为F的ascii码减7就不是英文大写字母了。
我一直不明白的事是这个内层循环不应该是:F E D C B A吗,为什么是F FE...FEDCBA
求解答
@LoaF1997: char c 是局部变量,它的作用域只在一个内存循环中。如果你把char c 定义在第一层for循环的外面,那么结果就不一样了。
而且你的内存循环凭什么每次只打印一次?j<i+1
i是每次都增加的。
@Shendu.CC: 哇 大佬好细心啊!
@Shendu.CC: 明白了,谢谢大佬