c - 简单的switch和case,与卡片相关,C语言
问题描述
我正在尝试做一个将卡与数字相关联的程序。我首先问花色(红桃、黑桃、方块、梅花)然后问它的价值(ace-1、2、3...K-13)。当我执行这个程序时,它总是返回数字 0,你能帮帮我吗?抱歉,对于西装或价值观的混淆词,我希望它不会给您带来任何问题。顺便说一句,葡萄牙西装:naipes;价值观:勇气;
#include <stdio.h>
#include <stdlib.h>
char naipe;//suit
int valor;//value (ace,1,queen...)
int num;//nunumber associated to the card in question
int main(){
int naip, val;
scanf("%c", &naipe);
scanf("%d", &valor);
switch (naipe){
case 'C':
naip= 0;
break;
case 'E':
naip= 13;
break;
case 'O':
naip= 26;
break;
case 'P':
naip= 39;
break;
return naip;
}
switch (valor){
case '1':
val= 1;
break;
case '2':
val= 2;
break;
case '3':
val= 3;
break;
case '4':
val= 4;
break;
case '5':
val= 5;
break;
case '6':
val= 6;
break;
case '7':
val= 7;
break;
case '8':
val= 8;
break;
case '9':
val= 9;
break;
case '10':
val= 10;
break;
case '11':
val= 11;
break;
case '12':
val= 12;
break;
case '13':
val= 13;
break;
return val;
}
num= (naip + val);
printf("%d", num);
return 0;
解决方案
valor
是一个int
。它的值是1
, 2
, 3
, 等等,但在案例标签中,您有'1'
, '2'
, '3'
, 等等。这些是字符“1”、“2”、“3”等,而不是整数值 1、2 和 3。将大小写标签更改为case 1:
、case 2:
、case 3:
等。或者,更好的是,简单地value
用作要添加的值:由于它已经是所需的值,因此没有理由使用 aswitch
对其进行解码。(您可能希望添加代码来检查它是否在 1 到 13 的范围内,如果不是则警告用户。类似地,switch
fornaip
可能有一个default
案例,如果西装未被识别,则警告用户。你应该检查每个scanf
返回 1,表示它成功转换了一个输入。)
例如字符的值是'1'
字符集中的代码,例如'1'
ASCII 中的 49。Socase '1':
等价于case 49:
(当使用 ASCII 时),并且不会匹配valor
1 到 13 的值。
此外,当“单引号”中有两个字符时,如'10'
,则形成一个多字符常量。它的值是实现定义的。这种形式很少有任何用途。
推荐阅读
- java - 提交带有两个请求参数的表单时出现 BindingResult 错误
- python - ValueError: invalid wherece (-1, 应该是 0、1 或 2)
- python - 是否可以使用一个命令跨多个项目运行 pytest
- microsoft-graph-api - 有什么方法可以获取成员加入团队的详细信息列表吗?
- html - 该文档的正文是否不允许导航栏向左对齐?
- scala - 斯卡拉,猫。有人可以解释什么是“F”,它来自哪里?
- mysql - 加入未在 mysql 中返回预期结果
- ruby-on-rails - Rails 对表“产品”的更新或删除违反了外键约束
- .htaccess - 使域适用于网站和管理面板
- java - 如何在 Java 中打印 Vector<> 中嵌套类型的数量?