啊丹(1)

题目描述

啊丹作为班上的学习委员,做事认真、积极。因此教务办的陈老师
经常找啊丹做事,每天基本上2,3次,很奇怪吧…这次陈老师要啊丹将自己班上同学的java成绩由高到低
排序,然后将10级2个班的java成绩合并后按高低排序;最后还要把自己
班上同学的姓名按其组成字符串的大小进行降序排序后打印出花名册。啊丹
希望大家编写一个Sort函数来帮他完成这些工作。
要求:通过重载Sort函数分别实现对一个整型数组的排序(A操作),2个整型数组的
合并排序(B操作),以及一个字符串数组的排序(C操作)。并且重载Display函数输出排好序的
整型数组和字符数组。
函数模板:
void Sort(int a[],int sizeOfA);//A操作
void Sort(int a[],int sizeOfA,int b[],int sizeOfB,int c[]);//B操作,数组a,b合并排序后放c;
void Sort(string str[],int n);//C操作
void Display(int a[],int sizeOfA);void Display(string str[],int n);
输入
输入第一行为(A,B,C)中的一个字母分别表示A,B,C三种操作。
对于A操作第二行为一个整数,表示待排序数组大小n,第三行为n个整数,表示待排序数组。
对于B操作第二行为一个整数,表示待排序数组a的大小n,第三行为n个整数,表示待排序数组a,
第四行为一个整数m,第五行为m个整数,表示待排序数组b。
对于C操作第二行为一个整数,表示待排序字符串数组大小n,第三行为n个字符串,表示待排序字符串数组。
测试数据有多组
输出
如果输入为A,则对a数组排序,并输出。用空格分隔
如果输入为B,则对a,b数组进行合并排序,并输出合并后数组c。用空格分隔
如果输入为C,则对str进行排序,并输出,用空格分隔

分析:此题题意十分简单,但是代码却是比较啊麻烦的。容易出错,需要注意.
void SortA(int a[],int n)
     {
         int i,j,t;
         for(i=0;i<n-1;i++)
            for(j=i;j<n;j++)
         {      if(a[i]<a[j])
                  {
                      t=a[i];a[i]=a[j];a[j]=t;
                  }

         }
      for(i=0;i<n-1;i++)
      {
          printf("%d ",a[i]);
      }
      printf("%d\n",a[i]);
     }
void SortB(int a[],int b[],int c[],int A,int B)
     {
         int i,j,k,t;
         for(i=0;i<A-1;i++)
             for(j=i;j<A;j++)
                if(a[i]<a[j])
         {
             t=a[i];a[i]=a[j];a[j]=t;
         }
        for(i=0;i<B-1;i++)
             for(j=i;j<B;j++)
                if(b[i]<b[j])
         {
             t=b[i];b[i]=b[j];b[j]=t;
         }
       /*   printf("A数组:\n");
         for(i=0;i<A;i++)
            printf("%d ",a[i]);
            printf("\n");
         printf("B数组:\n");
         for(i=0;i<B;i++)
            printf("%d ",b[i]);
            printf("\n");*/
         k=0;
         for(i=0,j=0;i<A&&j<B;)
         {
             if(a[i]>b[j])
             {
                 c[k++]=a[i];i++;
             }
             else
             {
                 c[k++]=b[j];j++;
             }
         }
         while(i<A)
         {
             c[k++]=a[i];i++;
         }
         while(j<B)
         {
             c[k++]=b[j];j++;
         }
         for(i=0;i<k-1;i++)
            printf("%d ",c[i]);
         printf("%d\n",c[i]);
     }
void SortC(char str[100][20],int n)
      {
          int i,j,k;
          char t[20];
          for(i=0;i<n-1;i++)
            for(j=i;j<n;j++)
          {
              if(strcmp(str[i],str[j])<0)
              {
                  strcpy(t,str[i]);
                  strcpy(str[i],str[j]);
                  strcpy(str[j],t);
              }

          }
          for(i=0;i<n;i++)
             printf("%s\n",str[i]);
      }
int main()
{
    char str[100][20],opre;
    int a[100],b[100],c[200],i,j,k,n,m;
    while(~scanf("%c",&opre))
    {
        if(opre=='A')
        {
            scanf("%d",n);
            for(i=0;i<n;i++)
                scanf("%d",&a[i]);
            SortA(a,n);
        }
        else
            if(opre=='B')
        {
            scanf("%d",&n);
            for(i=0;i<n;i++)
                scanf("%d",&a[i]);
            scanf("%d",&m);
            for(i=0;i<m;i++)
                scanf("%d",&b[i]);
            SortB(a,b,c,n,m);
        }
        else
            if(opre=='C')
        {
            scanf("%d",&n);
            scanf("%c",&opre);
            for(i=0;i<n;i++)
                scanf("%s",str[i]);
            SortC(str,n);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值