【发布时间】: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)