首页 新闻 搜索 专区 学院

c语言问题求解

0
[待解决问题]

include <stdio.h>

include <stdlib.h>

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这样效果的

c#
LoaF1997的主页 LoaF1997 | 菜鸟二级 | 园豆:202
提问于:2019-03-20 22:39
< >
分享
所有回答(2)
0

char c = 'F';
这条语句位于第一个for循环内,当内层循环输出之后,这条语句又会被执行一次

徐大帅i | 园豆:177 (初学一级) | 2019-03-21 01:02
1
这里 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就不是英文大写字母了。

Shendu.CC | 园豆:1914 (小虾三级) | 2019-03-21 11:43

我一直不明白的事是这个内层循环不应该是:F E D C B A吗,为什么是F FE...FEDCBA
求解答

支持(0) 反对(0) LoaF1997 | 园豆:202 (菜鸟二级) | 2019-03-21 12:12

@LoaF1997: char c 是局部变量,它的作用域只在一个内存循环中。如果你把char c 定义在第一层for循环的外面,那么结果就不一样了。

而且你的内存循环凭什么每次只打印一次?j<i+1 i是每次都增加的。

支持(0) 反对(0) Shendu.CC | 园豆:1914 (小虾三级) | 2019-03-21 12:20

@Shendu.CC: 哇 大佬好细心啊!

支持(0) 反对(0) 古宇 | 园豆:276 (菜鸟二级) | 2019-03-21 16:57

@Shendu.CC: 明白了,谢谢大佬

支持(0) 反对(0) LoaF1997 | 园豆:202 (菜鸟二级) | 2019-03-21 19:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册