补全构造体函数相关问题


struct Record
{
    char name[20];    /* 名字  */
    float sprint;    /* 50m*/
    int jumping;    /* 跑跳*/
    float throwing;    /* 投球*/
    float gripping;    /* 握力  */
};

find_1st_sprint(Record data, int N)      // 50m第一名函数
{
    ...
}

int main(void)
{
    const int N = 5;
    Record data[N] = 
    {
        {"Konno",   9.18, 80,  18.2,  7.7},
        {"Shida",   8.92, 100, 30.5, 24.9},
        {"Sugai",  10.04, 170, 13.8, 27.7},
        {"Hirate",  8.34, 110, 18.1, 18.8},
        {"Watabe",  8.23, 115, 26.0, 21.4},
    };

    print_data(data, N);    /* 全部数据表示*/

    find_1st_sprint(data, N);      /* 50m第一名*/
    ....   /* 跑跳第一名  */
    ....   /*投球第一名  */
    ....   /* 握力第一名*/

    return 0;
}

执行例

名前    50m      跑跳    投球   握力
Konno   9.18       80       18.2      7.7
Shida   8.92      100       30.5     24.9
Sugai  10.04      170       13.8     27.7
Hirate  8.34      110       18.1     18.8
Watabe  8.23      115       26.0     21.4

50m的优胜是Watabe 。
跑跳的Sugai 。
.
.
.

#include <stdio.h>

struct Record
{
    char name[20];    /* 名字  */
    float sprint;    /* 50m*/
    int jumping;    /* 跑跳*/
    float throwing;    /* 投球*/
    float gripping;    /* 握力  */
};

void print_data(Record *data, int N)
{
    int i;
    printf("名称\t50m\t跑跳\t投球\t握力\n");
    for(i = 0; i < N; i++) {
        printf("%s\t%f\t%d\t%f\t%f\n", data[i].name, data[i].sprint, data[i].jumping, data[i].throwing, data[i].gripping);
    }
}

void find_1st_sprint(Record *data, int N)      // 50m第一名函数
{
    int i, j;
    float min;
    min = data[0].sprint;
    j = 0;
    for(i = 1; i < N; i++) {
        if(min > data[i].sprint) {
            min = data[i].sprint;
            j = i;
        }
    }
    printf("50m第一名:%s\n", data[j].name);
}

void find_1st_jumping(Record *data, int N)     // 跑跳第一名函数
{
    int i, j;
    int max;
    max = data[0].jumping;
    j = 0;
    for(i = 1; i < N; i++) {
        if(max < data[i].jumping) {
            max = data[i].jumping;
            j = i;
        }
    }
    printf("跑跳第一名:%s\n", data[j].name);
}

void find_1st_throwing(Record *data, int N)     // 投球第一名函数
{
    int i, j;
    float max;
    max = data[0].throwing;
    j = 0;
    for(i = 1; i < N; i++) {
        if(max < data[i].throwing) {
            max = data[i].throwing;
            j = i;
        }
    }
    printf("投球第一名:%s\n", data[j].name);
}

void find_1st_gripping(Record *data, int N)     // 握力第一名函数
{
    int i, j;
    float max;
    max = data[0].gripping;
    j = 0;
    for(i = 1; i < N; i++) {
        if(max < data[i].gripping) {
            max = data[i].gripping;
            j = i;
        }
    }
    printf("握力第一名:%s\n", data[j].name);
}

int main()
{
    const int N = 5;
    Record data[N] =
    {
        {"Konno",   9.18, 80,  18.2,  7.7},
        {"Shida",   8.92, 100, 30.5, 24.9},
        {"Sugai",  10.04, 170, 13.8, 27.7},
        {"Hirate",  8.34, 110, 18.1, 18.8},
        {"Watabe",  8.23, 115, 26.0, 21.4},
    };

    print_data(data, N);    /* 全部数据表示*/

    find_1st_sprint(data, N);      /* 50m第一名*/
    find_1st_jumping(data, N);     /* 跑跳第一名*/
    find_1st_throwing(data, N);    /* 投球第一名*/
    find_1st_gripping(data, N);    /* 握力第一名*/

    return 0;
}

只需要find_1st_sprint函数???
print_data函数好像也没有啊
find_1st_sprint(Record data, int N)函数参数也不对啊,应该是Record *data。这函数名是可以修改的?后面注释是要加一批查询各种第一名的函数?
需求说清楚一些才行

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^