涡轮增压器C问题
你好,我正在使用Turbo C。。。我只是有一些疑问,我在一本书中找到了TC代码,但我对给出的澄清不满意。代码如下:涡轮增压器C问题,c,turbo-c,C,Turbo C,你好,我正在使用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 initializ
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 */
}
提前谢谢 假设用户键入“abc”并按enter键,则输入缓冲区包含“a”、“b”、“c”、“r”(最后一个字符表示返回)。缓冲区中有4个字符,但是您的用户实际上只输入了3个字符(一个是return),因此您需要从计数中减去一个。或者,也可以从-1而不是0开始计数 你可以这样想——这个循环要经过多少次
- 计数从-1开始
- 第一次:从字符串中读取“a”。再绕一圈,因为它不是'/r'。计数现在是0
- 第二次:从字符串中读取“b”。再绕一圈,因为它不是'/r'。计数现在是1
- 第三次:从字符串中读取“c”。再绕一圈,因为它不是'/r'。计数现在是2
- 第四次:从字符串中读取“/r”,然后停止。计数现在是3
在第二点上,ch初始化为什么并不重要,只要它不是'\r'。这意味着您将进入循环至少一次,并读入字符。假设您的用户键入“abc”并按enter键,则输入缓冲区包含“a”、“b”、“c”和“/r”(最后一个字符表示返回)。缓冲区中有4个字符,但是您的用户实际上只输入了3个字符(一个是return),因此您需要从计数中减去一个。或者,也可以从-1而不是0开始计数
int count = -1; \* why it was initialized as -1? *\
你可以这样想——这个循环要经过多少次
- 计数从-1开始
- 第一次:从字符串中读取“a”。再绕一圈,因为它不是'/r'。计数现在是0
- 第二次:从字符串中读取“b”。再绕一圈,因为它不是'/r'。计数现在是1
- 第三次:从字符串中读取“c”。再绕一圈,因为它不是'/r'。计数现在是2
- 第四次:从字符串中读取“/r”,然后停止。计数现在是3
int count = -1; \* why it was initialized as -1? *\
在我看来,这就像是在计算一行中的字符,不包括最后的“回车”字符。这就是为什么它从-1-开始,这样“\r”字符就不会成为计数的一部分
ch = 'a'; \* why it was initialized as 'a'? *\
正因为如此,while
循环中的条件最初是真的。只要不是“\r”,就可以选择任何内容,因为条件会立即为false,并且不会读取任何字符
在我看来,这就像是在计算一行中的字符,不包括最后的“回车”字符。这就是为什么它从-1-开始,这样“\r”字符就不会成为计数的一部分
ch = 'a'; \* why it was initialized as 'a'? *\
正因为如此,
while
循环中的条件最初是真的。只要不是'\r',就可以选择任何内容,因为条件会立即为false,并且不会读取任何字符。在第一个问题中,无论如何都可以在中启动计数值。仅以-1开头不是强制性的
他们这样做只是为了自己的方便。我们只想从1或0开始数数。同样的公式也适用于字母表。句子和单词将是字母表的组合。为了以一个特定的顺序开始,我们应该这样计算,没有任何混乱
如果我们键入任何短语或任何其他内容,我们需要一个类似\0的终止变量,因为它们在字母表中不存在。为了计算频率,我们需要增加计数 在第一个问题中,无论如何都可以启动计数值。仅以-1开头不是强制性的 他们这样做只是为了自己的方便。我们只想从1或0开始数数。同样的公式也适用于字母表。句子和单词将是字母表的组合。为了以一个特定的顺序开始,我们应该这样计算,没有任何混乱
如果我们键入任何短语或任何其他内容,我们需要一个类似\0的终止变量,因为它们在字母表中不存在。为了计算频率,我们需要增加计数 那本书中的代码非常糟糕。是哪一个?出于好奇;您在哪个操作系统上运行Turbo C?我上一次使用Turbo C是在80年代。:)您是否尝试过运行该程序,并记下键入1、2、3或n个字符时的
字符计数是多少?请注意,\*
不是注释。C中的多行注释以正斜杠开头,如/*
。另外,您的评论我对给出的澄清不满意
实际上没有传达任何意图。你的问题是什么?顺便说一句,这个难看的ch='a'
作业就是为什么存在而循环存在的原因。我的好奇心很低,但这本书对这段代码有什么解释呢?你为什么不满意呢?那本书中的代码非常糟糕。是哪一个?出于好奇;您在哪个操作系统上运行Turbo C?我上一次使用Turbo C是在80年代。:)您是否尝试过运行该程序,并记下键入1、2、3或n个字符时的字符计数是多少?请注意,\*
不是注释。C中的多行注释以正斜杠开头,如/*
。另外,您的评论我对给出的澄清不满意
实际上没有传达任何意图。你的问题是什么?顺便说一句,这个难看的ch='a'
作业就是为什么存在而循环存在的原因。我的好奇心很低,但这本书对这段代码有什么解释呢?你为什么不满意?这对我很有帮助。。。谢谢你!这对我帮助很大。。。谢谢你!