新手用if语句碰到的问题

LS1219 2009-09-22 04:57:21
我用if语句编了个程序,可是出了问题。
#include <iostream>
using namespace std;
int main()
{
int a,leap;
cout<<"请输入:a"<<'\n';
if (cin>>a)
leap=true;
else
leap=false;
if (leap)
cout<<"真听话!";
else
cout<<"猪!"<<endl;
return 0;
}
本意是输入a出现真聪明,输别的出现猪,可是结果恰恰相反,而且只要输字母就出猪,输数字就出真听话。这是怎么回事啊,高手指点一下,谢谢了。
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LS1219 2009-12-01
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int main()
{
char a,leap;
cout <<"请输入:a" <<'\n';
cin>>a;
if ('a'==a)
leap=true;
else
leap=false;
if (leap)
cout <<"真听话!";
else
cout <<"猪!" <<endl;
return 0;
}
LS1219 2009-12-01
  • 打赏
  • 举报
回复
明白了,谢谢了,我没有可用分,对比起。
hearoequal 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ls1219 的回复:]
如果在我编的基础上修改该怎么该?谢了。
[/Quote]

如果简单的说改的话
把你的true 和 false交换就行了
cin int成功就是数字
不成功就是 非数字符号
xyx_is_sarbee 2009-09-22
  • 打赏
  • 举报
回复
两点必须确定:
1.对于int型,如果是0,则转换为逻辑量是FALSE,非0怎是TRUE。
2.对于操作,如果成功,则整个返回TRUE,否则返回FALSE。
3.在编译的时候,int和char是相通的,但是在输入的时候不是!
在这个程序中,你输入字母的时候,失败,转向else,所以leap = false,从而就那个现象了。
LS1219 2009-09-22
  • 打赏
  • 举报
回复
如果在我编的基础上修改该怎么该?谢了。
loveboyin 2009-09-22
  • 打赏
  • 举报
回复
我也是新生,咋没遇到这问题.
loveboyin 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coderofvc 的回复:]
C/C++ code
#include<iostream>usingnamespace std;int main()
{char a;
cout<<"请输入:a"<<'\n';
cin>>a;if ('a'== a)
cout<<"真听话!"<<endl;else
cout<<"猪!"<<endl;return0;
}
[/Quote]
学弟我还是没看懂,估计知识积累不够,我会继续努力的,问下那个char a 啥意思? 谢谢
hearoequal 2009-09-22
  • 打赏
  • 举报
回复
cin>>a

你的a是int型 输入数字a接收到数据 进入true那个分支
当输入字母的时候 a没有接受到数据 进入false那个分支

而且你程序的意义有问题
第一个
if是判断a是否接受到数据
而不是判断a是数字还是字母
CoderOfVC 2009-09-22
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int main()
{
char a;
cout <<"请输入:a" <<'\n';
cin>>a;
if ('a' == a)
cout <<"真听话!"<<endl;
else
cout <<"猪!" <<endl;
return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧