输入A,B,C三个学生的分数,输出分数居中的那个学生的名字(A、B或C)及考试分数。(如果A、B分数相同,输出学生A及其成绩)

输入A,B,C三个学生的分数,输出分数居中的那个学生的名字(A、B或C)及考试分数。(如果A、B分数相同,输出学生A及其成绩)

思路:

这个题可以把abc的值从大到小存入数组中, 排完序在从数组中取出来。
总共三个数,
第一个数等于第二个数, 就输出第一个数。
第一个数大于第二个数, 就是从第二个数。

代码:
#include <stdio.h>

int main()
{
    int arr[3]; // 用来存从大到小的数字。
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    arr[0] = a;
    arr[1] = b;
    arr[2] = c;
    int tmp;

    // 按照从小到大的顺序把a, b, c存入数组arr中。
    if(a < b)
    {
        arr[0] = b;
        arr[1] = a;
        if(c > a)
        {
            arr[1] = c;
            arr[2] = a;
        }
        if(c > b)
        {
            arr[0] = c;
            arr[1] = b;
        }
    }
    else if(a >= b)
    {
        if(c > b)
        {
            arr[1] = c;
            arr[2] = b;
        }
        if(c > a)
        {
            arr[0] = c;
            arr[1] = a;
        }
    }

    // 输出中间的数。
    // 首先判断arr中前两个数相不相等, 相等输出第一个数, 不等输出第二个数。
    if(arr[0] > arr[1]) // 输出第二个数arr[1]
    {
        if(arr[1] == a) printf("A %d\n", a);
        else if(arr[1] == b) printf("B %d\n", b);
        else if(arr[1] == c) printf("C %d\n", c);
    }
    else   // 这里是第一个数等于第二个数的情况, 输出第一个数arr[0]。
    {
        if(arr[0] == a) printf("A %d\n", a);
        else if(arr[0] == b) printf("B %d\n", b);
        else if(arr[0] == c) printf("C %d\n", c);
    }

    return 0;
}