手记

while循环中存在printf函数时,回车对循环的影响。

  1. while循环中存在printf函数时。

    如以下代码:

#include <stdio.h>

int main()
{
    char ch;
    int count = 0;

    while ((ch = getchar ()) != '|')
    {
                count++;
                printf("Count is :%d.The character is %c.\n", 
count, ch);

    }
    return 0;
}

这个文件目的是输出输入字符的个数。
下面我们编译,执行这个文件:
输入:abc【回车】
下面是输出结果:
count is :1.The character is a.
count is :2.The character is b.
count is :3.The character is c.
count is :4.The character is [空格]
.
_(这个时候光标挪到下一行等到输入,循环还在继续)
![图片描述][1]

可见,在含printf的while循环中,如果输入了【回车】(回车不是结束循环的标志)时候,程序会读取输入的abc【回车】接着执行循环里的printf函数。此时循环还未结束,printf输出后仍等待输入。
我本以为程序会这样执行:abc【回车】另起一行继续等我们输入,直到输入结束循环的符号,然后再依次执行printf函数。

  1. while循环中没有printf函数时。
    如以下代码:
    
    #include <stdio.h>

int main()
{
char ch;
int count = 0;

while ((ch = getchar ()) != '|')
{
            count++;
}
printf("Count is :%d.\n", count);
return 0;

}


下面我们编译,执行这个文件:
输入:abc【回车】此时屏幕上没有任何输出结果,而是并另起一行等带我们继续输入,直到我们输入结束循环符号:‘|’
![图片描述][2]
重新输入:
abc【回车】
|
后程序直接结束,如下:
![图片描述][3]

  [1]: http://img.mukewang.com/5959a9080001181f02810159.png
  [2]: http://img.mukewang.com/5959a88800016ed303700145.png
  [3]: http://img.mukewang.com/5959a9f90001606003050118.png
1人推荐
随时随地看视频
慕课网APP