好的,以下是我设计的程序,请您查看:
```c
#include <stdio.h>
#include <string.h>
// 定义球员数据结构体类型
typedef struct {
int no; // 编号
char season[20]; // 赛季
int age; // 年龄
float trb; // 篮板
float ast; // 助攻
float pts; // 得分
} PlayerData;
// 初始化球员数据函数
void init(PlayerData *data) {
data[0] = (PlayerData) {1, "1996-97", 18, 1.9, 1.3, 7.6};
data[1] = (PlayerData) {2, "1997-98", 19, 3.1, 2.5, 15.4};
data[2] = (PlayerData) {3, "1998-99", 20, 5.3, 3.8, 19.9};
data[3] = (PlayerData) {4, "1999-00", 21, 6.3, 4.9, 22.5};
data[4] = (PlayerData) {5, "2000-01", 22, 5.9, 5, 28.5};
data[5] = (PlayerData) {6, "2001-02", 23, 5.5, 5.5, 25.2};
data[6] = (PlayerData) {7, "2002-03", 24, 6.9, 5.9, 30};
data[7] = (PlayerData) {8, "2003-04", 25, 5.5, 5.1, 24};
data[8] = (PlayerData) {9, "2004-05", 26, 5.9, 6, 27.6};
data[9] = (PlayerData) {10, "2005-06", 27, 5.3, 4.5, 35.4};
data[10] = (PlayerData) {11, "2006-07", 28, 5.7, 5.4, 31.6};
data[11] = (PlayerData) {12, "2007-08", 29, 6.3, 5.4, 28.3};
data[12] = (PlayerData) {13, "2008-09", 30, 5.2, 4.9, 26.8};
data[13] = (PlayerData) {14, "2009-10", 31, 5.4, 5, 27};
data[14] = (PlayerData) {15, "2010-11", 32, 5.1, 4.7, 25.3};
data[15] = (PlayerData) {16, "2011-12", 33, 5.4, 4.6, 27.9};
data[16] = (PlayerData) {17, "2012-13", 34, 5.6, 6, 27.3};
data[17] = (PlayerData) {18, "2013-14", 35, 4.3, 6.3, 13.8};
data[18] = (PlayerData) {19, "2014-15", 36, 5.7, 5.6, 22.3};
data[19] = (PlayerData) {20, "2015-16", 37, 3.7, 2.8, 17.6};
}
// 找到最高得分和次高得分
void findMaxAndSecondMax(PlayerData *data, int start, int end, PlayerData *max, PlayerData *secondMax) {
int i;
*max = data[start];
*secondMax = data[start + 1];
for (i = start + 2; i <= end; i++) {
if (data[i].pts > max->pts) {
*secondMax = *max;
*max = data[i];
} else if (data[i].pts > secondMax->pts) {
*secondMax = data[i];
}
}
}
int main() {
PlayerData data[20];
PlayerData max, secondMax;
int a, b;
init(data);
printf("请输入两个不同的赛季序号a和b(均已满足 1<=a<=20,1<=b<=20,a和b间隔不少于2):\n");
scanf("%d%d", &a, &b);
findMaxAndSecondMax(data, a - 1, b - 1, &max, &secondMax);
printf("%s %d %.1f %.1f %.1f\n", max.season, max.age, max.trb, max.ast, max.pts);
printf("%s %d %.1f %.1f %.1f\n", secondMax.season, secondMax.age, secondMax.trb, secondMax.ast, secondMax.pts);
return 0;
}
```
程序说明:
1. 我们定义了一个球员数据的结构体类型,包括编号、赛季、年龄、篮板、助攻和得分。
2. 我们编写了一个初始化球员数据的函数,用于初始化20年的数据。
3. 我们编写了一个查找最高得分和次高得分的函数,该函数接受开始和结束位置,以及两个指针参数,用于返回最高得分和次高得分的球员数据。
4. 在主函数中,我们先初始化球员数据,然后输入两个赛季的序号a和b,调用函数查找范围内的最高得分和次高得分,并输出相关信息。
注意:程序中的年龄、篮板、助攻和得分数据均为浮点数,需要使用%f进行格式化输出。