csu 1777大还是小

以前做类似的题都是通过小数点分割整数小数按位去比较大小,操作复杂且易出错

这次使用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;
}

猜你喜欢

转载自blog.csdn.net/love_phoebe/article/details/81152811