C 我想用一个开关箱而不是两个开关箱
这是一个从一副牌中求出两张牌值之和的程序。卡由2,3,…10和J,A,Q和K组成。str[0]由第一张卡的值组成,temp[0]由第二张卡的值组成。我想使用一个开关盒,而不是两个开关盒,因为str[0]和temp[0]的情况相同。那么,我可以只使用一个开关箱而不是两个开关箱吗。我该怎么做呢?您只需将逻辑放入函数中,用C 我想用一个开关箱而不是两个开关箱,c,C,这是一个从一副牌中求出两张牌值之和的程序。卡由2,3,…10和J,A,Q和K组成。str[0]由第一张卡的值组成,temp[0]由第二张卡的值组成。我想使用一个开关盒,而不是两个开关盒,因为str[0]和temp[0]的情况相同。那么,我可以只使用一个开关箱而不是两个开关箱吗。我该怎么做呢?您只需将逻辑放入函数中,用temp[0]调用一次,再用str[0]调用一次即可。这就是函数的用途。与其重复逻辑,不如将其放入函数中并多次调用 另外,在这里,使用if语句代替switchcases将起到更好的作
temp[0]
调用一次,再用str[0]
调用一次即可。这就是函数的用途。与其重复逻辑,不如将其放入函数中并多次调用
另外,在这里,使用if
语句代替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;
}
然后
func(str[0],&sum2);
...
func(temp[0],&someintvar);
void func(字符c,int*a){
>写一个函数,将一个函数转换成代码< >代码> '2' < /代码>至代码> > 9' < /代码>该卡的值为“代码> CARD-名称‘2’+2 < /代码>,可以减少语句:<代码>否则,(C==‘1’′c=‘J’=‘k’=k’=C==‘a’c c==‘q’)< /> > >代码>如果(c)(strchr(“1JKAQ”,c)){…}
@machine_1:是的,我想到了。但我不确定OP会有多感激它。(我猜OP是个初学者),但这是一个好方法。谢谢你在这里发表评论。
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;
}