题目要求:
图片说明
题解代码:
图片说明
对于决定考研的小白,为了增加考研通过率(复试要上机),上手起来有不少的challenge!听到编译成功的声音,打心里面是乐开了花!只要坚持,一定能成功!

好,下面开始正确的解题分析记录:

girl!show time!

  1. 实现多组数据的输入,并且用数组来进行存储,往往采用下面的代码方式:
    while(scanf("%d",&n)!=EOR)
    {
      for (int i=0;i<n;i++)
           scanf("%d",&buf[i]);
    }

第一,scanf函数是有返回值的(尽管大多时候都会被人忽略),它将返回被输入函数成功赋值的变量个数。

第二,我们也要注意到,该例题面中明确了输入数据会有多组,我们将要对每组输入都输出相应答案。并且,事先我们并不知道将会有多少组数据被输入到程序中。于是,我们可以使用该循环测试条件来完成对输入是否结束的判断。

  1. 对成绩进行排序的处理方法:
    我们将要在程序中使用了 sort 库函数。
    sort(buf,buf+n,cmp);
    注意:第三个参数cmp升序情况下可以不写,降序情况需要多调用一个函数
    参数:
    (1)strat表示要排序的起始地址;
    (2)end表示数组结束地址的下一位
    (3)cmp用于规定排序方法,可以不填,默认升序

我们在头文件方面包含了algorithm 头文件,并使用 using namespace std;语句声明了我们将会使用标准命名空间(sort 被定义在其中)。此例中,sort 函数的两个参数代表待排序内存的起始地址和结束地址(sort 函数还有另外的重载形式,在后文中会有所提及),在此例中起始地址为 buf,结束地址为 buf + n。该函数调用完成后,buf 数组中的数字就已经通过快速排序升序排列。

我们新定义了一个 cmp 函数,来实现对于新的排序规则的定义。关于cmp 函数的定义规则我们只需简单的记得,当 cmp 的返回值为 true 时,即表示cmp 函数的第一个参数将会排在第二个参数之前(即在我们定义的规则中,cmp 表示第一个参数是否比第二个参数大,若是,则排在前面)。为了实现降序排列,我们只要判断两个参数的大小,当第一个参数比第二个参数大时返回true。然后,只需要调用 sort 函数的另一种重载方式:sort(排序起始地址,排序结束地址,比较函数).

3. 对于数组输出的处理方法:

for(int i=0;i<n;i++)
{
    printf("%d\n",&buf[i]);
}