算法设计要求输入20个学生的成绩统计不及格学生的人数并打印出来
时间: 2023-05-24 17:05:50 浏览: 139
以下是Python的示例代码:
```
grades = [] # 初始化成绩列表
for i in range(20):
grade = int(input("请输入第%d个学生的成绩:" % (i+1)))
grades.append(grade) # 将输入的成绩添加到列表中
fail_num = 0 # 初始化不及格人数
for grade in grades:
if grade < 60:
fail_num += 1
print("不及格的学生人数为:%d" % fail_num)
```
算法流程解析:
1. 初始化一个空的列表grades用于存放20个学生的成绩。
2. 通过for循环,依次输入每个学生的成绩,并将其添加到grades列表中。
3. 初始化不及格人数fail_num为0。
4. 再次通过for循环,遍历grades列表中的每个成绩,判断是否小于60,如果是,则将fail_num加1。
5. 最后使用print语句打印出不及格人数。
该算法时间复杂度为O(n),其中n为学生数目,即20。
相关问题
要求用C语言进行算法设计,要求输入20个学生的成绩,统计不及格学生的人数,并打印出来。
好的,我明白了。以下是您的问题的回答:
您可以使用以下C语言的代码,来输入20个学生的成绩并统计不及格的学生的人数,并将其打印出来:
```c
#include<stdio.h>
#define num_of_students 20
int main()
{
int students[num_of_students];
int i, fail_count = 0;
printf("请输入20个学生的成绩:\n");
/* 用循环输入20个学生的成绩 */
for (i = 0; i < num_of_students; i++)
{
scanf("%d", &students[i]);
}
/* 统计不及格学生的人数 */
for (i = 0; i < num_of_students; i++)
{
if (students[i] < 60)
{
fail_count++;
}
}
printf("不及格的学生的人数是:%d", fail_count);
return 0;
}
```
以上就是使用C语言进行算法设计,输入20个学生的成绩,统计不及格学生的人数,并打印出来的代码。
用c语言设计一个学生成绩查询统计系统 内容要求: (1)分析数据的逻辑结构。 (2)设计数据的存储结构。(诸如一个记录应包括哪些字段数据,每个字段的数据是什么类型的,应用什么数据结构来保存众多的记录) (3)根据学生姓名进行字典排序。 (4)根据成绩进行由高到低排序。(可采用冒泡法或其他快速算法) (5)根据学号或姓名查找学生成绩。(可采用顺序查找或二分查找等方法,并实现查找结构的打印) (6)统计各分数段(≥90分、80-89分、70-79分、60-69分、60分以下)的学生人数及其所占比例,并打印统计的结果。 (7)编写主要的C语言代码,尤其是对函数头部涉及的主要参数要进行注释说明。 (8)系统的程序结构可以考虑采用多文件组合框架,也可以采用单文件多模块组合框架。
好的,下面是一个用C语言设计的学生成绩查询统计系统,符合你所要求的内容要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义常量
#define MAX_STUDENTS 100 // 最多学生数量
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_ID_LEN 10 // 学号最大长度
// 定义学生记录结构体
typedef struct {
char name[MAX_NAME_LEN]; // 姓名
char id[MAX_ID_LEN]; // 学号
float grades[3]; // 三门课程的成绩
float total_grade; // 总成绩
char grade_level[10]; // 成绩等级
} Student;
// 定义全局变量
Student students[MAX_STUDENTS]; // 学生记录数组
int num_students = 0; // 学生数量
// 函数声明
void menu();
void add_student();
void sort_by_name();
void sort_by_grade();
void print_student(Student student);
void search();
void statistics();
// 主函数
int main() {
menu();
return 0;
}
// 菜单函数
void menu() {
int choice;
do {
printf("请选择操作:\n");
printf("1. 添加学生记录\n");
printf("2. 根据姓名排序\n");
printf("3. 根据成绩排序\n");
printf("4. 查找学生成绩\n");
printf("5. 统计各分数段学生人数\n");
printf("0. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
sort_by_name();
break;
case 3:
sort_by_grade();
break;
case 4:
search();
break;
case 5:
statistics();
break;
case 0:
printf("谢谢使用!\n");
break;
default:
printf("无效的选择,请重新选择!\n");
break;
}
} while (choice != 0);
}
// 添加学生记录函数
void add_student() {
if (num_students == MAX_STUDENTS) {
printf("学生记录已满,无法添加!\n");
return;
}
Student student;
printf("请输入学生姓名:");
scanf("%s", student.name);
printf("请输入学生学号:");
scanf("%s", student.id);
printf("请输入学生三门课程的成绩(用空格分隔):");
scanf("%f %f %f", &student.grades[0], &student.grades[1], &student.grades[2]);
student.total_grade = student.grades[0] + student.grades[1] + student.grades[2];
if (student.total_grade >= 270) {
strcpy(student.grade_level, "优秀");
} else if (student.total_grade >= 240) {
strcpy(student.grade_level, "良好");
} else if (student.total_grade >= 210) {
strcpy(student.grade_level, "中等");
} else if (student.total_grade >= 180) {
strcpy(student.grade_level, "及格");
} else {
strcpy(student.grade_level, "不及格");
}
students[num_students++] = student;
printf("学生记录添加成功!\n");
}
// 根据姓名排序函数
void sort_by_name() {
int i, j;
Student temp;
for (i = 0; i < num_students - 1; i++) {
for (j = 0; j < num_students - i - 1; j++) {
if (strcmp(students[j].name, students[j + 1].name) > 0) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("学生记录已按姓名排序!\n");
}
// 根据成绩排序函数
void sort_by_grade() {
int i, j;
Student temp;
for (i = 0; i < num_students - 1; i++) {
for (j = 0; j < num_students - i - 1; j++) {
if (students[j].total_grade < students[j + 1].total_grade) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("学生记录已按成绩排序!\n");
}
// 打印学生记录函数
void print_student(Student student) {
printf("%s %s %.1f %.1f %.1f %.1f %s\n", student.name, student.id, student.grades[0], student.grades[1], student.grades[2], student.total_grade, student.grade_level);
}
// 查找学生成绩函数
void search() {
int choice;
char keyword[MAX_NAME_LEN];
printf("请选择查找方式:\n");
printf("1. 根据学号查找\n");
printf("2. 根据姓名查找\n");
scanf("%d", &choice);
if (choice == 1) {
printf("请输入要查找的学生学号:");
scanf("%s", keyword);
int i;
for (i = 0; i < num_students; i++) {
if (strcmp(students[i].id, keyword) == 0) {
print_student(students[i]);
return;
}
}
printf("未找到该学生的记录!\n");
} else if (choice == 2) {
printf("请输入要查找的学生姓名:");
scanf("%s", keyword);
int i;
for (i = 0; i < num_students; i++) {
if (strcmp(students[i].name, keyword) == 0) {
print_student(students[i]);
return;
}
}
printf("未找到该学生的记录!\n");
} else {
printf("无效的选择!\n");
}
}
// 统计各分数段学生人数函数
void statistics() {
int num_90 = 0, num_80 = 0, num_70 = 0, num_60 = 0, num_below_60 = 0;
int i;
for (i = 0; i < num_students; i++) {
if (students[i].total_grade >= 90) {
num_90++;
} else if (students[i].total_grade >= 80) {
num_80++;
} else if (students[i].total_grade >= 70) {
num_70++;
} else if (students[i].total_grade >= 60) {
num_60++;
} else {
num_below_60++;
}
}
printf("90分及以上的学生人数:%d,占比%.2f%%\n", num_90, num_90 * 100.0 / num_students);
printf("80分到89分的学生人数:%d,占比%.2f%%\n", num_80, num_80 * 100.0 / num_students);
printf("70分到79分的学生人数:%d,占比%.2f%%\n", num_70, num_70 * 100.0 / num_students);
printf("60分到69分的学生人数:%d,占比%.2f%%\n", num_60, num_60 * 100.0 / num_students);
printf("60分以下的学生人数:%d,占比%.2f%%\n", num_below_60, num_below_60 * 100.0 / num_students);
}
```
这个系统采用了一个学生记录结构体来保存每个学生的信息,每个结构体包括了姓名、学号、三门课程的成绩、总成绩和成绩等级等字段。同时,使用数组来保存所有学生的记录。
这个系统实现了添加学生记录、根据姓名排序、根据成绩排序、查找学生成绩和统计各分数段学生人数等功能。同时,也采用了函数注释等规范的编程风格。
阅读全文