排序

排序

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 76744 Accepted Submission(s): 23387

Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。

你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。

Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。

输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。

Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。

Sample Input
0051231232050775

Sample Output
0 77 12312320、

问题链接: 排序

问题简述:

输入一组长度可达1000位的数。这组数被“5”分割成若干组数。从小到大输入这些数。

问题分析:

因为要输入的位数较大,所以用字符来接受。接着找出每一组被分割出的数,然后加个排序。

程序说明:

本程序利用char[1000]来接收输入的数。当输入不为空时从第一个不为“5”的字符开始录入p数组中,直到出现“5”停止这个数的录入。循环这个过程。最后冒泡排序输出。

AC通过的C语言程序如下:

    #include"stdafx.h"
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	char num[1000] = { 0 };		 //用户输入的数
    	int n, i;					//n是记录被5分出了多少组数,i是记录目前在num【1000】中的位置
    	int p[500];				//保存被分出的数
    	
    	while (cin >> num)
    	{
    	//初始化p,n,i
    		for (i = 0; i < 500; i++)
    		{
    			p[i] = -1;
    		}
    		n = 0;
    		i = 0;
    	//开始分析输入的数
    		while (num[i] != 0)
    		{
    			while (num[i] != 53)
    			{
    				if (num[i] == 0)break;
    				if (p[n] == -1)p[n] = 0;
    				p[n] = p[n] * 10 + int(num[i] - 48);
    				i++;
    			}
    			if (p[n] != -1)n++;
    			i++;
    		}
    	//按大小排序
    		for (int j = 0; j < n; j++)
    		{
    			for (int h = j; h < n; h++)
    			{
    				if (p[j] > p[h])
    				{
    					int t = p[j];
    					p[j] = p[h];
    					p[h] = t;
    				}
    			}
    		}
    	//按格式输出
    		for (int h = 0; h < n-1; h++)
    		{
    			cout << p[h]<<" ";
    		}
    		cout << p[n - 1];
    		cout << endl;
    	}
    	return 0;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值