设为首页 加入收藏

TOP

C++大整数排序
2013-07-23 09:04:40 来源: 作者: 【 】 浏览:137
Tags:整数 排序

  题目描述

  对N个长度最长可达到1000的数进行排序。

  输入

  输入第一行为一个整数N,(1<=N<=100)。

  接下来的N行每行有一个数,数的长度范围为1<=len<=1000.

  每个数都是一个正数,并且保证不包含前缀零。

  输出

  可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

  样例输入

  4

  123

  1234

  12345

  2345

  样例输出

  123

  1234

  2345

  12345

  提示 [+]

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

  }

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

  }

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇从递推问题到递推公式 下一篇IPC机制之事件源码分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: