如何编写无任何条件语句的C程序,输入-1输出1535否则输出原值
解决方案
核心思路
利用C语言标准规定的布尔表达式返回值特性:所有相等/关系运算的结果为int类型,表达式成立时返回1,不成立时返回0,通过算术运算即可实现二值选择,不需要任何条件分支语句。
完整代码
#include <stdio.h> int main() { int input; scanf("%d", &input); int output = (input == -1) * 1535 + (input != -1) * input; printf("%d", output); return 0; }
运行逻辑说明
- 当输入为
-1时:input == -1的结果为1,input != -1的结果为0- 最终计算结果为
1 * 1535 + 0 * input = 1535,符合输出要求
- 当输入不为
-1时:input == -1的结果为0,input != -1的结果为1- 最终计算结果为
0 * 1535 + 1 * input = input,直接返回输入原值
该实现完全符合C语言ISO标准,不依赖特定平台的补码特性,没有使用任何题目禁止的条件分支、循环语句,完全满足题目要求。
内容的提问来源于stack exchange,提问作者Noman
相关产品推荐
相关产品推荐

