南阳73 比大小

    xiaoxiao2021-03-25  126

    比大小

    时间限制: 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; int judge(char *a,char *b) { int l1,l2; l1=strlen(a); l2=strlen(b); if(a[0]=='-'&&b[0]=='-') { for(int i=1;i<l1;i++) { if(a[i]>b[i]) return 0; if(a[i]<b[i]) return 1; } return 2; } else { for(int i=0;i<l1;i++) { if(a[i]>b[i]) return 1; if(a[i]<b[i]) return 02; } return 2; } } int main() { char a[1100],b[1100]; while(scanf("%s %s",a,b)) { int flag=1;//2:a==b 1:a>b 0:a<b; if(a[0]=='0'&&b[0]=='0') break; else if(a[0]=='-'&&b[0]!='-') flag=0; else if(a[0]!='-'&&b[0]=='-') flag=1; else if(a[0]=='-'&&b[0]=='-') { int l1,l2; l1=strlen(a); l2=strlen(b); if(l1<l2) flag=1; else if(l1>l2) flag=0; else if(l1==l2) flag=judge(a,b); } else if(a[0]!='-'&&b[0]!='-') { int l1,l2; l1=strlen(a); l2=strlen(b); if(l1<l2) flag=0; else if(l1>l2) flag=1; else if(l1==l2) flag=judge(a,b); } if(flag==2) printf("a==b\n"); if(flag==1) printf("a>b\n"); if(flag==0) printf("a<b\n"); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1656.html

    最新回复(0)