C程序切换和If语句

时间:2014-10-13 16:02:54

标签: c if-statement switch-statement playing-cards

所以我正在尝试创建一个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代码的新手,所以为了我的利益,请保持简单和愚蠢。

2 个答案:

答案 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

此外,您可以省略大括号,因为它们不是必需的。