IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 大一C语言文件作业(源代码) -> 正文阅读

[C++知识库]大一C语言文件作业(源代码)

?**源代码:

#include<stdio.h>
#include<stdlib.h>
#define num 7// 宏定义学生人数

int tot1[10], tot2[10], tot3[10];// 各个分数段的人数
double ave[10];
double sum[10];// 储存所有学生同一科目的总分以计算每个课程平均分
char enter = '\n';// 换行 方便使用

struct student{// 每个学生都要输入的信息
    char name[10][5];
    char ID[30];// 不能太短,否则会影响文件中的打印格式
    double grade1, grade2, grade3;// 三个学科的成绩
    double average;// 学生平均分
    int rank;
}stu[num+1];

void Add_Student();// 输入学生信息并计算平均分
void sort();// 把平均分排序
void Grade_tot();// 统计各个分数段的学生数
void Same_();// 处理平均分相同的情况
void Student_Data();// 存储学生信息
void Average_Grade();// 计算每科平均分
void Save_Average();// 将平均分存入d:/average.txt文件 over!


void Add_Student(){
    for(int i = 1; i <= num; i++){
        printf("                  快输入学生信息哟~                      \n");
        printf("               \t请输入第%d位学生的信息:                   \n",i);
        printf("<姓名>:"); scanf("%s",stu[i].name);
        printf("<学号>:"); scanf("%s",stu[i].ID);
        printf("<课程1的成绩>:"); scanf("%lf",&stu[i].grade1);
        printf("<课程2的成绩>:"); scanf("%lf",&stu[i].grade2);
        printf("<课程3的成绩>:"); scanf("%lf",&stu[i].grade3);
        stu[i].average = (stu[i].grade1 + stu[i].grade2 + stu[i].grade3) / 3.0;// 计算所有学生的平均分
    }
}

void sort(int l, int r){// 这里用了快排排序将平均分按从大到小排列(处理的数据更多)
    if(l >= r) return ;
    int i = l, j = r;
    struct student key = stu[i];
    while(i < j){
        while(i < j && stu[j].average <= key.average) j--;
        stu[i] = stu[j];
        while(i < j && stu[i].average >= key.average) i++;
        stu[j] = stu[i];
    }
    stu[i] = key;
    sort(l, i - 1);
    sort(i + 1, r);
//     for(int i = 1; i < num; i++){
//         for(int j = 1; j < num; j++){
//             if(stu[j].average < stu[j + 1].average){
//                 struct student t = stu[j];
//                 stu[j] = stu[j + 1];
//                 stu[j + 1] = t;
//             }
//         }
//     }// 冒泡排序的方法也可以
}

void Grade_tot(){// 统计各个分数段的学生数
    for(int i = 1; i <= num; i++){
        if(stu[i].grade1 < 60) tot1[0]++;
        if(stu[i].grade1 >= 60 && stu[i].grade1 < 70) tot1[1]++;
        if(stu[i].grade1 >= 70 && stu[i].grade1 < 80) tot1[2]++;
        if(stu[i].grade1 >= 80 && stu[i].grade1 < 90) tot1[3]++;
        if(stu[i].grade1 >= 90) tot1[4]++;// 课程一
        if(stu[i].grade2 < 60) tot2[0]++;
        if(stu[i].grade2 >= 60 && stu[i].grade2 < 70) tot2[1]++;
        if(stu[i].grade2 >= 70 && stu[i].grade2 < 80) tot2[2]++;
        if(stu[i].grade2 >= 80 && stu[i].grade2 < 90) tot2[3]++;
        if(stu[i].grade2 >= 90) tot2[4]++;// 课程二
        if(stu[i].grade3 < 60) tot3[0]++;
        if(stu[i].grade3 >= 60 && stu[i].grade3 < 70) tot3[1]++;
        if(stu[i].grade3 >= 70 && stu[i].grade3 < 80) tot3[2]++;
        if(stu[i].grade3 >= 80 && stu[i].grade3 < 90) tot3[3]++;
        if(stu[i].grade3 >= 90) tot3[4]++;// 课程三
    }
}

void Same_(){// 处理平均分相同的情况
    int m = num;
    int Rank = 1;
    for(int i = 1; i <= num; i++){// 此时平均分已经排好序了
        if(stu[i].average == stu[i + 1].average){
            stu[i].rank = Rank;
            continue;
        }
        stu[i].rank = Rank;
        Rank++;
    }
}

void Student_Data(){// 存储学生信息
    FILE *fp;
    fp = fopen("d://st.txt", "wt+");// 读写一个二进制文件
    fprintf(fp, "\t\t\t\t\t\t\t   成绩单   \t\t\t\t\t%c", enter);
    fprintf(fp, "\t排名\t\t学生姓名\t\t学生学号\t\t课程一成绩\t课程二成绩\t课程三成绩\t平均分\t%c", enter);
    for(int i = 1; i <= num; i++){
		fprintf(fp, "\t%4d\t\t%7s\t       %15s    \t%10.1f\t\t%10.1f\t\t%10.1f\t            %10.1f\t%c", stu[i].rank, stu[i].name, stu[i].ID,stu[i].grade1, stu[i].grade2, stu[i].grade3, stu[i].average, enter);
    }// 尤其注意打印格式
    printf("<学生信息已存入d:/st.txt文件中>\n");
    fclose(fp);
}

void Average_Grade(){// 计算每科平均分
    for(int i = 1; i <= num; i++){
        sum[1] = sum[1] + stu[i].grade1;
        sum[2] = sum[2] + stu[i].grade2;
        sum[3] = sum[3] + stu[i].grade3;
    }
    for(int i = 1; i < 4; i++){
        ave[i] = sum[i] / (double)num;
    }
}

void Save_Average(){// 将计算完成的数据存入d:/average.txt文件
    FILE *fp;
    fp = fopen("d://average.txt", "wt+");
    fprintf(fp, "\t\t\t\t\t                 各课程平均分情况             \t\t%c",enter);
    fprintf(fp, "\t\t\t\t    课程一平均分\t课程二平均分\t课程三平均分\t%c",enter);
    fprintf(fp, "\t\t\t\t%10.1lf\t\t%10.1lf\t\t%10.1lf\t%c",ave[1],ave[2],ave[3],enter);
    printf("<平均分计算完成,已将数据存储到d:/average.txt文件中>%c", enter);
    fprintf(fp, "\t\t\t\t                                 各课程分数段分布情况                                 \t%c",enter);
    fprintf(fp, "\t课程一人数分布情况\t90分以上:%d人\t80~90分:%d人\t70~80分:%d人\t60~70分:%d人\t60分以下:%d人\t\t%c",tot1[4],tot1[3],tot1[2],tot1[1],tot1[0],enter);
    fprintf(fp, "\t课程二人数分布情况\t90分以上:%d人\t80~90分:%d人\t70~80分:%d人\t60~70分:%d人\t60分以下:%d人\t\t%c",tot2[4],tot2[3],tot2[2],tot2[1],tot2[0],enter);
    fprintf(fp, "\t课程三人数分布情况\t90分以上:%d人\t80~90分:%d人\t70~80分:%d人\t60~70分:%d人\t60分以下:%d人\t\t%c",tot3[4],tot3[3],tot3[2],tot3[1],tot3[0],enter);
    printf("<各科分数段人数统计完成,已将数据存入d:/average.txt文件中>%c", enter);
    fclose(fp);
}

int main()
{
    FILE *fp;
    printf("*****************这里是学生成绩管理系统*********************\n");
    printf("                  <请录入本班学生信息>                      \n");
    printf("         <请分别输入本班学生的姓名、学号及三门考试成绩>        \n");
    printf("         <系统将按平均分排名的信息导入d:\\st.txt文件中>    \n");
    printf("       <本系统将自动将平均分等级导入d:\\average.txt文件中>    \n");
    printf("******************下面请依次输入学生信息********************\n");// 开场白hhh
    
    Add_Student();// 输入学生信息并计算平均分
    sort(1, num);// 把平均分排序
    Grade_tot();// 统计各个分数段的学生数
    Same_();// 处理平均分相同的情况
    Student_Data();// 存储学生信息
    Average_Grade();// 计算每科平均分
    Save_Average();// 将平均分存入d:/average.txt文件 over!

    return 0;
}

***这是借鉴csdn一篇博客所写,但我现在找不到那篇了。。。T_T

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:26:01  更:2022-05-18 17:28:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 13:32:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码