C语言 for 循环的编码帮助


{
char ch;
int count, lineCount;
count = 0;
lineCount = 0;
printf("Please enter one alphabetn");
for (lineCount = 0; (ch = getchar()) != 'n'; lineCount++)
{
    putchar(ch-'0');
        printf("n");
    for (count = 0; count <= (ch - '0'); count++)
        printf("%c n", ch);
}

return 0;
}

这是我到目前为止的代码。我以后需要做更多的事情,但我只是一步一步来。所以我会输入一封信。例如,d。我把那个putchar放在那里,以检查ch-'0'是否等于我想要的数字。确实如此。D 出来到 4。所以从理论上讲,我认为这段代码会打印 4 次。但实际上,它打印了 30-40 次。任何其他字母都是一样的。它打印了40次。另外,计数不起作用。我用 5 初始化它,这显然大于 4。它仍然打印出 40 次。我不太习惯循环。我知道这个概念,但我可能犯了一个巨大的C语言错误。这是怎么回事??


哈哈好吧,我只复制了重要的部分。我有主要的。4 不是"d"-"0"的整数值吗?这就是它在那个 putchar 语句中打印出来的内容,我实际上尝试将其更改为 int,但它没有区别。好吧,根本不是说你错了。我显然是错的那个。但那是我背后的想法。请您解释一下它背后的物流以及我应该做什么吗?

好吧,根据Please enter one alphabet,您可以将for循环减少到

for (lineCount = 0; (ch = getchar()) != 'n'; lineCount++)
{
        putchar(ch);
        printf("n");
        printf("From Printf: %c n", ch);
}

备注:ch - '0'通常用于获取字符数字的整数值,'0''9'

'd' - '0' 不是 4。如果您参考 ASCII 图表,您将看到十进制中"d"的值为 100,十进制中"0"的值为 48,因此我希望内部循环重复 100-48 = 52 次。

由于您执行了 putchar,它将十进制值为 52 的字节发送到输出,该字节恰好对应于 ASCII 字符"4"。

请注意,如果您键入"4"

而不是"d",您应该会看到它循环 4 次。

基本问题是定量值与给定字符集中的值表示之间的关系。

最新更新