Heys。
我有这个代码,它为一些神秘的原因设置了一个表。尺寸为6x60。这意味着 SIZEY 定义为6, SIZEX 定义为60。
void set_table(char** table)
{
int i,j,k=0;
for(i=0;i<SIZEY;i+=3){
for(j=0;j<SIZEX;j++){
switch(k++%5){
case 0:
table[i][j]='|';
break;
case 1:
table[i][j]=' ';
break;
case 2:
table[i][j]=(char)((((k-2)/50)%10)+48);
break;
case 3:
table[i][j]=(char)((((k-3)/5)%10)+48);
break;
case 4:
table[i][j]=' ';
break;
default:
continue;
}
}
}
}
我正在使用3个变量执行此操作,如您所见。问题是,我可以用2个变量,甚至只有1个变量吗?
提前致谢。
答案 0 :(得分:0)
以下是对您的简化:
switch(k++%5){
case 0:
table[i][j]='|';
break;
case 1:
case 4:
table[i][j]=' ';
break;
case 2:
case 3:
table[i][j]= '0';
break;
default:
continue;
}
使用C ++,一个案例可以落入到另一个案例,例如上面的案例1和案例2。
您的案例2和3的表达式可以简化。我将以案例2为例:
((((k-2)/50)%10)+48)
用2代替k得到
((((2-2)/50)%10)+48)
简化:
((((0)/50)%10)+48)
零除以任何值为零,再次简化:
(((0)%10)+48)
Zero mod是零,因为它涉及分裂:
((0)+48)
简化:
(48)
替换为等效字符(因为您的数组为char
):
'0'