若输入字符串:abcde<回车>,则以下while循环体将执行 _____ 次. while((ch=getchar())==✀e✀) printf("*");

为什么是0次?
2024-12-13 23:56:41
推荐回答(5个)
回答1:

因为getchar()函数的功能是从标准输入读入一个字符,并且标准输入函数getchar()是行缓冲函数,是带有缓冲区的。

当输入一个字符串“abcde”时,输入被暂存在缓冲区中,直到输入“回车键”才能把所输入的字符录入到内存中,而此时只能录入一个字符,所以录入的是第一个字符'a'了。程序无法进入循环。所以循环次数为0。

扩展资料

getchar是读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码或EOF。

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1。

getche这个函数与前两上类似,功能也相近,都是输入一个字符,返回值同样是输入字符的ASCII码,但不同的是,此函数在输入后立即从控制台取字符,不以回车为结束(带回显)。

参考资料来源:百度百科-getchar

回答2:

因为getchar的本质决定的,也就是说getchar是在回车之后仅仅读取一个字符,也就是仅仅读取了a而已。因为 'a' != 'e' ,所以第一次没有执行,然后没有了其他的字符输入,最重要的是没有回车键的输入,所以不会再读入字符。
参考:http://baike.baidu.com/view/751665.htm

回答3:

不能满足循环条件,即不会进入循环。
因为getchar()函数的功能是从标准输入读入一个字符,并且标准输入函数getchar()是行缓冲函数,带有缓冲区的。当你输入一个字符串“abcde”时,输入被暂存在缓冲区中,直到输入“回车键”才能把所输入的字符录入到内存中,而此时只能录入一个字符,所以录入的是第一个字符'a'了。那当然无法进入循环了。
满意请采纳!

回答4:

你定义的ch 是一个 char 吧? 如果是的话,那么它只能保留一个字符,如果你输入abcde,那么这个ch就等于a, 所以,之后的while()条件不成立,不会执行。

回答5:

这个很简单啊,因为你输入的第一个字符是a,条件为假跳出了循环啊,getchar()得到的是a,跳出了循环。 你想要的效果应该是如下所示吧?
#include

using namespace std;

int main()
{
char ch;
ch=getchar();
while(ch !='e')
{
ch=getchar();
while(ch =='e')
{
printf("*");
ch=getchar();
}
ch=getchar();
}

system("PAUSE");
}