您好我正在使用Turbo C ...我只是有一些疑问,我在一本书中找到了TC代码,但我对给定的澄清不满意。这是代码:
main()
{
int count = -1; /* why it was initialized as -1? */
char ch;
printf("Type in a phrase:\n");
ch = 'a'; /* why it was initialized as 'a'? */
while (ch != '\r') /* perform while ch is not equal to return */
{
ch = getche();
count++; /* increment the count */
}
printf("\nCharacter count is %d", count); /* prints the value of count */
}
提前致谢!
答案 0 :(得分:2)
假设您的用户键入“abc”并按Enter键,因此输入缓冲区包含“a”,“b”,“c”,“/ r”(此最后一个字符表示返回)。缓冲区中有4个字符,但您的用户只输入3(一个是返回),因此您需要从计数中减去一个。或者,或者,将计数开始于-1而不是0。
你可以这样想一想 - 这次循环有多少次?
关于你的第二点,只要它不是'\ r',ch初始化为什么并不重要。这意味着你至少会进入循环一次,然后读入字符。
答案 1 :(得分:2)
int count = -1; \* why it was initialized as -1? *\
向我看,好像它在一行中计算字符,不包括最后的'回车'字符。这就是它从-1开始的原因 - 因此'\ r'字符不会成为计数的一部分。
ch = 'a'; \* why it was initialized as 'a'? *\
恰好,while
循环中的条件最初为真。任何东西都可以被选中,只要它不是'\ r',因为那时条件会立即变为假,并且不会读取任何字符。
答案 2 :(得分:0)
在第一个问题中,无论如何都可以开始计数值。仅以-1开始并非必须。
他们只是为了自己的方便而这样做。我们只想计算1或0的数字。相同的公式将应用于字母表。句子和单词将是字母表的组合。为了以特定的顺序开始,我们应该这样计算,没有任何混淆。
如果我们输入任何短语或其他任何内容,我们需要一个终止变量,如\ 0,因为它们不在字母表中。要计算频率,我们需要增加计数。