不可以!
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
判断:两个数x、y的正负性。
要求:不可以使用比较运算符,即"<",">","<=",">=","==","!="。
-
输入
-
有多组数据,每组数据占一行,每一行两个数x,y。
x、y保证在int范围内。
输出
-
每组数据输出占一行。
如果两个数是一正一负,输出"Signs are opposite"
如果是同为正或同为负,输出"Signs are not opposot"
如果无法确定,输出"Signs can't be sure"
输出不包括引号
样例输入
-
1 1 -1 1
样例输出
-
Signs are not opposot Signs are opposite
提示
- 如对本题有何疑问,请到讨论区提问或邮件我! 来源
- 爱生活 上传者
分析 :记录本题的原因是本题涉及到对位运算符的操作,(左移运算,右移运算)。
须知:int型在vc中是4个字节,32位,将输入的数右移31位就可找到符号位。
代码 :
#include <stdio.h>
int main( )
{
int x,y;
while(~scanf("%d%d",&x,&y))
{
if (!x||!y) {
printf("Signs can't be sure\n");
}
else {
x >>= 31; //通过右移的方式找到二进制最高位(即符号位,若为0即正,1即负)
y >>= 31;
if ((x-y))
printf("Signs are opposite\n");
else
printf("Signs are not opposot\n");
}
}
return 0;
}
-
有多组数据,每组数据占一行,每一行两个数x,y。