不可以!
- 描述
-
判斷:兩個數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
題目解析:
判斷兩數的符號:
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