2013-04-03 149 views
-4

,我們有4個區域:abcd開關情況下(C)

我們要把這些數字在這些區域。

如何做到這一點只用switch語句:

the number divisible by 10 and divisible by 7 ın region a 
the number divisible by 10 but not divisible by 7 ın region b 
the number not divisible by 10 but divisible by 7 ın region c 
the number not divisible by 10 and divisible by 7 ın region d 

例如,如果:

input 770 out put is a 

input 200 output b 

input 154 output c 
+0

請停止寫'1'而不是'i'並更好地構建您的問題。請閱讀[FAQ](http://stackoverflow.com/faq)尋求幫助。 – chriz

+0

@chriz OP可能是土耳其語(正如'ı'建議,無點我),並有問題打字'我'。 –

+1

@chriz你爲什麼編輯這個問題,並在標題中加入'php' - 這似乎不是一個PHP問題。 – user93353

回答

4

像這樣的東西可以工作,不知道這是你問什麼,但:

switch ((number % 7 == 0) * 2 + (number % 10 == 0)) 
{ 
case 0: 
    puts("d"); 
    break; 
case 1: 
    puts("b"); 
    break; 
case 2: 
    puts("c"); 
    break; 
case 3: 
    puts("a"); 
    break; 
} 
+0

如果這不是OP所要求的,我會感到驚訝,儘管也許switch語句並不是最合適的方法。我會用'printf(「%c \ n」,「abcd」[(number%10> 0)* 2 +(number%10> 0)]);'',或者普通老'if''' else如果'''elsese'鏈這個。 – Sebivor

+0

很好的答案(+1)。我用su取代2的乘法到1('<< 1')的換檔 – MOHAMED

+1

@MohamedKALLEL換檔不會有任何區別。任何好的當代編譯器都會找出最好的。 –

0

一個簡單的方法是使用嵌套switch作爲替代嵌套0​​小號:):

char *foo(int i) { 
    int imod10 = i%10; 
    int imod7 = i%7; 
    switch(imod10) { 
     case 0: 
      switch(imod7) { 
       case 0: 
        return "A"; 
        break; 
       default: 
        return "B"; 
      } 
      break; 
     default: 
      switch(imod7) { 
       case 0: 
        return "C"; 
        break; 
       default: 
        return "D"; 
      } 
    } 
} 

對你的測試用例的例子見https://ideone.com/OacutE

1
var1 = n % 7; 
var2 = n % 10; 

switch (var1){ 
    case 0 : 
     switch(var2){ 
         case 0: printf("a");break; 
         default: printf("b");break; 
        } 

    default : 
     switch(var2){ 
         case 0: printf("c");break; 
         default: printf("d");break; 
        } 
}