7.10课后作业

课堂笔记思维导图

课后作业

完成学生管理系统

1> 使用菜单完成

2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入

3> 查看学生信息:输出所有学生姓名以及对应的分数

4> 求出学习最好的学生信息:求最大值

5> 按姓名将所有学生进行升序排序

6> 按成绩将所有学生进行升序排序

要求每个功能使用函数完成

#include <stdio.h>
int index = 0;  //数组长度尾部下标
int info();
void insertInfo(char name[][10], int score[]);
void selectInfo(char name[][10], int score[]);
void maxScore(char name[][10], int score[]);
void sortByName(char name[][10], int score[]);
void sortByScore(char name[][10], int score[]);
 
int main() {
	char name[50][10] = {""};
	int score[50] = { 0 };
	int flag = 0;
	printf("欢迎使用学生管理系统\n");
	flag = info();
	while (1) {
		switch (flag) {
		case 1: insertInfo(name,score);
			break;
		case 2: selectInfo(name, score);
			break;
		case 3: maxScore(name, score);
			break;
		case 4: sortByName(name, score);
			break;
		case 5: sortByScore(name, score);
			break;
		case 0: return 0;
			break;
		default: printf("输入错误,请重新输入\n");
		}
		flag=info();
	}
	return 0;
}
 
int info() {
	int flag = 0;
	printf("录入信息请输入:1\n");
	printf("查看学生信息请输入:2\n");
	printf("学习成绩最好的学生信息请输入:3\n");
	printf("按姓名进行升序排序请输入:4\n");
	printf("按成绩进行升序排序请输入:5\n");
	printf("退出请输入:0\n");
	scanf("%d", &flag);
	return flag;
}
 
void insertInfo(char name[][10], int score[]) {
	int count = 0;
	printf("请输入要添加的学生数量:");
	scanf("%d", &count);
	for ( int i = 0;  i<count; i++)
	{
		printf("请输入第%d个学生的姓名\n", i + 1);
		scanf("%s", name[index]);
		printf("请输入第%d个学生的成绩\n", i + 1);
		scanf("%d", &score[index]);
		index++;
	}
}
 
void selectInfo(char name[][10], int score[]) {
	for ( int i = 0; i < index; i++)
	{
		printf("第%d个学生的姓名是:%s,成绩是:%d\n",i+1,name[i],score[i]);
	}
}
 
void maxScore(char name[][10], int score[]) {
	int maxi = 0,maxScore=0;
	for (int  i = 0; i < index; i++)
	{
		if (score[i] > maxScore) {  //当前下标得值,超过最大值就替换
			maxScore = score[i];
			maxi = i;
		}
	}
	printf("成绩最高的学生的姓名是:%s,成绩是:%d\n", name[maxi], score[maxi]);
}
 
void sortByName(char name[][10], int score[]) {
	char flag[10] = { "" };
	int temp = 0;
	for (int  i = 0; i < index-1; i++)
	{
		for (int  j = 0; j < index-(i+1); j++)
		{
			if (strcmp(name[j], name[j + 1]) > 0) {
				strcpy(flag, name[j]);  //姓名交换
				strcpy(name[j], name[j+1]);
				strcpy(name[j+1], flag);
				temp = score[j];   //分数交换
				score[j] = score[j + 1];
				score[j + 1] = temp;
			}
		}
	}
}
 
void sortByScore(char name[][10], int score[]) {
	char flag[10] = { "" };
	int temp = 0;
	for (int i = 0; i < index - 1; i++)
	{
		for (int j = 0; j < index - (i + 1); j++)
		{
			if ( score[j]> score[j+1]) {
				strcpy(flag, name[j]);  //姓名交换
				strcpy(name[j], name[j + 1]);
				strcpy(name[j + 1], flag);
				temp = score[j];   //分数交换
				score[j] = score[j + 1];
				score[j + 1] = temp;
			}
		}
	}
}

运行结果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值