C程序问题:给4个数组成多边形,不能用if/else,switch==
输入4个数为多边形的边:
1. 是否能组成多边形?(用1/0表示)
没有任何一边大于剩下三边的和
2. 是否能组成正方形?(用1/0表示)
注:不能用if/else,switch等等条件句,不能用&&,||,>,>=,!等等逻辑运算符,不能用Boolean变量,尽量用简单的函数。
主要是不让用if,让我捉鸡了,不知道怎么用数学表达式变换了。。。。求解答思路! c 问题
[解决办法]
呵呵,关键是:~x/0xFFFFFFFF 这一句
执行结果:
quadrangle: 1, 1, 1, 4 = 0
quadrangle: 3, 4, 5, 6 = 1
square: 3, 4, 5, 6 = 0
square: 3, 3, 3, 4 = 0
square: 3, 3, 3, 3 = 1
按回车结束...
// 只能用 stdio.h
// 不能用 bool 和 逻辑运算符
#include <stdio.h>
typedef unsigned int uint;
uint square(uint a, uint b, uint c, uint d)
{
uint x = (a - b)
[解决办法]
(a - c)
[解决办法]
(a - d)
[解决办法]
(b - c)
[解决办法]
(b - d)
[解决办法]
(c - d);
return ~x / 0xFFFFFFFF;
}
uint quadrangle(uint a, uint b, uint c, uint d)
{
uint x = (a / (b + c + d)) + (b / (a + c + d)) + (c / (a + b + d)) + (d / (a + b + c));
return ~x / 0xFFFFFFFF;
}
int main()
{
printf_s("quadrangle: %d, %d, %d, %d = %d\n", 1, 1, 1, 4, quadrangle(1, 1, 1, 4));
printf_s("quadrangle: %d, %d, %d, %d = %d\n", 3, 4, 5, 6, quadrangle(3, 4, 5, 6));
printf_s("square: %d, %d, %d, %d = %d\n", 3, 4, 5, 6, square(3, 4, 5, 6));
printf_s("square: %d, %d, %d, %d = %d\n", 3, 3, 3, 4, square(3, 3, 3, 4));
printf_s("square: %d, %d, %d, %d = %d\n", 3, 3, 3, 3, square(3, 3, 3, 3));
printf_s("按回车结束...");
getchar();
return 0;
}