查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
33、把数组排成最小的数。假设给定数组{3,32,321},则其排成的最小的数就是321323.
析分:
由于这里给的数组可能很长,如果用一个特定的类型来放存可能会致使出溢,所以用采字符串来处置。定义一种新的比拟式方,对数组中的数停止序排,然后从小到大输出可即。
#include<stdio.h> #include<stdlib.h> #include<string.h> const int N = 15; char GlobalStr1[2*N]; char GlobalStr2[2*N]; int compare(const void *a, const void *b) { strcpy(GlobalStr1, (char *)a); strcat(GlobalStr1, (char *)b); strcpy(GlobalStr2, (char *)b); strcat(GlobalStr2, (char *)a); return strcmp(GlobalStr1, GlobalStr2);//a在前小,则a小 } int main() { int n,i; int arr[N]; char str[N][N]; while(scanf("%d", &n) != EOF) { for(i = 0; i < n; ++i) { scanf("%d", &arr[i]); sprintf(str[i], "%d", arr[i]); } qsort(str, n, sizeof(char) * N, compare); for(i = 0; i < n; ++i) printf("%s", str[i]); printf("\n"); } return 0; }
文章结束给大家分享下程序员的一些笑话语录: 某程序员对书法十分感兴趣,退休后决定在这方面有所建树。花重金购买了上等的文房四宝。一日突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风 范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world.