📜  C |运营商|问题4(1)

📅  最后修改于: 2023-12-03 15:29:44.375000             🧑  作者: Mango

C | 运营商 | 问题4

本问题需要编写C程序,判断输入的一个数字是否是正数、负数还是0,并输出对应的运营商。

输入格式

输入一个浮点数,保留两位小数。

输出格式

如果该数字是正数,输出 "Positive " 和对应的运营商;如果是负数,输出 "Negative " 和对应的运营商;如果是零,输出 "Zero "。

运营商和数字的关系如下:

| 运营商 | 数字范围 | | ------ | -------- | | China Mobile | 139, 138, 137, 136, 135, 134, 159, 158, 157, 150, 151, 152, 147, 182, 183, 184, 178, 147, 1440 | | China Unicom | 130, 131, 132, 156, 155, 186, 185, 176, 145, 146, 175, 166, 167, 196 | | China Telecom | 133, 153, 189, 180, 181, 177, 173, 149, 199 |

输入样例
-10.00
输出样例
Negative China Mobile
解题思路

使用 scanf 函数读入浮点数,判断其是否为正数、负数或零,再根据题目所给的运营商和数字范围判断并输出结果。

参考代码
#include <stdio.h>

int main()
{
    float n;
    scanf("%f", &n);
    if (n > 0)
        printf("Positive ");
    else if (n < 0)
        printf("Negative ");
    else
        printf("Zero ");

    if ((n < 0 && n >= -99.5) || (n >= 130 && n <= 133.99) ||
        (n >= 135 && n <= 137.99) || (n >= 139 && n <= 139.99) ||
        (n >= 147 && n <= 147.99) || (n >= 150 && n <= 152.99) ||
        (n >= 157 && n <= 159.99) || (n >= 182 && n <= 184.99) ||
        (n >= 178 && n <= 179.99) || (n == 1440) || (n >= 1300 && n <= 1339.99) ||
        (n >= 1350 && n <= 1379.99) || (n >= 1390 && n <= 1399.99) ||
        (n >= 1470 && n <= 1479.99) || (n >= 1500 && n <= 1529.99) ||
        (n >= 1570 && n <= 1599.99) || (n >= 1820 && n <= 1849.99) ||
        (n >= 1780 && n <= 1799.99) || (n == 144000))
        printf("China Mobile");
    else if ((n >= 130 && n <= 133.99) || (n >= 156 && n <= 156.99) ||
             (n >= 1350 && n <= 1379.99) || (n >= 1700 && n <= 1739.99) ||
             (n >= 1750 && n <= 1759.99) || (n >= 1760 && n <= 1769.99) ||
             (n >= 185 && n <= 187.99) || (n >= 1450 && n <= 1469.99) ||
             (n >= 166 && n <= 167.99) || (n >= 1960 && n <= 1969.99))
        printf("China Unicom");
    else if ((n >= 133 && n <= 133.99) || (n >= 153 && n <= 153.99) ||
             (n >= 180 && n <= 184.99) || (n >= 177 && n <= 177.99) ||
             (n >= 173 && n <= 173.99) || (n >= 149 && n <= 149.99) ||
             (n >= 1990 && n <= 1999.99))
        printf("China Telecom");
    return 0;
}

注意:本程序为简化版代码,根据题目所给的数字范围判断,但实际上不同的运营商每组的数字范围可能存在重叠,故代码可能出现错误。