用c写从键盘输入40名学生成绩,找出其中最高分,最低分和平均分
时间: 2023-05-26 11:02:24 浏览: 141
#include <stdio.h>
int main(void) {
int scores[40];
int highest = 0, lowest = 100, sum = 0;
float average;
int i;
// 从键盘读入40名学生成绩
for (i = 0; i < 40; i++) {
printf("请输入第%d名学生的成绩:", i + 1);
scanf("%d", &scores[i]);
sum += scores[i];
if (scores[i] > highest) {
highest = scores[i];
}
if (scores[i] < lowest) {
lowest = scores[i];
}
}
average = (float) sum / 40;
printf("最高分:%d\n", highest);
printf("最低分:%d\n", lowest);
printf("平均分:%.2f\n", average);
return 0;
}
相关问题
利用c语言设计完成如下功能的程序:找出五个评委分数中的最高分和最低分,去掉之后计算平均分,针对一个选手,在屏幕上先将输入各评委的打分,要求找出五个评委分数中的最高分和最低分,去掉之后计算平均分。
### 回答1:
这是一个关于使用C语言设计程序的问题。要求找出五个评委分数中的最高和最低分,去掉后计算平均分,并选择一个选手,在屏幕上先输入各评委的打分,要求找出五个评委分数中的最高和最低分,去掉后计算平均分,并要求找出五个评委分数中的最高分和最低分,去掉后计算平均分。
### 回答2:
本程序主要完成的功能是,针对一个选手,输入五个评委的打分,去掉最高分和最低分,计算出其余三个评委的得分的平均分。
程序设计思路如下:
1. 首先定义一个数组judgelist,来存储五个评委的打分,定义变量max和min,分别表示最高分和最低分,初始值设为0和10;
2. 通过for循环来依次输入五个评委的打分,同时在输入时判断是否为最高分或最低分;
3. 输入完五个分数后,通过for循环遍历judgelist数组,找到最高分和最低分,将其赋值给max和min;
4. 通过for循环遍历judgelist数组,将除去最高分和最低分的三个分数相加,然后除以3,得到平均分score;
5. 将得到的最高分max、最低分min和平均分score输出到屏幕上。
程序的核心代码如下:
```
int judgelist[5]; //定义评委数组
int max = 0, min = 10; //初始化最高分和最低分
//输入评委分数并找出最高分和最低分
for (int i = 0; i < 5; i++) {
printf("请输入第%d个评委的打分:", i+1);
scanf("%d", &judgelist[i]);
if (judgelist[i] > max) {
max = judgelist[i];
}
if (judgelist[i] < min) {
min = judgelist[i];
}
}
//去掉最高分和最低分,计算平均分
float score = 0;
for (int i = 0; i < 5; i++) {
if (judgelist[i] != max && judgelist[i] != min) {
score += judgelist[i];
}
}
score = score / 3;
//输出最高分、最低分和平均分
printf("最高分:%d,最低分:%d,平均分:%.2f", max, min, score);
```
这样,我们就通过C语言的编程实现了这个评委打分的计算程序。当然,在实际应用过程中,还需考虑许多细节问题,比如输入分数的有效性判断、输出格式的美观、程序的可靠性等等。
### 回答3:
本题需用到C语言的基本语法和逻辑设计。
首先,需要从键盘上获取五个评委的分数,并存储在数组中。可以使用for循环来输入每个评委的分数。输入时,需要记录最高分和最低分,以便后续使用。
接下来,进行去除最高分和最低分的计算。可以使用for循环遍历数组,找到最高分和最低分的位置,并将其从数组中删除。可以使用一种简单的方法:将最高分和最低分的位置设为 -1,然后再计算平均数时跳过这两个位置即可。
最后,计算剩余分数的平均分。可以使用循环遍历数组,计算其和,再除以评委人数减去2(即排除了最高分和最低分)。
代码示例如下所示:
```
#include <stdio.h>
#define NUM_JUDGES 5
int main()
{
int scores[NUM_JUDGES];
int i, max_idx, min_idx;
float sum = 0, avg;
// 获取评委分数
for (i = 0; i < NUM_JUDGES; i++) {
printf("请输入第%d位评委的分数: ", i + 1);
scanf("%d", &scores[i]);
if (i == 0) {
max_idx = min_idx = i;
} else {
if (scores[i] > scores[max_idx]) {
max_idx = i;
}
if (scores[i] < scores[min_idx]) {
min_idx = i;
}
}
}
// 去除最高分和最低分
scores[max_idx] = -1;
scores[min_idx] = -1;
// 计算平均分
for (i = 0; i < NUM_JUDGES; i++) {
if (scores[i] != -1) {
sum += scores[i];
}
}
avg = sum / (NUM_JUDGES - 2);
// 显示结果
printf("去除最高分和最低分后,选手的平均分为: %.2f\n", avg);
return 0;
}
```
在运行程序后,会依次提示输入每个评委的分数。输入完成后,程序会自动计算并显示去除最高分和最低分后的平均分。
编写C++程序实现下列要求: 逾六 有5个学生的数据,每个学生的数据包括学号、姓名、年龄、成绩(3门课),从键盘输入5个学生的数据,要求计算出每个学生的平均分,并将平均分最高的和最低的学生的信息输出(学号、姓名、年龄、成绩(3门课)、平均分)。
要编写一个C++程序来满足这个要求,你需要创建一个结构体表示学生信息,然后定义一个函数用于获取用户输入并计算平均分数。最后,你需要遍历所有学生找出最高和最低的平均分以及对应的学号、姓名、年龄、成绩和平均分。以下是简单的示例代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
// 定义学生信息结构体
struct Student {
int id;
std::string name;
int age;
std::vector<int> scores; // 存储三门课程的成绩
};
// 函数用于获取用户输入并计算平均分
void input_and_calculate_average(Student& student) {
for (int i = 0; i < 3; ++i) {
std::cout << "请输入第" << (i + 1) << "门课程的成绩: ";
int score;
std::cin >> score;
student.scores.push_back(score);
}
double average = static_cast<double>(student.scores.sum()) / 3; // 使用C++20的sum函数计算总分
std::cout << "学生 " << student.id << " 的平均分为: " << average << std::endl;
}
int main() {
const int num_students = 5;
Student students[num_students];
// 获取用户输入
for (int i = 0; i < num_students; ++i) {
std::cout << "请输入第" << (i + 1) << "名学生的信息: \n";
std::cout << "学号: ";
std::cin >> students[i].id;
std::cout << "姓名: ";
std::cin >> students[i].name;
std::cout << "年龄: ";
std::cin >> students[i].age;
input_and_calculate_average(students[i]);
}
// 找到最高和最低平均分及对应学生
double highest_avg = *std::min_element(&students[0].average, &students[num_students].average);
double lowest_avg = *std::max_element(&students[0].average, &students[num_students].average);
// 输出最高和最低平均分的学生信息
for (int i = 0; i < num_students; ++i) {
if (students[i].average == highest_avg) {
std::cout << "最高平均分: 学号 " << students[i].id << ", 姓名 " << students[i].name << ", 年龄 " << students[i].age << ", 成绩: ";
for (const auto& score : students[i].scores) {
std::cout << score << " ";
}
std::cout << ", 平均分: " << students[i].average << std::endl;
} else if (students[i].average == lowest_avg) {
std::cout << "最低平均分: 学号 " << students[i].id << ", 姓名 " << students[i].name << ", 年龄 " << students[i].age << ", 成绩: ";
for (const auto& score : students[i].scores) {
std::cout << score << " ";
}
std::cout << ", 平均分: " << students[i].average << std::endl;
}
}
return 0;
}
```
注意:上述代码假设你正在使用支持`std::vector`和`<algorithm>`库的现代C++编译器,例如C++17及以上版本。如果你的环境不支持这些特性,可能需要调整部分代码。此外,这里并未处理异常情况,如用户输入非数字等。
阅读全文