c++输入char类型,输出int类型
C++ input of type char, output of type int
我正在上我的第一堂c++课,我被卡住了。如果有经验的程序员能给我一些帮助,我将非常感激。
作业是创建一个21点记分程序。虽然不太现实,但是。用户输入他想要多少张牌,然后输入每张牌的值。赋值指定输入类型应为char。因此,如果用户有一张2卡,他们输入2,但这个2实际上是char,必须转换为int。或者如果他们有皇后,他们会输入"Q",我的程序应该把Q转换成10分来得分。我想不出做这件事的正确方法。作业建议我将使用switch语句或嵌套的if-else语句,但恐怕我不能很好地理解switch从书的例子。
这是我尝试切换的一小部分。*points_for_card*类型为char, *number_value*类型为int.
switch (points_for_card)
{
case '2':
number_value = 2 ;
break;
case '3':
number_value = 3 ;
break;
// ETC
}
所以我在这里要做的是:如果用户输入'3'作为一个字符,它变成int 3。但也许这根本不是switch的工作方式。
问题是,我的程序编译和工作,但返回奇怪的疯狂的大数字。如果我把points_for_card
移到int
而不是char
,那么无论我输入什么数字,算法都能很好地工作,因为在那一点上,它只是把它们加在一起。
我希望我解释清楚了,如果有必要的话会尽可能地澄清。
可以是这样的代码:
if (points_for_card >= '1' && points_for_card <= '9'){
number_value = points_for_card - '0'; // convert to number
}else if (points_for_card == 'Q'){
...
}
我想到了地图。您可以直接存储分数,或者您可以创建一个地图来查找卡片类型,其他地图将其他信息(如分数)关联到每个卡片。下面是小示例:
std::map<char, int> scores;
scores['Q'] = 10; scores['A'] = 13; scores['2'] = 2; // etc.
char c;
std::cout << "Please enter a card: ";
std::cin >> c;
std::cout << "Your card has score " << scores[c] << std::endl;
通常当你的心说"切换"时,你的大脑应该说"映射":-)
我个人会定义一个enum ECardType { Card_2, ..., Card_10, Card_Jack, ... };
,并有一个地图是std::map<char, ECardType>
,然后其他地图从卡类型到次要信息,如分数。
如何将输入输入points_for_card
?
你的输入应该是cin >> points_for_card
;
除了将一个字符与另一个字符进行比较,还可以将其与一个字符的ASCII值进行比较。例如
char letter = 'A'
if(letter == 65){
cout << "Match";
}
上面的代码将输出"Match!"
同样,你的switch语句是完美的措辞。问题在你的程序的其他地方,所以请提供相关的来源。另一点与你的计划有关,但不是你的问题:你是如何处理王牌的?你知道它们可以被计数为1或11,这取决于玩家的手牌值,对吧?
- 在 C++ 中输出枚举类类型的向量元素
- 为什么在这种情况下,bool 类型的输出等于 0?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 如何为流输出运算符提供重载<<模板'using'类型别名?
- 无法在 HEVC 解码器上设置输出类型 IMFTransform
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 来自 decltype 的意外输出类型
- 输出一个数字,该数字可能是三种类型之一
- 输出 [left]=input[i] 行中的 c++ 代码中存在无效的类型错误
- 为什么给我输出 2 我使用类型转换?
- GNU Radio中基于条件的输出的块类型
- 如何在编译过程中输出C 类型信息
- SSE和iostream:浮点类型的错误输出
- C 尝试使用模板输出功能来显示不同类型的数据
- 如果我获得Integer和Double的产品,输出的数据类型是什么
- 为什么没有"int"类型声明时输出不同?
- 如何将预定义数据类型的值存储到数组中并输出它
- 具有特征类型输出的特征二进制 Expr
- 双变量类型输出始终为 0
- 正在将自定义数据类型输出到文件