第17周作业一

本文详细介绍了如何在C++中使用结构体进行数据存储,并通过实例展示了如何实现冒泡排序算法对结构体数组进行排序。文章还提供了对结构体成员变量的初始化、文件输入输出以及成绩筛选的完整代码示例。

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

学会使用结构体:

#include<fstream>
#include<iomanip>
#include<iostream>
using namespace std;
struct Student
{
 char num[14];//定义char num[12]会把姓名保存下来,为什么?
 char name[4];
 float cpp;
 float math;
 float english;
 float score;
};
int main()
{
 Student stu[180];
 Student t,
 *p=stu;
 
 int i,j;
 float k;
 
 ifstream infile("score.txt",ios::in);
 if (!infile)
 {
  cerr<<"open error!"<<endl;
  exit(1);
 }
 for(i=0;i<180;i++)
 {
   infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english;
   stu[i].score=stu[i].cpp+stu[i].math+stu[i].english;
 }
 infile.close();
 
 
 for(i = 0; i < 179; i++)                      //冒泡排序
 {
  if(stu[i].score < stu[i+1].score)
  {
   t=*(p+i);//stu[i];
   
   //stu[i] = stu[i + 1];
   *(p+i)=*(p+i+1);
  // stu[i] = t;
   *(p+i+1)=t;
   k = stu[i].score;
   stu[i].score =stu[i+1].score;
   stu[i+1].score = k;
  }
 }
 cout << "学号" << "              " << "姓名    "  << "C++" <<'\t'<< "高数" << "\t" << "英语" <<"   "<<"总成绩" <<endl;
  for(i = 0; i < 180; i++)
 {
  //cout <<stu[i].num;
  cout <<setiosflags(ios::right)<<stu[i].num<<'\t'<<setw(8)<<stu[i].name <<setw(5)<< stu[i].cpp <<setw(7)<< stu[i].math<< setw(7) << stu[i].english << setw(7)<< stu[i].score << endl;
 }
 cout <<"可以获得奖学金的名单是:"<<endl;
 for(i = 0, j = 0; j < 30; i++)
 {
  if((stu[i].cpp > 60) && (stu[i].math > 60) && (stu[i].english > 60))
  {
   j++;
   cout << stu[i].name <<'\t';
  }
  while(j == 30)
  {
  for(; i < 180-1;)
   {
    if(stu[i].score == stu[i+1].score)
    {
     i++;
     cout <<stu[i].name<<'\t';
    }
    else break;
   }
  }
 }
 return 0;
}
 

17周作业1


17周作业1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值