for循环的编码帮助

时间:2015-01-30 21:30:29

标签: c for-loop char

{

char ch;
int count, lineCount;
count = 0;
lineCount = 0;

printf("Please enter one alphabet\n");

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 - &#39; 0&#39; 0等于我想要的数字。确实如此。 d出来4。 所以从理论上讲,我认为这段代码会打印4次。但实际上,它打印出来的好30-40次。 它与任何其他字母相同。它打印出好40次。此外,计数没有效果。我用5初始化它,显然大于4.它仍然打印出40次。 我还没有用过很多东西。我知道这个概念,但我可能会犯一个巨大的C语言错误。 这里有什么问题?


好吧,哈哈,我只复制了那些重要的部分。我有主要的。 并且不是&#39; d&#39;的整数值。 - &#39; 0&#39;?这就是putchar语句中打印出的内容,我实际上尝试将其更改为int,但它没有任何区别。好吧,根本不是说你错了。我明显错了。但这是我背后的想法。 拜托,您能解释一下它背后的物流以及我应该做些什么吗?

2 个答案:

答案 0 :(得分:0)

根据Please enter one alphabet,您可以将for循环缩减为

for (lineCount = 0; (ch = getchar()) != '\n'; lineCount++)
{
        putchar(ch);
        printf("\n");

        printf("From Printf: %c \n", ch);
}

注意:ch - '0'通常用于获取 char 数字的整数值,'0''9' }。

答案 1 :(得分:0)

&#39; d&#39; - &#39; 0&#39;不是4.如果您参考ASCII图表,您将看到&#39; d&#39;的值。十进制数为100,&#39; 0&#39;的值为十进制是48,所以我希望内循环重复100-48 = 52次。

由于你做了putchar,它向输出发送了一个十进制值为52的字节,这恰好对应于ASCII字符&#39; 4&#39;。

请注意,如果您输入了&#39; 4&#39;而不是&#39; d,你应该看到它循环4次。

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