你好,我使用的是TurboC语言...我只是有一些疑问,我在一本书中找到了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 */
}提前感谢!
发布于 2011-05-14 16:55:38
假设您的用户键入"abc“并按enter,因此输入缓冲区包含”a“、”b“、”c“、”/r“(最后一个字符表示返回)。缓冲区中有4个字符,但您的用户实际上只输入了3个字符(其中一个是返回的),因此您需要从计数中减去1。或者,从-1而不是0开始计数。
你可以这样想--这个循环要经过多少次?
关于第二点,将ch初始化为什么并不重要,只要不是'\r‘即可。这意味着您将至少进入循环一次,并读取字符。
发布于 2011-05-14 16:56:22
int count = -1; \* why it was initialized as -1? *\在我看来,它就像是在计算一行中的字符,不包括最后的“回车”字符。这就是为什么它从-1开始--这样'\r‘字符就不会成为计数的一部分。
ch = 'a'; \* why it was initialized as 'a'? *\这样,while循环中的条件最初将为真。只要它不是'\r',就可以选择任何东西,因为条件将立即为false,并且不会读取任何字符。
发布于 2015-11-07 18:34:32
在第一个问题中,可以以任何方式启动count value。不强制只以-1开头。
他们这样做只是为了自己的方便。我们只想从1或0开始计数。同样的公式也将应用于字母表。句子和单词将是字母表的组合。为了以特定的顺序开始,我们应该像这样计算而不会产生任何混乱。
如果我们输入任何短语或其他任何东西,我们需要一个像\0这样的终止变量,因为它们不存在于字母表中。为了计算频率,我们需要增加计数。
https://stackoverflow.com/questions/6000757
复制相似问题