【问题标题】:Coding help for for loopfor循环的编码帮助
【发布时间】:2015-03-30 11:07:02
【问题描述】:
{

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-'0' 是否等于我想要的数字。确实如此。 d 为 4。 所以理论上,我认为这段代码会打印 d 4 次。但实际上,它打印了 30-40 次。 这与任何其他字母相同。它打印了 40 次。另外,计数没有效果。我用 5 初始化它,这显然大于 4。它仍然打印了 40 次。 我没有太多使用 for 循环。我知道这个概念,但我可能犯了一个巨大的 C 语言错误。 这里有什么问题??


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

【问题讨论】:

  • 首先,你错过了int main(void)。这可能会有所帮助。
  • 您如何得出'd'-'0' 产生4 的结论?你能在那个系统中输入 0,1,2,3,4 的序列吗?
  • 我怀疑 “请输入一个字母” 可能存在其他类型的语言错误
  • 一个 ASCII d 是 100,0 是 48,所以'd' - '0' 是 52,而 52 是 字符 4,这可能解释一些事情(假设 ASCII 或基于它的东西)。
  • 如果你想要 'd' to = 4,你需要 ch - ('a' - 1)

标签: c for-loop char


【解决方案1】:

好吧,基于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'

【讨论】:

    【解决方案2】:

    'd' - '0' 不是 4。如果你参考 ASCII 图表,你会看到十进制的 'd' 的值为 100,十进制的 '0' 的值为 48,所以我希望内部循环重复 100-48 = 52 次。

    由于您执行了 putchar,它向输出发送了一个十进制值为 52 的字节,恰好对应于 ASCII 字符“4”。

    请注意,如果您输入的是“4”而不是“d”,您应该会看到它循环了 4 次。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 2011-04-20
      • 2018-07-17
      相关资源
      最近更新 更多