2016-02-13 112 views
-3

我應該創建一個查詢,將決定11位手機號碼的網絡。查詢確定網絡提供商

  • 如果手機號碼與09160917開始,然後顯示Network G
  • 如果它以09180920開始,然後顯示Network S
  • 如果它以09220923開始,然後顯示Network A

但它總是打印Network G。請幫幫我!

#include<stdio.h> 
#include<conio.h> 

int main() 
{ 
    int MobNum; 

    printf("Enter11 digit mobile number: "); 
    scanf("%i", &MobNum); 

    if (MobNum>= 9160000000 || MobNum<= 9179999999) 
     printf("Network G"); 

    else 
    if (MobNum>= 9180000000 || MobNum<= 9209999999) 
     printf("Network S"); 

    else 
    if (MobNum>= 9220000000 || MobNum<= 9239999999) 
     printf("Network A"); 

    else 
     printf("Invalid provider"); 

    getch(); 

} 

回答

1

您的測試是使用或代替(||)和(&&)。想想看:測試的所有數字將大於9160000000或小於9179999999

if (MobNum>= 9160000000 || MobNum<= 9179999999) 
    printf("Network G"); 

應該

if (MobNum>= 9160000000 && MobNum<= 9179999999) 
    printf("Network G"); 

同樣,對於其他if小號

+1

你也應該補充的是存儲9十億在'int'大概會溢出。 32位'int'只會進入20億。 –

+1

嗯,雖然整個做法是錯誤真的。電話號碼真的不是數字,所以我會提取前綴字符串,然後做一個表進行比較。 – christutty