所以我正在尝试创建一个C代码程序,它将为游戏卡提供简写符号并确定格式化的扑克牌。例 输入:H 8 输出:8个心脏
Input: C 14
Output: Ace of Clubs
等级:2-10,1杰克,12女王,13王,14王牌 适合:C俱乐部,D钻石,H心,S黑桃 但在实施的最后阶段,我遇到了一些严重的问题。当我输入D 5时程序运行正常,但输入D 12会使它列为皇后然后杰克然后12颗钻石。
下面是代码:http://pastebin.com/Tj4m6E2L 接下来是当前的EXE:http://www.mediafire.com/download/4fy4syga2aj8n2j
感谢您提供的任何帮助。我是C代码的新手,所以为了我的利益,请保持简单和愚蠢。
答案 0 :(得分:0)
您遗失了break
中的重要switch
声明,例如
switch(rank)
{
case 14:
{
if(suite == 'H')
printf("Your card is the Ace of Hearts!");
else if(suite == 'C')
printf("Your card is the Ace of Clubs!");
else if(suite == 'D')
printf("Your card is the Ace of Diamonds!");
else
printf("Your card is the Ace of Spades!");
}
// <<< NB: case 14 "falls through" to case 13 here !!!
case 13:
...
将其更改为:
switch(rank)
{
case 14:
{
if(suite == 'H')
printf("Your card is the Ace of Hearts!");
else if(suite == 'C')
printf("Your card is the Ace of Clubs!");
else if(suite == 'D')
printf("Your card is the Ace of Diamonds!");
else
printf("Your card is the Ace of Spades!");
}
break; // <<< FIX
case 13:
...
重复所有其他缺少的break
语句。
答案 1 :(得分:0)
您应该始终在break;
语句中的每个case
末尾添加switch
语句。没有它,如果满足某种情况,那么在该情况之后出现的所有行都将被执行。
例如,程序中的第一个案例应写成如下:
case 14:
{ //not required
if(suite == 'H')
printf("Your card is the Ace of Hearts!");
else if(suite == 'C')
printf("Your card is the Ace of Clubs!");
else if(suite == 'D')
printf("Your card is the Ace of Diamonds!");
else
printf("Your card is the Ace of Spades!");
} //not required
break; //add this line
此外,您可以省略大括号,因为它们不是必需的。