期中考试刚刚结束,老师想知道考试中取得的最低分数是否及格了,没有及格的分数又差多少分及格?因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮老师解决这个问题吗?用C++解
时间: 2024-05-13 11:20:28 浏览: 61
答案是可以的。可以通过输入学生分数,计算平均分和最低分,然后比较最低分是否及格(一般为60分),如果没有及格,再计算差多少分及格。下面是一个示例代码:
```
#include <stdio.h>
int main() {
int n; // 学生人数
int score; // 学生分数
int min_score = 100; // 最低分
int sum_score = 0; // 所有分数的总和
printf("请输入学生人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的分数:", i + 1);
scanf("%d", &score);
if (score < min_score) {
min_score = score;
}
sum_score += score;
}
printf("平均分是:%d\n", sum_score / n);
if (min_score >= 60) {
printf("最低分及格\n");
} else {
printf("最低分未及格,差 %d 分及格\n", 60 - min_score);
}
return 0;
}
```
相关问题
利用JAVA编写程序 要求:(1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。 (2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。(3)计算每位学生的总评成绩。 (4)计算该班级本课程的总平均成绩。 (5)计算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。 (6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。
以下是JAVA程序的实现,可以参考:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ScoreSystem {
private static final double WEIGHT1 = 0.3;
private static final double WEIGHT2 = 0.3;
private static final double WEIGHT3 = 0.4;
private Map<String, Map<String, List<Double>>> scores = new HashMap<>();
public void loadScores(String filename) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.split(",");
String classname = fields[0];
String course = fields[1];
double score1 = Double.parseDouble(fields[2]);
double score2 = Double.parseDouble(fields[3]);
double score3 = Double.parseDouble(fields[4]);
scores.computeIfAbsent(classname, k -> new HashMap<>())
.computeIfAbsent(course, k -> new ArrayList<>())
.add(score1);
scores.get(classname).get(course).add(score2);
scores.get(classname).get(course).add(score3);
}
}
}
public void calculateScores() {
for (String classname : scores.keySet()) {
for (String course : scores.get(classname).keySet()) {
List<Double> scoresList = scores.get(classname).get(course);
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
for (int i = 0; i < scoresList.size(); i += 3) {
sum1 += scoresList.get(i);
sum2 += scoresList.get(i + 1);
sum3 += scoresList.get(i + 2);
}
double avg1 = sum1 / (scoresList.size() / 3);
double avg2 = sum2 / (scoresList.size() / 3);
double avg3 = sum3 / (scoresList.size() / 3);
double totalScore = avg1 * WEIGHT1 + avg2 * WEIGHT2 + avg3 * WEIGHT3;
scores.get(classname).get(course).add(totalScore);
}
}
}
public void printScores(String classname, String course) {
List<Double> scoresList = scores.get(classname).get(course);
List<String> students = new ArrayList<>();
Map<String, Double> scoreMap = new HashMap<>();
for (int i = 0; i < scoresList.size() - 1; i += 4) {
String student = String.format("%03d", (i / 4) + 1);
double score = scoresList.get(i + 3);
students.add(student);
scoreMap.put(student, score);
}
Collections.sort(students, (s1, s2) -> Double.compare(scoreMap.get(s2), scoreMap.get(s1)));
System.out.println("学号\t成绩");
for (String student : students) {
double score = scoreMap.get(student);
System.out.println(student + "\t" + score);
}
}
public void printSummary(String classname, String course) {
System.out.println("班级:" + classname);
System.out.println("课程:" + course);
List<Double> scoresList = scores.get(classname).get(course);
double sum = 0;
int count = 0;
int excellentCount = 0;
int goodCount = 0;
int mediumCount = 0;
int passCount = 0;
int failCount = 0;
for (int i = 0; i < scoresList.size() - 1; i += 4) {
double score = scoresList.get(i + 3);
sum += score;
count++;
if (score >= 90) {
excellentCount++;
} else if (score >= 80) {
goodCount++;
} else if (score >= 70) {
mediumCount++;
} else if (score >= 60) {
passCount++;
} else {
failCount++;
}
}
double avg = sum / count;
double excellentPercent = (double) excellentCount / count * 100;
double goodPercent = (double) goodCount / count * 100;
double mediumPercent = (double) mediumCount / count * 100;
double passPercent = (double) passCount / count * 100;
double failPercent = (double) failCount / count * 100;
System.out.println("总平均成绩:" + avg);
System.out.println("优秀人数:" + excellentCount + ",占比:" + excellentPercent + "%");
System.out.println("良好人数:" + goodCount + ",占比:" + goodPercent + "%");
System.out.println("中等人数:" + mediumCount + ",占比:" + mediumPercent + "%");
System.out.println("及格人数:" + passCount + ",占比:" + passPercent + "%");
System.out.println("不及格人数:" + failCount + ",占比:" + failPercent + "%");
}
public static void main(String[] args) throws IOException {
ScoreSystem system = new ScoreSystem();
system.loadScores("scores.txt");
system.calculateScores();
system.printScores("class1", "course1");
system.printSummary("class1", "course1");
}
}
```
这个程序实现了从文件中读取学生成绩数据、按照权重计算总评成绩、计算班级平均成绩、计算各区间人数和占比、输出成绩在某个区间的学生学号和成绩等功能。可以根据自己的需求进行修改和扩展。
利用JAVA编写程序要求:(1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。 (2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。 (3)计算每位学生的总评成绩。 (4)计算该班级本课程的总平均成绩。 (5)计算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。 (6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。
以下是一个示例代码,可以实现上述要求:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class GradeAnalyzer {
public static void main(String[] args) throws FileNotFoundException {
// 从文件中读取成绩数据
Scanner input = new Scanner(new File("grades.txt"));
int[][] grades = new int[5][3];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
grades[i][j] = input.nextInt();
}
}
input.close();
// 计算每位学生的总评成绩
double[] totalScores = new double[5];
for (int i = 0; i < 5; i++) {
totalScores[i] = grades[i][0] * 0.3 + grades[i][1] * 0.3 + grades[i][2] * 0.4;
}
// 计算班级总平均成绩
double classAvg = 0;
for (int i = 0; i < 5; i++) {
classAvg += totalScores[i];
}
classAvg /= 5;
// 统计各个成绩区间的人数和百分比
int[] count = {0, 0, 0, 0, 0};
for (int i = 0; i < 5; i++) {
if (totalScores[i] >= 90) {
count[0]++;
} else if (totalScores[i] >= 80) {
count[1]++;
} else if (totalScores[i] >= 70) {
count[2]++;
} else if (totalScores[i] >= 60) {
count[3]++;
} else {
count[4]++;
}
}
double[] percentage = new double[5];
for (int i = 0; i < 5; i++) {
percentage[i] = count[i] * 100.0 / 5;
}
// 输出结果
System.out.println("各位学生的总评成绩:");
for (int i = 0; i < 5; i++) {
System.out.println("学生" + (i+1) + "的总评成绩为:" + totalScores[i]);
}
System.out.println("班级总平均成绩为:" + classAvg);
System.out.println("成绩在优、良、中、及格、不及格各区间的学生人数和百分比为:");
System.out.println("优:" + count[0] + ",占比:" + percentage[0] + "%");
System.out.println("良:" + count[1] + ",占比:" + percentage[1] + "%");
System.out.println("中:" + count[2] + ",占比:" + percentage[2] + "%");
System.out.println("及格:" + count[3] + ",占比:" + percentage[3] + "%");
System.out.println("不及格:" + count[4] + ",占比:" + percentage[4] + "%");
}
}
```
注意:上述代码中假设成绩数据保存在名为"grades.txt"的文件中,文件格式为每行一个学生的三个成绩,使用空格分隔。在实际应用中,文件名和格式需要根据具体情况进行修改。
阅读全文