2016-02-13 160 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