1. 程式人生 > >ZZULIOJ 1169: 大整數(指標專題)

ZZULIOJ 1169: 大整數(指標專題)

題目描述輸入3個大整數,位數不超過100位,按從小到大的順序輸出這三個整數。要求定義並使用如下函式比較兩個大整數的大小。

int cmp(char *a,char *b)

{

//若大整數a大於b,返回1;

//若a小於b,返回-1;

// 若a與b相等,返回0

}
輸入輸入有3行,每行輸入一個大整數,位數不超過100位,輸入不含前導0。
輸出輸出3行,即排序後的3個大整數。
樣例輸入1234567890123456789
99999999999999
111111111111111

樣例輸出99999999999999
111111111111111
1234567890123456789

#include<stdio.h>
#include<string.h>
int bj(char* a,char* b);
int main(){
       char a[110],b[110],c[110],max[110];
       scanf("%s%s%s",a,b,c);
       if(bj(a,b)==1)
       strcpy(max,a),strcpy(a,b),strcpy(b,max);
       if(bj(a,c)==1)
       strcpy(max,a),strcpy(a,c),strcpy(c,max);
       if
(bj(b,c)==1) strcpy(max,b),strcpy(b,c),strcpy(c,max); printf("%s\n%s\n%s\n",a,b,c); return 0; } int bj(char* a,char* b){ int len1=strlen(a),len2=strlen(b); if(a[0]=='-'&&b[0]!='-')return -1; // a<b else if(a[0]!='-'&&b[0]=='-')return
1; // a>b else if(a[0]=='-'&&b[0]=='-'){ if(len1>len2) return -1; // a<b else if(len2>len1) return 1; //a>b else { if(strcmp(a,b)>0) return -1; else if(strcmp(a,b)<0) return 1; else return 0; } } if(a[0]!='-'&&b[0]!='-'){ if(len1<len2) return -1; // a<b else if(len2<len1) return 1; //a>b else { if(strcmp(a,b)<0) return -1; //a<b else if(strcmp(a,b)>0) return 1; //a>B else return 0; } } }