weixin_58162308 2021-12-16 10:17 采纳率: 100%
浏览 20
已结题

如何改成通过文件导入学生成绩

#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].ave70/100+student[i].deyu30/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");

}

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月26日
  • 已采纳回答 12月26日
  • 创建了问题 12月16日

悬赏问题

  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。
  • ¥15 孟德尔随机化结果不一致