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

为什么是0次?... 为什么是0次? 展开
 我来答
SWDgreat
2019-07-11 · TA获得超过8405个赞
知道答主
回答量:1012
采纳率:80%
帮助的人:24.3万
展开全部

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

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

扩展资料

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

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

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

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

匿名用户
推荐于2018-02-26
展开全部
因为getchar的本质决定的,也就是说getchar是在回车之后仅仅读取一个字符,也就是仅仅读取了a而已。因为 'a' != 'e' ,所以第一次没有执行,然后没有了其他的字符输入,最重要的是没有回车键的输入,所以不会再读入字符。
参考:http://baike.baidu.com/view/751665.htm
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友901dce6
2012-06-06 · 超过11用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:29.7万
展开全部
不能满足循环条件,即不会进入循环。
因为getchar()函数的功能是从标准输入读入一个字符,并且标准输入函数getchar()是行缓冲函数,带有缓冲区的。当你输入一个字符串“abcde”时,输入被暂存在缓冲区中,直到输入“回车键”才能把所输入的字符录入到内存中,而此时只能录入一个字符,所以录入的是第一个字符'a'了。那当然无法进入循环了。
满意请采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
107080285
2012-06-06 · TA获得超过1114个赞
知道小有建树答主
回答量:390
采纳率:50%
帮助的人:162万
展开全部
你定义的ch 是一个 char 吧? 如果是的话,那么它只能保留一个字符,如果你输入abcde,那么这个ch就等于a, 所以,之后的while()条件不成立,不会执行。
追问
不懂!1!
追答
就是这个意思:
getchar()这个函数,只能吸收到输入缓冲区中的第一个字符,就是你输入abcde,那么getchar()只能将a返回来,赋值给ch, 如果你输入hjkl,那么getchar()只能将h赋值给ch, while()中的判断条件是ch是不是等于e,等于的话,执行printf,不等于的话不执行,所以,根据你的输入,printf不会被执行,我说的够详细的吧,如果这都听不懂,那么就先去看书吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扈晓夏侯l8
2012-06-06 · 超过12用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:38.9万
展开全部
这个很简单啊,因为你输入的第一个字符是a,条件为假跳出了循环啊,getchar()得到的是a,跳出了循环。 你想要的效果应该是如下所示吧?
#include <string>

using namespace std;

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

system("PAUSE");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式