当前位置:编程学习 > C/C++ >>

天勤OJ 题目1141: 大整数排序

题目描述
对N个长度最长可达到1000的数进行排序。
 
 
 
 
输入
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
 
 
 
 
输出
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
 
 
 
 
样例输入
4
123
1234
12345
2345 
 
样例输出
123
1234
2345
12345 
 
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
 
 
 
来源
2006年华中科技大学计算机研究生机试真题
 
 
 
 
 
 
 
[cpp] 
/********************************* 
*   日期:2013-2-21 
*   作者:SJF0115 
*   题号: 天勤OJ 题目1141: 大整数排序 
*   来源:http://acmclub.com/problem.php?id=1141 
*   结果:AC 
*   来源:2006年华中科技大学计算机研究生机试真题 
*   总结: 
**********************************/  
#include<stdio.h>   
#include<stdlib.h>   
#include<string.h>   
  
typedef struct Integer{  
    int len;//长度   
    char N[1001];//数字   
}Integer;  
//排序函数   
int cmp(const void *a,const void *b){  
    struct Integer *c = (Integer *)a;  
    struct Integer *d = (Integer *)b;  
    if(c->len != d->len){  
        return c->len - d->len;  
    }  
    else{  
        return strcmp(c->N,d->N);  
    }  
}  
  
int main()  
{  
    int n,i;  
    Integer array[101];  
    while(scanf("%d",&n) != EOF){  
        //输入   
        for(i = 0;i < n;i++){  
            scanf("%s",array[i].N);  
            array[i].len = strlen(array[i].N);  
        }  
        //排序   
        qsort(array,n,sizeof(array[0]),cmp);  
        //输出   
        for(i = 0;i < n;i++){  
            printf("%s\n",array[i].N);  
        }  
    }  
    return 0;  
}  
 
/*********************************
*   日期:2013-2-21
*   作者:SJF0115
*   题号: 天勤OJ 题目1141: 大整数排序
*   来源:http://acmclub.com/problem.php?id=1141
*   结果:AC
*   来源:2006年华中科技大学计算机研究生机试真题
*   总结:
**********************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
typedef struct Integer{
int len;//长度
char N[1001];//数字
}Integer;
//排序函数
int cmp(const void *a,const void *b){
struct Integer *c = (Integer *)a;
struct Integer *d = (Integer *)b;
if(c->len != d->len){
return c->len - d->len;
}
else{
return strcmp(c->N,d->N);
}
}
 
int main()
{
int n,i;
Integer array[101];
while(scanf("%d",&n) != EOF){
//输入
for(i = 0;i < n;i++){
scanf("%s",array[i].N);
array[i].len = strlen(array[i].N);
} www.zzzyk.com
//排序
qsort(array,n,sizeof(array[0]),cmp);
//输出
for(i = 0;i < n;i++){
printf("%s\n",array[i].N);
}
}
return 0;
}
 
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,