以前做类似的题都是通过小数点分割整数小数按位去比较大小,操作复杂且易出错
这次使用strcmp函数
需要注意两点:1,后面位数不够的要补齐 2,strcmp遇到'\0'会停止,可以通过添加'\0'结束比较
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=110;
char a[maxn],b[maxn],c[maxn],d[maxn];
int find(int x,int y){return (x>y)?x:y;}
int main(){
int i,j,Case=0;
while(~scanf("%s%s",a,b)){
int Len=find(strlen(a),strlen(b));
for(i=strlen(a);i<Len;i++)a[i]='0';
for(j=strlen(b);j<Len;j++)b[j]='0';
a[i]=b[j]='\0';
for(i=0;a[i]!='.';i++);
for(j=0;b[j]!='.';j++);
a[i]=b[j]='\0';
int status=0;
printf("Case %d: ",++Case);
if(strcmp(a,b)>0)status=1;
else if(strcmp(a,b)<0)status=2;
if(status==0){
strcpy(c,a+i+1);
strcpy(d,b+j+1);
if(strcmp(c,d)>0)status=1;
else if(strcmp(c,d)<0)status=2;
}
if(status==0)printf("Same\n");
else if(status==1)printf("Bigger\n");
else printf("Smaller\n");
}
return 0;
}