NYOJ 73 比大小 (大数)

比大小

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 2
描述

给你两个很大的数,你能不能判断出他们两个数的大小呢?

比如123456789123456789要大于-123456

输入
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
数据保证输入的a,b没有前缀的0。
如果输入0 0表示输入结束。测试数据组数不超过10组
输出
如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
样例输入
111111111111111111111111111 88888888888888888888
-1111111111111111111111111  22222222
0 0
样例输出
a>b
a<b
注 - 此题为:  NYOJ 73 比大小 (大数)

说明:大数比较大小,注意结束条件 和 当相等时输出 a==b

已AC代码:

#include<stdio.h>
#include<string.h>
#define M 1010
int main()
{
	int i,j,len1,len2;
	char ch1[M],ch2[M];
	while(scanf("%s%s",ch1,ch2)!=EOF)
	{
		if(ch1[0]=='0'&&ch2[0]=='0') // 结束条件 
			break;
		len1=strlen(ch1);
    	len2=strlen(ch2);
    	
    	if(ch1[0]=='-'&&ch2[0]>='0'&&ch2[0]<='9') // 一正一负 
    		printf("a<b\n");
    	else if(ch2[0]=='-'&&ch1[0]>='0'&&ch1[0]<='9')
    		printf("a>b\n");
    	else if(ch1[0]=='-'&&ch2[0]=='-') // 都为负 
    	{
    		if(len1>len2) // 长度不等 
    			printf("a<b\n");
    		else if(len1<len2)
    			printf("a>b\n");
    		else if(len1==len2) // 长度相等 
    		{
    			int temp=1; // 判断两数相等 
            	for(i=0;i<len1;i++)
            	{
            		if(ch1[i]>ch2[i])
            		{
            			printf("a<b\n");
            			temp=0;
            	    	break;
            		}
            		if(ch1[i]<ch2[i])
            		{
            			printf("a>b\n");
            			temp=0;
            	    	break;
            		}	
            	}
            	if(temp)
            		printf("a==b\n");
    		}
    	}
    	else if(ch1[0]>='0'&&ch1[0]<='9'&&ch2[0]>='0'&&ch2[0]<='9') // 都为正 
    	{
    		if(len1>len2)
    			printf("a>b\n");
    		if(len1<len2)
    			printf("a<b\n");
    		if(len1==len2) // 长度相等 
    		{
    			int temp=1; // 判断两数相等 
            	for(i=0;i<len1;i++)
            	{
            		if(ch1[i]>ch2[i])
            		{
            			printf("a>b\n");
            			temp=0;
            	    	break;
            		}
            		if(ch1[i]<ch2[i])
            		{
            			printf("a<b\n");
            			temp=0;
            	    	break;
            		}	
            	}
            	if(temp)
            		printf("a==b\n");
    		}
    	}
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值