C++自学新手关于if语句的问题。请各位不吝赐教!

雨夜独行的人 2014-02-06 10:52:40
这是一道出自《C++程序设计原理与实践》的习题。

前面的示例程序主要讲了if语句的用法。
我的想法是这样的:
int main()
{
cout << "Please enter the amount and kind of currency: ";
const double jpy_per_usd = 0.0099;
const double eur_per_usd = 1.3519;
const double gbp_per_usd = 1.6274;
double amount;
char kind;
cin >> amount >> kind;
if (kind == 'JPY')
{
cout << amount << " JPY= " << amount*jpy_per_usd << " dollars.\n";
}
else if (kind == 'EUR')
{
cout << amount << " EUR= " << amount* eur_per_usd << " dollars.\n";
}
else
cout << amount << " GBP= " << amount*gbp_per_usd << " dollars.\n";
}

可是当我输入100 JPY或EUR时得出的结果却是这样的:

请问错在哪里?谢谢!
P.s.祝大家马年快乐!
...全文
257 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangpufan 2015-09-20
  • 打赏
  • 举报
回复
char只能赋值为单个字符
不能==“jpy”
文若欢 2014-02-06
  • 打赏
  • 举报
回复
C++中的cin,cout没有详细了解过。 不过你把kind声明为char型,意味着一个字节,如果EUR全部存储到kind的话,可以将kind改为字符串数组。 比如:char kind[4];其中最后一个位置,应该为'\0'。 这个是字符串操作的基本知识。 还有,C++中可以直接用“==”将两个字符串比较吗?C中可是strcmp函数啊。
arthurzhuyong 2014-02-06
  • 打赏
  • 举报
回复
l.cc:15:14: warning: multi-character character constant [-Wmultichar]
  if (kind == 'JPY')
              ^
l.cc:18:21: warning: multi-character character constant [-Wmultichar]
  } else if (kind == 'EUR')
                     ^

Pump天天学习 2014-02-06
  • 打赏
  • 举报
回复
引用 4 楼 u012421456 的回复:
另外,lz最好在最后放一个return 0;,还有就是最好不要用\n了,可以在引号外边加一个<<endl; 只是按楼上改后我怎么发现输入100EUR是会出现这种情况,不知是怎么回事?
中间要有空格啊 100 EUR
百曉生 2014-02-06
  • 打赏
  • 举报
回复
另外,lz最好在最后放一个return 0;,还有就是最好不要用\n了,可以在引号外边加一个<<endl;
只是按楼上改后我怎么发现输入100EUR是会出现这种情况,不知是怎么回事?
Pump天天学习 2014-02-06
  • 打赏
  • 举报
回复
引用 2 楼 xacbeyond 的回复:
[quote=引用 1 楼 a345485527 的回复:] #include <string> .... string kind; .. if(kind=="JPY") 双引号
非常感谢!请问单引号和双引号有什么区别呢?[/quote] 单引号中间放的是单个字符 双引号是字符串 就原来的程序来说,像下面这么改也可以,只不过含义没有string容易理解 char kind;//定义的是一个单个字符, if(kind=='J') 单引号, else if(kind=='G')
雨夜独行的人 2014-02-06
  • 打赏
  • 举报
回复
引用 1 楼 a345485527 的回复:
#include <string> .... string kind; .. if(kind=="JPY") 双引号
非常感谢!请问单引号和双引号有什么区别呢?
Pump天天学习 2014-02-06
  • 打赏
  • 举报
回复
#include <string> .... string kind; .. if(kind=="JPY") 双引号
百曉生 2014-02-06
  • 打赏
  • 举报
回复
引用 5 楼 a345485527 的回复:
[quote=引用 4 楼 u012421456 的回复:] 另外,lz最好在最后放一个return 0;,还有就是最好不要用\n了,可以在引号外边加一个<<endl; 只是按楼上改后我怎么发现输入100EUR是会出现这种情况,不知是怎么回事?
中间要有空格啊 100 EUR[/quote] 谢谢指点,俺也是个新手
Pump天天学习 2014-02-06
  • 打赏
  • 举报
回复
引用 10 楼 xacbeyond 的回复:
[quote=引用 9 楼 u013523101 的回复:] C里面单引里面引得是单字符,双引号引得是字符串。 顺带问一下: 1.在哪里输入kind? 2.cin >> amount >> kind 何解?
我是初学者。这是我个人的理解: 1.先输入数值,空格后接kind,如:100日元就是“100 JPY”。 2..cin >> amount >> kind用于读取所输入的货币数额和类型。[/quote] 是的
雨夜独行的人 2014-02-06
  • 打赏
  • 举报
回复
引用 9 楼 u013523101 的回复:
C里面单引里面引得是单字符,双引号引得是字符串。 顺带问一下: 1.在哪里输入kind? 2.cin >> amount >> kind 何解?
我是初学者。这是我个人的理解: 1.先输入数值,空格后接kind,如:100日元就是“100 JPY”。 2..cin >> amount >> kind用于读取所输入的货币数额和类型。
happy_Can 2014-02-06
  • 打赏
  • 举报
回复
C里面单引里面引得是单字符,双引号引得是字符串。 顺带问一下: 1.在哪里输入kind? 2.cin >> amount >> kind 何解?
derekrose 2014-02-06
  • 打赏
  • 举报
回复
c++里面单引号是表示字符的

33,311

社区成员

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

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