1. 程式人生 > >csu 1777大還是小

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;
}