📅  最后修改于: 2023-12-03 15:29:44.375000             🧑  作者: Mango
本问题需要编写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;
}
注意:本程序为简化版代码,根据题目所给的数字范围判断,但实际上不同的运营商每组的数字范围可能存在重叠,故代码可能出现错误。