题目描述
给定任意位数长度的两个数,比较它们数值大小。
保证A,B长度不超过5000
输入
每个测试用例含有两个数,代表两个任意位数长度的数A,B.输入的数字符合规范,没有多余的零
输出
比较这两个任意位数长度的数的大小,如果A>B,则输出1;如果A=B,则输出0;如果A<B,则输出-1。
样例输入
123451234512345 543215432154321
54.321 12.345
样例输出
-1
1
分析:
此题可以先比较小数点前面的长度来先判断一波。如果长度相当就比较小数点后面的大小。
#include"stdio.h"
#include"string.h"
int INTleght(char a[])
{
int i,l;
l=strlen(a);
for(i=0;i<l;i++)
if(a[i]=='.')
break;
return i;
}
int cmp(char a[],char b[],int leghta)
{
int i;
for(i=0;i<leghta;i++)
if(a[i]!=b[i])
break;
if(i!=leghta)
return a[i]-b[i];
else
return 0;
}
int cmp1(char a[],char b[],int leghta)
{
return strcmp(a+leghta+1,b+leghta+1);
}
int main()
{
char a[5001],b[5001];
int leghta,leghtb;
int i,j,k,l;
while(~scanf("%s%s",a,b))
{
leghta=INTleght(a);
leghtb=INTleght(b);
if(leghta>leghtb)
printf("%d\n",1);
else
if(leghta<leghtb)
printf("%d\n",-1);
else
if(cmp(a,b,leghta)>0)
printf("%d\n",1);
else
if(cmp(a,b,leghtb)<0)
printf("%d\n",-1);
else
if(cmp1(a,b,leghta)>0)
printf("%d\n",1);
else
if(cmp1(a,b,leghta)<0)
printf("%d\n",-1);
else
printf("%d\n",0);
}
}