1 (20分) 某班有10个学生,学生编号为1到10,定义—个数组存放学生数学成绩,成绩保留1位小数,成绩 范围[o.0,100.0]; 要求:写三个函数,使用指针变量作为函数参数分别完成 1、将输入的10个成绩保存到数组中,需要有数据合法性验证; 2、求成绩中的最高成绩、最低成绩、最高成绩的学生编号、最低成绩的学生编号; 3、输出最高成绩、最低成绩、最高成绩的学生编号、最低成绩的学生编号: 4、不允许使用外部变量; 说明:需要考虑成绩存在重复的情况,可能存在多个最高成绩利和多个最低成绩,并列的学生编号 都要列出来;
时间: 2023-03-20 18:02:26 浏览: 85
好的,以下是我的回答:
1. 首先,我们可以定义一个长度为10的数组,用于存放10个学生的成绩。为了保证数据合法性,可以在输入数据时进行判断,如果输入的成绩不在[0.0,100.0]范围内,则要求用户重新输入,直到输入的成绩符合要求为止。以下是实现输入成绩的函数:
```
void input_scores(float *scores) {
int i;
for (i = 0; i < 10; i++) {
float score;
do {
printf("请输入学生%d的成绩:", i + 1);
scanf("%f", &score);
} while (score < 0.0 || score > 100.0);
scores[i] = score;
}
}
```
2. 求最高成绩、最低成绩及其对应的学生编号,可以编写一个函数,遍历数组,记录当前的最高分数和最低分数,以及它们对应的学生编号。如果出现新的最高分数或最低分数,则更新对应的学生编号。以下是实现求最高成绩、最低成绩及其对应学生编号的函数:
```
void find_max_min_scores(float *scores, int *max_stu_id, int *min_stu_id, float *max_score, float *min_score) {
int i;
*max_stu_id = *min_stu_id = 0;
*max_score = *min_score = scores[0];
for (i = 1; i < 10; i++) {
if (scores[i] > *max_score) {
*max_score = scores[i];
*max_stu_id = i;
} else if (scores[i] == *max_score) {
*max_stu_id = (*max_stu_id < i) ? *max_stu_id : i;
}
if (scores[i] < *min_score) {
*min_score = scores[i];
*min_stu_id = i;
} else if (scores[i] == *min_score) {
*min_stu_id = (*min_stu_id < i) ? *min_stu_id : i;
}
}
}
```
3. 最后,我们可以编写一个函数,调用上述两个函数,输出最高成绩、最低成绩及其对应的学生编号。注意,如果有多个学生的成绩与最高成绩或最低成绩相同,则需要在输出时列出它们对应的学生编号。以下是实现输出最高成绩、最低成绩及其对应学生编号的函数:
```
void print_max_min_scores(float *scores, int *max_stu_id, int *min_stu_id, float *max_score, float *min_score) {
int i;
printf("最高成绩为%.1f,对应的学生编号为:", *max_score);
for (i = 0; i < 10; i++) {
if (scores[i] == *max_score) {
printf("%d ", i + 1);
}
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)