zoukankan      html  css  js  c++  java
  • 随机一条字符串,包含英文、数字、特殊符号,筛选出其中的数字部分并进行从小到大的排序

    例:

    输入:423dxqjkx81

    输出:12348

    思路:首先通过随机字符串的每个字符进行Ascall码进行分析,通过Ascall筛选出数字部分并将数字的字符转化为数字,保存到一个数组中,利用冒泡排序的子函数对该数组进行排序,输出结果。

    程序如下:

     #include <iostream>
    #include<vector>
    #include<cstdlib>
    #include<cstring>
    using namespace std;
    void sort(int nums[],int l)
    {    
    int i, j, temp;
    for(i=0; i<l-1; i++){
            //每一轮比较前 n-1-i 个,也就是说,已经排序好的最后 i 个不用比较
            for(j=0; j<l-1-i; j++){
                if(nums[j] > nums[j+1]){
                    temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
       cout<<"输出结果:"<<endl; 
        //输出排序后的数组
        for(i=0; i<l; i++){
            cout<<("%d ", nums[i]);
        }
             
    }
    
    int main()
    {
        string instr,temstr;
        int len=0; 
        cout<<"输入一条字符串,数字,字母,特殊符号都要包括:"<<endl; 
        getline(cin,instr);
        len=instr.length();
        for(int i=0;i<len;i++)
        {
            char s=instr[i];
            //cout<<(int)s<<endl;
            if((int)s>=48&&(int)s<=57)
            {
                temstr.append(instr,i,1);
            }
        }
      
      int l=temstr.length();
      int num[l];
      for(int i=0;i<l;i++)
      {
          num[i]=temstr[i]-48;//字符到数字的转化
       } 
      sort(num,l);
    }
     


     部分Ascall码对照表

    主函数里面对数字字符进行了筛选、提取、转换为数字(从对照表可以看到0-9数字与它们的Ascall码之间的差值都是48)、保存。sort子函数是一个冒泡排序,实现对保存的数字进行从小到大的排序。

    程序运行结果:

  • 相关阅读:
    【Java 学习笔记】 问题列表
    【Weka】Weka聚类
    【MFC 学习笔记】MFC BUG
    【Java 学习笔记】 变量转换
    【MFC 学习笔记】CheckListBox
    Http Handler 介绍
    C# HttpWebRequest可断点上传,下载文件;SOCKET多线程多管道可断点传送大文件
    SQL Server 2005 常用数据类型详解
    浅谈OCR之Tesseract
    [理财产品] 招行新的日日金8158
  • 原文地址:https://www.cnblogs.com/victorywr/p/12756132.html
Copyright © 2011-2022 走看看