多科成绩单

/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 作    者:冯冬影
* 完成日期:2013  年12  月 11日
* 版本号: v1.0
* 输入描述:输入同学们的高数,英语,C++成绩
* 问题描述:算出每个同学的总分,高数,英语,C++的平均分
* 程序输出:输出总分,各科最高低分和平均分 ,最高分最低分的人数和对应的学号
* 问题分析:
*/
#include <iostream>
#include <string>
using namespace std;
void Zf(double score[][4],int n);//每个同学的总分
double max(double score[][4],int n,int j);//每学科的最高分
double min(double score[][4],int n,int j);//每学科的最低分
double avg(double score[][4],int n,int j);//每学科的平均分
int renshu(double x,double score[][4],int n,int j);//每学科的最高分,最低分的人数
void xuehao( double x,double score[][4],int n,int j);//最高分最低分对应的学号
int main()
{
    double score[100][4];
    string course[4]= {"高数","英语","c++","总分"};
    int num;
    double Max,Min;
    cout <<"请输入人数:";
    cin>>num;
    for(int i=0; i<num; i++)
    {
        cout<<"请输入学号为"<<i<<"的高数,英语,C++的成绩:";
        cin>>score[i][0]>>score[i][1]>>score[i][2];
    }
    Zf(score,num);
    for(int j=0; j<3; j++)
    {
        cout<<course[j]<<"的最高成绩为:"<<max(score,num,j)<<",";
        cout<<"最低成绩为:"<<min(score,num,j)<<",";
        cout<<"平均成绩"<<avg(score,num,j)<<",";
        Max=max(score,num,j);
        cout<<"最高分的人数为:"<<renshu(Max,score,num,j)<<",";
        cout<<"学号为:";
        xuehao(Max,score,num,j);
        Min=min(score,num,j);
        cout<<"最低分的人数为:"<<renshu(Min,score,num,j)<<",";
        cout<<"学号为:";
        xuehao(Min,score,num,j);
        cout<<endl;
    }
    return 0;
}
//每位同学的总分
void Zf(double score[][4],int n)
{
    int sum;
    for(int i=0; i<n; i++)
    {
        sum=0;
        for(int j=0; j<3; j++)
            sum+=score[i][j];
        cout<<"学号为"<<i<<"的总成绩为:"<<sum<<endl;
    }
    cout<<endl;
}
//最高成绩
double max(double score[][4],int n,int j)
{
    int max=score[0][j];
    for(int i=0; i<n; i++)
        if(max<score[i][j])
            max=score[i][j];
    return max;
}
//最低成绩
double min(double score[][4],int n,int j)
{
    int min=score[0][j];
    for(int i=0; i<n; i++)
        if(min>score[i][j])
            min=score[i][j];
    return min;
    cout<<endl;
}

//平均成绩
double avg(double score[][4],int n,int j)
{
    double sun=score[0][j];
    for(int i=1; i<n; i++)
        sun+=score[i][j];
    return sun/n;
}


//人数
int renshu(double x,double score[][4],int n,int j)  //返回在数组n名同学中有多少人得x分(实参给出最高/低时,可以求最高/低成绩的人数)

 {
     int k=0;
    for(int i=0; i<n; i++)
    {
        if(score[i][j]==x)
            k++;
    }
    return k;
}
//学号
void xuehao(double x,double score[][4],int n,int j)//在函数中输出数组n名同学中得x分的学号(下标)

{
    for(int i=0; i<n; i++)
    {
        if(score[i][j]==x)
            cout<<i<<" ";
    }
}



运行结果

心得:弄个小成绩单原来这样艰难!!!

在C语言中编写一个学生成绩单管理系统,可以分为以下几个步骤: 1. 定义数据结构:首先,我们需要创建一个数据结构来存储学生信息,如学号、姓名和各成绩。可以使用结构体(struct)来定义这个模型。 ```c typedef struct { int student_id; char name[50]; float scores[5]; // 假设最5门课程 } StudentRecord; ``` 2. 输入与显示:设计函数来接收用户输入,包括学生的个人信息和各成绩,并打印出完整的成绩单。 ```c void input(StudentRecord *record) { printf("请输入学号:"); scanf("%d", &record->student_id); printf("请输入姓名:"); fgets(record->name, sizeof(record->name), stdin); // 注意处理换行符 for (int i = 0; i < 5; i++) { printf("请输入第%d门课的成绩:", i+1); scanf("%f", &record->scores[i]); } } void display(StudentRecord record) { printf("学号:%d\n姓名:%s\n", record.student_id, record.name); printf("各成绩:\n"); for (int i = 0; i < 5; i++) { printf("第%d门课:%f\n", i+1, record.scores[i]); } } ``` 3. 管理功能:提供添加新记录、删除记录和查询成绩等功能。 ```c void addRecord(StudentRecord records[], int *size) { if (*size >= MAX_SIZE) return; // 如果已达最大容量 records[*size] = input_getStudentRecord(); // 获取新记录并添加到数组 (*size)++; } // 其他类似功能... ``` 4. 主程序循环:在主函数中不断接受用户的命令,调用相应的管理函数。 ```c int main() { StudentRecord records[MAX_SIZE]; int size = 0; while (true) { printf("请选择操作:1. 添加记录 2. 查看记录 3. ... \n"); // 根据用户选择调用对应函数 // 退出条件或其它处理... } return 0; } ``` 注意:这只是一个简单的示例,实际项目中需要考虑更的边界情况以及错误处理。此外,上述代码未涉及文件I/O,如果需要持久化存储数据,还需要结合文件操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值