每日打卡一小时(第三十三天)

发布时间 2023-05-24 20:30:40作者: 伐木工熊大

一.问题描述

对于输入的每一批数,按从小到大排序后输出。

一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。

输出将从小到大顺序输出数据。

二.设计思路

注意函数模板的使用方式

三.代码实现

#include <iostream>
#include <string>
using namespace std;

template <class T>
void sort(T *a, int size)
{
    T t;
    for(int i=0;i<size;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<size-1;i++)//选择排序找最小值放到最前面
        for(int j=i+1;j<size;j++)
        {
          if(a[i]>a[j])
          {
              t=a[i];
               a[i]=a[j];
              a[j]=t;
          }
        }
}

template <class T>
void display(T* a, int size){
    for(int i=0; i<size-1; i++) cout<<a[i]<<' ';
    cout<<a[size-1]<<endl;
}
int main() {
     const int SIZE=10;
     int a[SIZE];
     char b[SIZE];
     double c[SIZE];
     string d[SIZE];
     int ty, size;
     cin>>ty;
     while(ty>0){
         cin>>size;
         switch(ty){
             case 1:sort(a,size); display(a,size); break;
             case 2:sort(b,size); display(b,size); break;
             case 3:sort(c,size); display(c,size); break;
             case 4:sort(d,size); display(d,size); break;
         }
         cin>>ty;
     }
      return 0;
}