现在的位置: 首页 > 综合 > 正文

【比大小 73】

2013年02月03日 ⁄ 综合 ⁄ 共 1167字 ⁄ 字号 评论关闭

比大小

时间限制: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
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char s1[1000],s2[1000];
int main(){
	while(1){
		memset(s1,0,sizeof(s1));
		memset(s2,0,sizeof(s2));
		scanf("%s%s",s1,s2);
		if(s1[0]=='0' && s2[0]=='0')
			break;
		if(s1[0]=='-'){
			if(s2[0]!='-')//如果一个为负数,一个为正数
				printf("a<b\n");
			else{//两个都为负数
				int a,b;
				a=strlen(s1);
				b=strlen(s2);
				if(a>b){
					printf("a<b\n");
				}
				else if(a<b){
					printf("a>b\n");
				}
				else{
					int flag=1;
					for(int i=1;i<=strlen(s1)-1;i++){
						if(s1[i]>s2[i]){
							flag=0;
							printf("a<b\n");
							break;
						}
						if(s1[i]<s2[i]){
							flag=0;
							printf("a>b\n");
							break;
						}
					}
					if(flag)
						printf("a==b\n");
				}
				
			}
		}
		else {
		if(s2[0]=='-')//一个为正数,一个为负数
			printf("a>b\n");
		else{// 都为正数。
		int c,d;
				c=strlen(s1);
				d=strlen(s2);
				if(c>d){
					printf("a>b\n");
				}
				else if(c<d){
					printf("a<b\n");
				}
				else{
					int flag=1;
					for(int i=0;i<=strlen(s1)-1;i++){
						if(s1[i]>s2[i]){
							flag=0;
							printf("a>b\n");
							break;
						}
						if(s1[i]<s2[i]){
							flag=0;
							printf("a<b\n");
							break;
						}
					}
					if(flag)
						printf("a==b\n");
		}
	}
	}

	}
}

抱歉!评论已关闭.