C语言---学生奖学金评定系统设计

说明:

学生综合积分由文化积分和德育积分构成,文化积分是所有门课程成绩总和除以课程门数(平均分),德育积分是参加各类活动的积分,学生综合积分=文化积分×70%+德育积分×30%。按照学生综合积分排名,获得一等奖学金1名学生,获得二等奖学金2名学生,获得三等奖学金3名学生,项目要求输入班级学生成绩信息,输出获得奖学金的学生名单。已知学生成绩信息包括学号、姓名、英语成绩、网络成绩、C语言成绩、数据库成绩、文化积分、德育积分和综合积分,运行结果如图所示。

在这里插入图片描述

实例分析与实现

首先,按照学生成绩信息的组成定义结构体,输入各门课程成绩和德育积分,根据已知的公式,求出文化积分和综合积分;然后,按照学生综合积分从高到低进行排名,并输出排名结果;最后,输出下标为0的学生获得一等奖学金,下标为1和2的学生获得二等奖学金,下标为3、4、5的学生获得三等奖学金。具体算法如下。

① 定义结构体类型student。
② 利用定义的结构体类型定义一个十名学生的数组。
③ 利用for循环输入十名学生的各门课成绩,计算学生文化积分和综合积分。
④ 利用for循环嵌套对学生的成绩按总积分由高到低进行排序。
⑤ 打印总积分从高到低的排序结果、获得奖学金学生名单。
⑥实现输出每门课程不及格学生名单。

#include <stdio.h>
#include <windows.h>
#include<string.h>
#define NUM 10  //修改NUM就可以加学生数量

struct student_scores{//定义学生属性
	int ID;//学号
	char name[20];//姓名
	float english;//英语
	float net;//网络
	float c_;//c语言
	float sql_;//数据库
	float ave;//文化积分
	float deyu;//德育  德育积分是参加各类活动的积分
	float zonghe;//综合		
};

//学生综合积分由文化积分和德育积分构成,文化积分是所有门课程成绩总和除以课程门数(平均分),
//德育积分是参加各类活动的积分,学生综合积分=文化积分×70%+德育积分×30%。按照学生综合积分排名,
//获得一等奖学金1名学生,获得二等奖学金2名学生,获得三等奖学金3名学生,项目要求输入班级学生成绩信息,输出获得奖学金的学生名单。

void main()
{	
	struct student_scores student[NUM],temp;//定义一个结构体名称数组 10个学生
	int i,k;
	printf("请按1键开始录入\n");	
	printf("请输入学号、姓名、英语成绩、网络成绩、C语言成绩、数据库成绩、德育积分>:\n");	
	printf("-----------------------------------------------------------------------\n");
	for( i=0;i<NUM;i++)//动态录入
	{			
		scanf("%d ",&student[i].ID);
		scanf("%s ",&student[i].name);                                              
		scanf("%f %f %f %f %f",&student[i].english,&student[i].net,&student[i].c_,&student[i].sql_,&student[i].deyu);
		student[i].ave=(student[i].english+student[i].net+student[i].c_+student[i].sql_)/4;//文化积分(平均分)
		student[i].zonghe=student[i].ave*70/100+student[i].deyu*30/100;
	}
	printf("-----------------------------------------------------------------------\n");	
	printf("\n");
//	system("cls");//清屏
	for( i=0;i<NUM-1;i++)
	{
		for(k=0;k<NUM-1-i;k++)
		{
			if(student[k].zonghe<student[k+1].zonghe)
			{
				temp.ID = student[k].ID;
				for(i=0;i<20;i++)
				{
					temp.name[i] = student[k].name[i];
				}
				temp.ave = student[k].ave;
				temp.deyu = student[k].deyu;
				temp.zonghe = student[k].zonghe;
				
				student[k].ID = student[k+1].ID;
				for(i=0;i<20;i++)
				{
					student[k].name[i] = student[k+1].name[i];
				}
				student[k].ave = student[k+1].ave;
				student[k].deyu = student[k+1].deyu;
				student[k].zonghe = student[k+1].zonghe;

				student[k+1].ID = temp.ID;
				for(i=0;i<20;i++)
				{
					student[k+1].name[i] = temp.name[i];
				}
				student[k+1].ave =temp.ave;
				student[k+1].deyu =temp.deyu;
				student[k+1].zonghe = temp.zonghe;
			}
		}
	}
	printf("成绩排名<学号、姓名、文化积分、德育积分、总积分>:\n");	
	printf("-----------------------------------------------------------------------\n");
	printf("\n");
	for(i=0;i<NUM;i++)
	{
		printf("%d ",student[i].ID);
		printf("%s ",student[i].name);                                              
		printf("%f %f %f\n",student[i].ave,student[i].deyu,student[i].zonghe);
	}
	printf("-----------------------------------------------------------------------\n");
	printf("奖学金名单如下:\n");	
	printf("-----------------------------------------------------------------------\n");
	printf("一等奖学金获得者:%s\n",student[0].name);
	printf("二等奖学金获得者:%s %s\n",student[1].name,student[2].name);
	printf("三等奖学金获得者:%s %s %s\n",student[3].name,student[4].name,student[5].name);
	system("pause");
}

  • 9
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一粒程序米

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值