nyoj-1071 不可以!【水】

6 篇文章 0 订阅

不可以!

时间限制: 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

题目解析:

判断两数的符号:

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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值