若输入字符串:abcde<回车>,则以下while循环体将执行 _____ 次. while((ch=getchar())=='e') printf("*");
7个回答
展开全部
因为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
参考:http://baike.baidu.com/view/751665.htm
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能满足循环条件,即不会进入循环。
因为getchar()函数的功能是从标准输入读入一个字符,并且标准输入函数getchar()是行缓冲函数,带有缓冲区的。当你输入一个字符串“abcde”时,输入被暂存在缓冲区中,直到输入“回车键”才能把所输入的字符录入到内存中,而此时只能录入一个字符,所以录入的是第一个字符'a'了。那当然无法进入循环了。
满意请采纳!
因为getchar()函数的功能是从标准输入读入一个字符,并且标准输入函数getchar()是行缓冲函数,带有缓冲区的。当你输入一个字符串“abcde”时,输入被暂存在缓冲区中,直到输入“回车键”才能把所输入的字符录入到内存中,而此时只能录入一个字符,所以录入的是第一个字符'a'了。那当然无法进入循环了。
满意请采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你定义的ch 是一个 char 吧? 如果是的话,那么它只能保留一个字符,如果你输入abcde,那么这个ch就等于a, 所以,之后的while()条件不成立,不会执行。
追问
不懂!1!
追答
就是这个意思:
getchar()这个函数,只能吸收到输入缓冲区中的第一个字符,就是你输入abcde,那么getchar()只能将a返回来,赋值给ch, 如果你输入hjkl,那么getchar()只能将h赋值给ch, while()中的判断条件是ch是不是等于e,等于的话,执行printf,不等于的话不执行,所以,根据你的输入,printf不会被执行,我说的够详细的吧,如果这都听不懂,那么就先去看书吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很简单啊,因为你输入的第一个字符是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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询