项目三--用结构体数组作计算

本文介绍了一个C++程序,该程序从文件中读取学生的成绩数据,根据总分对学生进行排序,并列出符合条件获得奖学金的学生名单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 
* Copyright (c) 2011, 烟台大学计算机学院 
* All rights reserved. 
* 作    者:王静  
* 完成日期:2013  年 3  月13   日 
* 版 本 号:v1.0 
* 输入描述:

* 问题描述:

* 程序输出:

* 问题分析:
* 算法设计:略 
*/  




#include <fstream>
#include <iostream>
using namespace std;
struct Student
{
 char num[12];
 char name[14];
 int cpp;
 int english;
 int math;
 int score;
};
void listScholars1(Student student[],int n);
void sort(Student student[],int n);
void output(Student student[],int n);
int main()
{
 int i,stunum=0;
 Student student[200];
 ifstream infile("score.txt",ios::in);
 if(!infile)
 {
  cout<<"open error!"<<endl;
  exit(1);
 }
 for(i=0;!infile.eof();i++,stunum++){
  infile>>student[i].num>>student[i].name>>student[i].cpp>>student[i].english>>student[i].math;
  student[i].score=student[i].cpp+student[i].english+student[i].math;
 }
 infile.close();
 sort(student,stunum);
 cout<<"按总分排列,为:"<<endl;
 output(student,stunum);
 listScholars1(student,stunum);
 return 0;
}

void sort(Student student[],int n)
{
 int i,j;
 Student t;
 for(i=0;i<n-1;i++)
 {
  for(j=i+1;j<n;j++)
   if(student[j].score>student[i].score){
    t=student[j];
    student[j]=student[i];
    student[i]=t;
   }
 }
 return;
}


void output(Student student[],int n)
{
 int i; 
 for(i=0;i<n;i++){
  cout<<student[i].num<<" "<<student[i].name<<" "<<student[i].cpp<<" "<<student[i].english
   <<" "<<student[i].math<<" "<<student[i].score<<endl;
 }
 return;
}

void listScholars1(Student student[],int n)
{
 int i,j,num;
 Student t;
 cout<<"可获奖学金的是:"<<endl;
 for(i=0;i<n-1;i++)
 {
  for(j=i+1;j<n;j++)
   if(student[j].score>student[i].score){
    t=student[j];
    student[j]=student[i];
    student[i]=t;
   }
 }
 for(i=0,num=0;num<30;i++)
 { 
  if(student[i].cpp>=60&&student[i].english>=60&&student[i].math>=60)
  {
   cout<<student[i].num<<" "<<student[i].name<<" "<<student[i].cpp<<" "<<student[i].english
    <<" "<<student[i].math<<" "<<student[i].score<<endl;
   num++;
   
  }
    }
 return;
}


 

运行结果:
(贴图)

心得体会:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值