使编写的小程序将输入的成绩从小到大排序

学生成绩管理系统设计
学生成绩信息包括:学号、姓名、C语言等课程成绩。试设计一选修课程系统,使
之能提供以下功能:系统以菜单方式工作(用键盘输入16之间的数来选择功能)
(1)成绩信息录入功能(成绩信息用文件保存)
(2)成绩信息浏览功能
(3)查询功能:按学号查询和按成绩段查询
(4)成绩信息的删除:按学号进行删除某学生的成绩
(5)成绩信息的修改:按成绩修改,把55
59分之间的成绩都加上5分
(6)退出。

img

img

img

img

img

img

img


这里是小程序的实现代码:
c
#include <stdio.h>
#include <stdlib.h>

struct Student {
    char name[20];
    int id;
    int score;
};

int n;  // 学生总数
struct Student stu[100];

// 将学生成绩信息按成绩从小到大排序 
void sortScore() {
    struct Student tmp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (stu[j].score > stu[j + 1].score) {
                tmp = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = tmp;
            }
        }
    }
}

// 显示菜单并选择功能 
int menu() {
    printf("=========================\n");
    printf("1. 录入学生成绩信息\n");
    printf("2. 浏览学生成绩信息\n");
    printf("3. 按学号查询\n");
    printf("4. 按成绩段查询\n");
    printf("5. 删除学生成绩信息\n");
    printf("6. 修改55-59分学生成绩\n");
    printf("7. 退出\n");
    printf("=========================\n");
    printf("请选择(1-7):");
    int choice;
    scanf("%d", &choice);
    return choice;
}

int main() {  
    while (1) {
        int choice = menu();
        if (choice == 1) {
            // 录入学生成绩信息
        } else if (choice == 2) {
            // 浏览学生成绩信息 
            sortScore();  // 对学生成绩从小到大排序
            for (int i = 0; i < n; i++) {
                printf("%s %d %d\n", stu[i].name, stu[i].id, stu[i].score);
            }
        } 
        // ...
    }
}
这个程序实现了一个简单的学生成绩管理系统,其中sortScore()函数可以将输入的学生成绩信息从小到大排序。通过菜单的选择可以实现各个功能
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7754826
  • 这篇博客也不错, 你可以看下编写一个C程序,实现以下功能:动态申请长度为5的整数空间数组,用户输入5个整数;动态扩展数组空间为8,用户另外输入3个整数,最后输出扩展后的全部数组元素。
  • 除此之外, 这篇博客: (C语言)写几个函数,1.输入10个职工的姓名和职工号2.按职工号由小到大顺序排序,姓名顺序也随之调整3.要求输入一个职姓名,查找出该职工的姓名,从主函数输入要查找职工名,输出该职工学号.中的 写几个函数,1.输入10个职工的姓名和职工号2.按职工号由小到大顺序排序,姓名顺序也随之调整3.要求输入一个职姓名,查找出该职工的姓名,从主函数输入要查找职工名,输出该职工学号. 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 也可以输入职工号查询, 输出职工姓名
    https://blog.csdn.net/qq_41071068/article/details/89461999

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N 10
    struct staff {//创建结构体变量
    	int id;//职工号
    	char name[1024];//姓名
    };
    void input(struct staff* p) {//输入职工的姓名和职工号
    	struct staff* q = p;
    	for (int i = 1; p < q + N; ++i, ++p) {
    		printf("请输入第%d个职工的职工号\n", i);
    		scanf("%d", &p->id);
    		printf("请输入该职工的姓名\n");
    		scanf("%s", p->name);//p->name本来就是指针,存放的就是地址,无需取地址
    
    	}
    }
    void sort(struct staff* p) {//按职工号从大到小排序
    	char temp[1024];
    	struct staff* q = p;
    	for (; p < q + N; ++p) {
    		for (struct staff* qq = p + 1; qq < q + N; ++qq) {
    			if (p->id > qq->id) {
    				p->id = p->id ^ qq->id;//按位异或法
    				qq->id = p->id ^ qq->id;
    				p->id = p->id ^ qq->id;
    				strcpy(temp, p->name);
    				strcpy(p->name, qq->name);
    				strcpy(qq->name, temp);
    			}
    		}
    	}
    }
    struct staff* bisearch(char* str, struct staff* p) {
    	struct staff* q = p;
    	int n;
    	for (int i = 1; p < q + N; ++i, ++p) {
    		n = strlen(p->name);
    		if (n == strlen(str) && strcmp(p->name,str) == 0) {
    			return p;
    		}
    	}
    	return NULL;
    }
    void main() {
    	char str[1024];
    	struct staff staff[N];//创建N个结构体变量
    	struct staff* p;//创建指向结构体
    	p = staff;//指向结构体数组的首元素
    	input(p);
    	sort(p);
    	system("cls");
    	for (; p < staff + N; ++p) {
    		printf("%d\t%s\n", p->id, p->name);
    	}
    	p = staff;
    	printf("请输入需要查询的员工姓名\n");
    	scanf("%s", str);
    	struct staff* q = bisearch(str, p);
    	if (q != NULL) {
    		printf("职工%s的职工号为:%d\n", q->name, q->id);
    	}
    	else {
    		printf("没有名字为%s的职工\n", str);
    	}
    	system("pause");
    }
    
    
    

    在这里插入图片描述