【刘汝佳书】例题4-6 UVA12412

【2019.3.29】
感觉是第一次完全独立写这么长的代码,
貌似当年C语言程序设计大作业的代码也就这么长,
以前虽然写过更长的,但或多或少都参考了网上的代码,
中间大修了若干次,小修了无数次,产生了各种各样的error,
大概写了四个小时,306行代码,应该还能再简化,
其实这道题用链表更合适,但懒得改了,
以后做题一定要看完全文再写,
不然就会产生中途修改的事。

有几个需要注意的地方:
1、SID是char数组类型,既方便比较,又可以保存前导零
2、求单科平均成绩时,我用的是“总成绩”除以“人数”,但人数有可能为0,此时要输出字符串“-nan”
3、各种格式,空格、换行,都要注意
4、i和j这种下标一定要看好,不要写错了……

#include <iostream>
#include <cstring>
#include <cctype>

using namespace std;

/*数据结构******************************/
//学生的信息
typedef struct
{
   
    char SID[20];
    int CID;
    char name[20];
    int score[4];
}Student, *pStudent;

//学生信息数据库
Student Database[150];

//总成绩排名队列
int Scorerank[150];

//学生的个数
int studentNum;

/*子函数声明*****************************/
void Add();                 //1 - Add
bool isDuplicated(char* sSID);      //Add辅助函数

void Remove();              //2 - Remove

void Query();               //3 - Query
int getTotalScore(Student s);         //Query辅助函数
double getAverScore(Student s);       //Query辅助函数

void ShowRanking();         //4 - Show ranking

void ShowStatistics();      //5 - Show Statistics

int OutputWelcome();        //输出欢迎语 获取用户输入
bool AddWelcome();          //Add输出欢迎语
bool RemQueWelcome();       //Remove和Query输出欢迎语
int ShowStaWelcome();       //ShowStatistics输出欢迎语 获取用户输入

/*主函数*********************************/

int main()
{
   
    //freopen("C:\\Users\\Summer\\Desktop\\input.txt", "r", stdin);
    //freopen("C:\\Users\\Summer\\Desktop\\output.txt", "w", stdout);

    int inputNum;
    while((inputNum = OutputWelcome()) && inputNum)
    {
   
        switch(inputNum)
        {
   
            case 1:  Add();    break;
            case 2:  Remove(); break;
            case 3:  Query();  break;
            case 4:  ShowRanking();    break;
            case 5:  ShowStatistics(); break;
            default: break;
        }
    }
    return 0;
}


/*子函数实现*****************************/

void Add()                 //1 - Add
{
   
    char sSID[20];
    int sCID;
    char sname[20];
    int sscore[4];

    while(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值