csu 1777大還是小
阿新 • • 發佈:2019-01-30
以前做類似的題都是通過小數點分割整數小數按位去比較大小,操作複雜且易出錯
這次使用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; }