某班有10个学生,进行了数学考试,编写程序求数学平均成绩及不及格学生的人数,C语言
时间: 2023-11-23 13:07:18 浏览: 185
好的,下面是一个求解平均成绩和不及格学生人数的C程序:
```c
#include <stdio.h>
int main() {
int i, score, sum = 0, fail = 0;
float avg;
for (i = 1; i <= 10; i++) {
printf("请输入第%d个学生的数学成绩:\n", i);
scanf("%d", &score);
sum += score;
if (score < 60) {
fail++;
}
}
avg = (float)sum / 10;
printf("数学平均成绩为:%.2f\n", avg);
printf("不及格学生人数为:%d\n", fail);
return 0;
}
```
程序中,我们使用`for`循环来获取每个学生的数学成绩,并累加总成绩和不及格学生人数。最后,根据累加的总成绩求出平均成绩,输出平均成绩和不及格学生人数。
需要注意的是,这个程序只是一个简单的例子,实际上,在实际应用中还需要考虑很多其他因素,例如对输入数据的合法性进行检查等。
相关问题
某班有10个学生,进行了“数学”、“语文”、“英语”、“C语言”等科目的考试,编写程序: (1)将考试成绩输入一个二维数组; (2)求每门课的平均成绩、每门课的不及格学生的人数及每门课的最高分与最低分; (3)求每个学生的平均成绩、总分、不及格门数; (4)按学生平均成绩的高低排序并输出。
以下是一个可能的解决方案,使用 C++ 语言实现:
```c++
#include <iostream>
#include <algorithm> // 用于排序函数
using namespace std;
const int NUM_STUDENTS = 10;
const int NUM_SUBJECTS = 4;
int main() {
int scores[NUM_STUDENTS][NUM_SUBJECTS]; // 存储每个学生的每门科目成绩
// 输入每个学生的成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
cout << "请输入第" << i+1 << "个学生的成绩(数学 语文 英语 C语言):";
for (int j = 0; j < NUM_SUBJECTS; j++) {
cin >> scores[i][j];
}
}
// 计算每门课的平均成绩、不及格人数、最高分和最低分
double avg_scores[NUM_SUBJECTS] = {0}; // 平均成绩
int num_failed[NUM_SUBJECTS] = {0}; // 不及格人数
int max_scores[NUM_SUBJECTS] = {0}; // 最高分
int min_scores[NUM_SUBJECTS] = {100}; // 最低分(初始化为100分)
for (int j = 0; j < NUM_SUBJECTS; j++) {
for (int i = 0; i < NUM_STUDENTS; i++) {
avg_scores[j] += scores[i][j];
if (scores[i][j] < 60) {
num_failed[j]++;
}
max_scores[j] = max(max_scores[j], scores[i][j]);
min_scores[j] = min(min_scores[j], scores[i][j]);
}
avg_scores[j] /= NUM_STUDENTS;
}
// 输出每门课的平均成绩、不及格人数、最高分和最低分
cout << "每门课的平均成绩、不及格人数、最高分和最低分如下:" << endl;
cout << "数学:平均成绩:" << avg_scores[0] << ",不及格人数:" << num_failed[0] << ",最高分:" << max_scores[0] << ",最低分:" << min_scores[0] << endl;
cout << "语文:平均成绩:" << avg_scores[1] << ",不及格人数:" << num_failed[1] << ",最高分:" << max_scores[1] << ",最低分:" << min_scores[1] << endl;
cout << "英语:平均成绩:" << avg_scores[2] << ",不及格人数:" << num_failed[2] << ",最高分:" << max_scores[2] << ",最低分:" << min_scores[2] << endl;
cout << "C语言:平均成绩:" << avg_scores[3] << ",不及格人数:" << num_failed[3] << ",最高分:" << max_scores[3] << ",最低分:" << min_scores[3] << endl;
// 计算每个学生的平均成绩、总分、不及格门数
double avg_scores_per_student[NUM_STUDENTS] = {0}; // 每个学生的平均成绩
int total_scores[NUM_STUDENTS] = {0}; // 每个学生的总分
int num_failed_per_student[NUM_STUDENTS] = {0}; // 每个学生的不及格门数
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_SUBJECTS; j++) {
total_scores[i] += scores[i][j];
if (scores[i][j] < 60) {
num_failed_per_student[i]++;
}
}
avg_scores_per_student[i] = total_scores[i] / double(NUM_SUBJECTS);
}
// 按学生平均成绩排序并输出
int idx[NUM_STUDENTS];
for (int i = 0; i < NUM_STUDENTS; i++) {
idx[i] = i;
}
sort(idx, idx+NUM_STUDENTS, [&](int a, int b) {return avg_scores_per_student[a] > avg_scores_per_student[b];});
cout << "按学生平均成绩排序如下:" << endl;
for (int i = 0; i < NUM_STUDENTS; i++) {
int j = idx[i];
cout << "第" << j+1 << "个学生:";
cout << "平均成绩:" << avg_scores_per_student[j] << ",总分:" << total_scores[j] << ",不及格门数:" << num_failed_per_student[j] << endl;
}
return 0;
}
```
这个程序的主要思路是,先输入每个学生的成绩,然后对每门课计算平均成绩、不及格人数、最高分和最低分,再对每个学生计算平均成绩、总分和不及格门数,最后按学生平均成绩排序并输出。在计算平均成绩等统计数据时,使用了数组和循环结构。在排序时,使用了 `sort` 函数和 Lambda 表达式。
用C语言编写程序,输入 50个学生的数学成绩并保存在数组中,计算并输出该门成绩的及格人数、平均分、最高分及其下标。
在C语言中,你可以使用以下几个步骤来完成这个任务:
1. **数组声明和初始化**:
首先,你需要创建一个可以存储50个整数的成绩数组,并初始化为0或使用循环获取用户输入。
```c
int scores[50];
for (int i = 0; i < 50; i++) {
printf("请输入第%d个学生的成绩: ", i+1);
scanf("%d", &scores[i]);
}
```
2. **计算及格人数**:
确定及格分数(例如60分),遍历数组,计数达到及格线的元素。
```c
int passCount = 0;
for (int i = 0; i < 50; i++) {
if (scores[i] >= 60) {
passCount++;
}
}
```
3. **计算平均分**:
计算所有分数之和除以总人数。
```c
float sum = 0;
for (int i = 0; i < 50; i++) {
sum += scores[i];
}
float averageScore = sum / 50.0;
```
4. **找出最高分及其下标**:
初始化最高分为第一个分数,同时记录其下标。
```c
int maxScore = scores[0];
int maxIndex = 0;
for (int i = 1; i < 50; i++) {
if (scores[i] > maxScore) {
maxScore = scores[i];
maxIndex = i;
}
}
```
5. **输出结果**:
最后,打印出及格人数、平均分、最高分和对应的下标。
```c
printf("及格人数: %d\n", passCount);
printf("平均分: %.2f\n", averageScore);
printf("最高分: %d (下标: %d)\n", maxScore, maxIndex);
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.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/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)