比大小

比大小

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

张云聪

開始提交的时候忘了a==b了~结果错了。。不要忘了考虑!

 
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
	char a[1001],b[1001];
	int lena,lenb,i,count;
	while(scanf("%s%s",&a,&b))
	{
		count=0;
		lena=strlen(a);
		lenb=strlen(b);
		if(lena==1 && lenb==1&&strcmp(a,"0")==0 &&strcmp(b,"0")==0)
			break;
		if(a[0]=='-'&&b[0]!='-')
			cout<<"a<b"<<endl;
        else if(a[0]!='-' &&b[0]=='-')
			cout<<"a>b"<<endl;
		else if(a[0]!='-' &&b[0]!='-')
		{
			if(lena>lenb)
				cout<<"a>b"<<endl;
			else if(lena<lenb)
				cout<<"a<b"<<endl;
			else
			{
                 for(i=0;i<lena;i++)//aabc  aace
				 {
					 if(a[i]>b[i])
					 {
						 cout<<"a>b"<<endl;
						 break;
					 }
					 else if(a[i]==b[i])
                         {
                         	count++;
						   continue;
                         }
					 else
					 {
						 cout<<"a<b"<<endl;
						 break;
					 }
				 }
				 if(count==lena)
				 cout<<"a==b"<<endl;
			}
		}
		else if(a[0]=='-'&&b[0]=='-')
		{
             if(lena>lenb)
			 {
				 cout<<"a<b"<<endl;
			 }
			 else if(lena<lenb)
			 {
				 cout<<"a>b"<<endl;
			 }
			 else
			 {
				 for(i=0;i<lena;i++)//aabc  aace
				 {
					 if(a[i]>b[i])
					 {
						 cout<<"a<b"<<endl;
						 break;
					 }
					 else if(a[i]==b[i])
                         {count++;
						 continue;
                         }
					 else
					 {
						 cout<<"a>b"<<endl;
						 break;
					 }
				 }
				 if(count==lena)
				 cout<<"a==b"<<endl;
			 }
		}
	}
	return 0;
}             

原文地址:https://www.cnblogs.com/yjbjingcha/p/7039832.html