输入两个实数,判断第一个数大,第二个数大还是一样大。每个数的格式为: [整数部分].[小数部分]
简单起见,整数部分和小数部分都保证非空,且整数部分不会有前导 0。不过,小数部分的最 后可以有 0,因此 0.0 和 0.000 是一样大的。
1.0 2.0 0.00001 0.00000 0.0 0.000
Case 1: Smaller Case 2: Bigger Case 3: Same
注意细节就好,整数先判断,相同的话再一直判断到有不同为止,还没有出结果就判断到两字符串结束,若还是没有结果,那就是same了
代码
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
char s1[105],s2[105];
int cas=1;
int n1,n2,temp;
while(~scanf("%s%s",s1,s2))
{
if(s1[0]>s2[0])
printf("Case %d: Bigger\n",cas++);
else if(s1[0]<s2[0])
printf("Case %d: Smaller\n",cas++);
else
{
bool label;
bool finish=false;
n1=strlen(s1);
n2=strlen(s2);
temp=min(n1,n2);
for(int i=0;i<temp;i++)
if(s1[i]!=s2[i])
{
finish=true;
if(s1[i]<s2[i])
label=false;
else
label=true;
break;
}
if(!finish&&n1!=n2)
{
if(n1>n2)
{
for(int i=temp;i<n1;i++)
if(s1[i]-'0'>0)
{
finish=true;
label=true;
break;
}
}
else
{
for(int i=temp;i<n2;i++)
if(s2[i]-'0'>0)
{
finish=true;
label=false;
break;
}
}
}
if(finish)
{
if(label)
printf("Case %d: Bigger\n",cas++);
else
printf("Case %d: Smaller\n",cas++);
}
else
printf("Case %d: Same\n",cas++);
}
}
return 0;
}
7694

被折叠的 条评论
为什么被折叠?



