不可以!
时间限制:
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
-
有多组数据,每组数据占一行,每一行两个数x,y。
题目解析:
判断两数的符号:
1.乘积:两者相乘>0,符号相同,<0相反,两者都不满足时不能确定
2.绝对值:x!=的前提下,x+|x|>0,x为正数,否则是负数
3.字符串:将数据存入数组中,考虑第一个字符‘-’,'0'
所有情况:
1.符号相同:同正,同负
2.符号相反:一正一负
3.不确定:一0一正;一0一负;都为0;
一:运用乘积,两者相乘
要求:不可以使用比较运算符,即"<",">","<=",">=","==","!="。
应该是不能拿x.y与0通过运算符进行直接比较 其他的用到运算符应该没问题 因为下面第一种代码就用到了>,<,但是ac了
以前一直认为“,”等价于&&,今天运行第三个代码时才知道 if(x,y) x可以为0,y不能为0; if(x&&y),x,y都不能为0
1.乘积
ac code:
#include<stdio.h>
int main()
{
int x,y;
while(~scanf("%d%d",&x,&y))
{
if(x*y>0)
printf("Signs are not opposot\n");
else if(x*y<0)
printf("Signs are opposite\n");
else
printf("Signs can't be sure\n");
}
return 0;
}
2 字符串
ac code:
#include<stdio.h>
#define MAXN 10000
int main()
{
char str1[MAXN],str2[MAXN];
while(~scanf("%s%s",str1,str2))
{
if(str1[0]=='0'||str2[0]=='0')
printf("Signs can't be sure\n");
else if(str1[0]=='-'&&str2[0]=='-'||str1[0]!='-'&&str2[0]!='-')
printf("Signs are not opposot\n");
// else if(str1[0]||str2[0]) 一正一负
else
printf("Signs are opposite\n");
}
return 0;
}
3,绝对值
ac code:
#include<stdio.h>
#include<stdlib.h>
//#include<math.h>
int main()
{
int x,y;
while(~scanf("%d%d",&x,&y))
{
if(x&&y) //不能写成if(x,y)因为 他表示y!=0,不表示x,y都不为0
{
if(x*y+abs(x*y))
printf("Signs are not opposot\n");
else printf("Signs are opposite\n");
}
else
printf("Signs can't be sure\n");
}
return 0;
}
第一次提交时没有写头文件stdlib.h,写math.h编译错误
编译错误:
./Source/main.cpp: In function 'int main()':
./Source/main.cpp:24: error: 'abs' was not declared in this scope