【问题标题】:Query that determine network provider确定网络提供商的查询
【发布时间】:2016-02-13 12:20:59
【问题描述】:

我应该创建一个查询来确定 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();

}

【问题讨论】:

    标签: c dev-c++


    【解决方案1】:

    您的测试使用 or(||) 而不是 and(&amp;&amp;)。想一想:所有测试的数字都将大于9160000000 或小于9179999999

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

    应该是

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

    同样,对于另一个ifs

    【讨论】:

    • 您还应该补充一点,将 90 亿存储在 int 中可能会溢出。一个 32 位的int 只会进入 20 亿。
    • 嗯,虽然整个方法确实是错误的。电话号码真的不是数字,所以我会将前缀提取为字符串,然后进行表格比较。
    猜你喜欢
    • 2012-02-22
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多