C++入门级问题求解~

[复制链接]
查看11 | 回复5 | 2011-3-22 16:45:15 | 显示全部楼层 |阅读模式
#include
void main()
{
char c;
for(;;)
{
c=cin.get();
if(c=='m')
cout<<"Good morning\n";
else if(c=='a')
cout<<"Good afternoon\n";
else if(c=='n')
cout<<"Good night\n";
else if(c=='e')
break;
else cout<<"Error\n";
}
}
我想输入a时输出Good Afternooon,以此类推,输入的不是"m,a,n,e"中的任意1个时输出Error
但实际上输入"a,n,m"时都会在输出Good XXX后输出Error…
不知原因…求原因&解决方法

回复

使用道具 举报

千问 | 2011-3-22 16:45:15 | 显示全部楼层
输入的时候不是要敲 回车 嘛,这回车也会被 cin.get() 读进去,加上个处理它的语句:else if(c=='\n')
continue;
回复

使用道具 举报

千问 | 2011-3-22 16:45:15 | 显示全部楼层
你在每个COUT后面加上一个break;试试,
回复

使用道具 举报

千问 | 2011-3-22 16:45:15 | 显示全部楼层
没仔细看代码,想来原因应该是没有对回车进行判断。你应该可以这样尝试:1. 用switch。switch(c) {case('m'): cout<<"..."; break;case('n'): .... break;...case('\n'): continue; // 回车直接跳出循环default: cout<<"Er
回复

使用道具 举报

千问 | 2011-3-22 16:45:15 | 显示全部楼层
是这样。你的Enter键入也被抓作一次输入了,然后它就会匹配进最下面的else,继而输出Error
回复

使用道具 举报

千问 | 2011-3-22 16:45:15 | 显示全部楼层
可以用一个空格吸收掉回车。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行