当我解决一个问题时,指出给定任何正整数,我需要设计一个程序,以便在 2 个连续数字之间创建一个空格。2小时无济于事,我决定在线谷歌以获得一些提示。我获得了以下代码,它运行良好。但是,我不明白代码是如何工作的,尤其是 if。如果输入是 ,我看不到条件是如何满足的12345
。
int main()
{
char b; //stores the digit
cin >> b; //get single character from user input
while (b != '\0') //while not at null terminator from user pressing enter
{
if (b >= '0' && b <= '9') //if entered character is a digit
{
cout << b << " "; //print character with a space
}
cin >> b; //get next character to check if it is null terminator or another digit
}
}
当用户键入任何内容时,程序会将其存储在缓冲区中(将缓冲区视为计算机可以访问的字符串)。
当程序到达 时cin >> b;
,它检查缓冲区。由于用户尚未输入任何内容,因此缓冲区为空。所以程序等待用户输入一些东西。用户键入12345[enter]
. 这是放在缓冲区中,cin 使用缓冲区来填充cin >> b;
。
这是做什么的?b
是一个字符,一个单一的 ASCII 字符。所以b
需要一个字符,并cin
提供缓冲区中的第一个字符,这里是1
. (留2345[enter]
在缓冲区中)。
然后程序评估条件(b >= '0' && b <= '9')
。这是看到,这里重要的'1'
和'9'
不是int
,他们是人物呢!所以程序会比较这些字符的数值,结果所有的数字字符都是按顺序排列的,中间没有其他字符。因此,如果b
包含数字字符,则条件为真,因此我们可以b
使用以下空格进行打印。然后程序将要求缓冲区中的下一个字符,'2'
在我们的示例中。所以b
只会一个一个检查字符,而不是一次检查所有条目!
程序如何停止?正如评论中所解释的,while 循环在 时结束b= '\0'
。'\0'
是一个特殊字符,一个空终止符,用于字符串的结尾。所以这个程序在 while 循环到达用户输入的末尾时结束。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句