| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1151 人关注过本帖
标题:一个初学的习题
只看楼主 加入收藏
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
 问题点数:0 回复次数:19 
一个初学的习题

初学C++,刚自学了一章,做后面的习题不会了,主要内容是实现:向用户提问"现在正在下雨吗?(y/n)",输下Y则显示"现在下",输入N则显示"不下",我翻前面的书,要求输的的全是数字,我用cin,和if还会弄,现在变成Y和N了就不会了,想到了用枚举,还是总不对,以下是我的程序,看是哪的问题啊?
#include <iostream>
using namespace std;
enum weather {Y,N};
void main ()
{
weather a;
int b;
cout <<"现在正在下雨吗?(Y/N): ";
cin>>b;
a=(weather)b;
if (a==Y)

{ cout <<"现在正在下雨!"<<endl;}


}

搜索更多相关主题的帖子: 习题 初学 
2007-08-06 13:38
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
收藏
得分:0 

不用去用枚举,你的枚举中,enum weather {Y,N};程序会自动将Y和N附上默认值(Y=0,N=1)如果你在b的输入中输入的是Y和N就不可能和之前的枚举默认值相同,因此除非你用0代表下雨,用1代表不下;否则就会有问题。
不要用枚举了:
#include <iostream>
using namespace std;
void main ()
{
int b,Y,N;
cout <<"现在正在下雨吗?(Y/N): ";
cin>>b;
if (b==Y)
{ cout <<"现在正在下雨!"<<endl;}
}







~我的人生不是套公式~
2007-08-06 15:16
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
得分:0 
回复:(wangweicoin)不用去用枚举,你的枚举中,enu...

谢谢,你讲的枚举我明白了,用的给的程序可以做到要求的效果,可是我要把原题的要求都加进去,结果就不成了,我输入什么都是正在下雨啊?
#include <iostream>
using namespace std;
void main ()
{
int b,Y,N;
cout <<"现在正在下雨吗?(Y/N): ";
cin>>b;
if (b==Y)

{ cout <<"现在正在下雨!"<<endl;}
else if (b==N)
{cout <<"现在没有下雨!"<<endl;}
else
cout <<"现在正在下雨吗?(Y/N): ";
}
是我的IF语句不对吗,可我是看书上写的啊?

2007-08-06 15:41
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你不知道char类型吗?

类型错误啊,int怎么可以接受字符呢?

Fight  to win  or  die...
2007-08-06 16:23
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
收藏
得分:0 

#include <iostream>
using namespace std;
void main ()
{
int b,Y,N;
//cout <<"现在正在下雨吗?(Y/N): ";
cin>>b;
//if (b==Y)

//{ cout <<"现在正在下雨!"<<endl;}
//else if (b==N)
//{cout <<"现在没有下雨!"<<endl;}
//else
//cout <<"现在正在下雨吗?(Y/N): ";
cout<<b<<endl;
cout<<Y<<endl;
cout<<N<<endl;
}

乱定义乱输入,定义没有赋值的后果!!!!


2007-08-06 16:32
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
收藏
得分:0 

对不起,刚才是我错了,你再试试:

把int b,Y,N; 改成 char b;
把if(b==Y) 改成 if(b="Y")
把else if(b==N) 改成 else if(b=="N")


~我的人生不是套公式~
2007-08-06 16:37
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
收藏
得分:0 

字符是'Y' 'N'再改!而且这里的int Y ,N也不需要了!

[此贴子已经被作者于2007-8-6 16:39:55编辑过]


2007-08-06 16:38
leng
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-6-27
收藏
得分:0 
#include<iostreat.h>
int main()
{
char ch;
cout <<"现在正在下雨吗?(Y/N): ";
cin>>ch;
if(ch=='Y')
cout<<"正在下";
else
cout<<"不下";
return 0;
}
可以不呀?

2007-08-06 21:48
ReadingLi
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-6
收藏
得分:0 

哈哈,谢谢大家,通过你们的讲解终于弄出来了.
#include <iostream>
using namespace std;
void main ()
{
char b;
cout <<"现在正在下雨吗?(Y/N): ";
cin>>b;
if (b=='y')

{ cout <<"现在正在下雨!"<<endl;}
else if (b=='n')
{cout <<"现在没有下雨!"<<endl;}
else
cout <<"现在正在下雨吗?(Y/N): ";
}
不过还有个小问题,在if(b=='y')的时候, y , "y" , 'y' 这三个的区别是什么啊?

2007-08-07 12:55
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
y是个变量,前提是你定义了,具体类型要看你定义的什么

'y'字符字面量,字符是内置类型中的char类型

“y”字符串字面量,对应const char*类型

-----------------------------------------------------------
LZ很多基础都不懂,其实应该多看看书,光这样问,解答,你也只会云里雾里。

Fight  to win  or  die...
2007-08-07 12:59
快速回复:一个初学的习题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028267 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved