c++输入char类型,输出int类型

C++ input of type char, output of type int

本文关键字:类型 输出 int c++ char 输入      更新时间:2023-10-16

我正在上我的第一堂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,这取决于玩家的手牌值,对吧?