簡體   English   中英

我想使用一個開關盒而不是兩個開關盒

[英]I want to use one switch case instead of two switch cases

int SumOfCards(char str[], int n)
{
   if(n==0)
   return -1;
   int sum1,sum2;
   char temp[2];
   if(str[1]==' ')
   temp[0]= str[2];
   else if(str[2]==' ')
   temp[0] = str[3];

switch(str[0])
{
    case '2' : sum1 = 2;
    break;
    case '3' : sum1 = 3;
    break;
    case '4' : sum1 = 4;
    break;
    case '5' : sum1 = 5;
    break;
    case '6' : sum1 = 6;
    break;
    case '7' : sum1 = 7;
    break;
    case '8' : sum1 = 8;
    break;
    case '9' : sum1 = 9;
    break;
    case '1' : sum1 = 10;
    break;
    case 'K' : sum1 = 10;
    break;
    case 'J' : sum1 = 10;
    break;
    case 'Q' : sum1 = 10;
    break;
    case 'A' : sum1 = 11;
    break;
    default : sum1 = 0;
    break;

}
 switch(temp[0])
{

    case '2' : sum2 = 2;
    break;
    case '3' : sum2 = 3;
    break;
    case '4' : sum2 = 4;
    break;
    case '5' : sum2 = 5;
    break;
    case '6' : sum2 = 6;
    break;
    case '7' : sum2 = 7;
    break;
    case '8' : sum2 = 8;
    break;
    case '9' : sum2 = 9;
    break;
    case '1' : sum2 = 10;
    break;
    case 'K' : sum2 = 10;
    break;
    case 'J' : sum2 = 10;
    break;
    case 'Q' : sum2 = 10;
    break;
    case 'A' : sum2 = 11;
    break;
    default : sum2 = 0;
    break;

}
   if(str[0]== 'A' && temp[0]== 'A')
   {sum1 = 1;
   sum2 = 1;
   }
   int sum = sum1 + sum2;
   return sum;

}

這是從一副牌中計算兩張牌值總和的程序。 卡片包含 2,3,...10 和 J、A、Q 和 K 的值。 str[0] 包含第一張卡片的值,temp[0] 包含第二張卡片的值我想使用一個開關盒代替兩個 switch 案例,因為 str[0] 和 temp[0] 的案例是相同的。 那么,我可以只使用一個開關盒而不是兩個開關盒嗎? 我該怎么做?

您可以簡單地通過將邏輯放在一個函數中並使用temp[0]調用一次並再次使用str[0]調用來實現。 這就是函數的用途。 而不是重復邏輯把它放在一個函數中並多次調用它。

另外, if語句在這里可以起到更好的作用,而不是switch case。 就像是:-

func(str[0],&sum2);
...
func(temp[0],&someintvar);

進而

void func(char c, int *a){
   if( c>='2' && c<='9')
      *a = c-'0';
   else if( c=='1' || c=='J' || c=='K' || c=='A' || c=='Q')
      *a = 10;
   else
      *a = 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM