千家信息网

C语言怎么处理学生打分、计算时间、最少硬币问题

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文小编为大家详细介绍"C语言怎么处理学生打分、计算时间、最少硬币问题",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言怎么处理学生打分、计算时间、最少硬币问题"文章能帮助大家解决疑惑,下面跟着小
千家信息网最后更新 2026年10月31日C语言怎么处理学生打分、计算时间、最少硬币问题

本文小编为大家详细介绍"C语言怎么处理学生打分、计算时间、最少硬币问题",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言怎么处理学生打分、计算时间、最少硬币问题"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

第一题: 最少硬币问题(简单版)

假设有三种面值的硬币,分别为10、5、1。接收一个整数作为金额数,计算要达到该金额数,每个面值的硬币最少需要多少枚。

输出结果演示:

参考答案:

#include  typedef struct StructrueMoneyBox {    int n10;    int n5;    int n1;} MoneyBox; int main(void) {    MoneyBox change = {0, 0, 0};    int face_value[4] = {10, 5, 1};    int money = 0;    int i = 0;     printf("请输入金额: ");    scanf("%d", &money);     do {        if (money < face_value[i]) {            i++;        }        switch (i) {            case 0:                 change.n10 = money / face_value[i];                break;            case 1:                 change.n5 = money / face_value[i];                break;            case 2:                 change.n1 = money / face_value[i];                break;        }        money = money % face_value[i];    } while (money > 0);     printf("10: %d\n", change.n10);    printf("5: %d\n", change.n5);    printf("1: %d\n", change.n1);     return 0;}

运行结果:

第二题:计算已经过去了多久

编写一个秒表程序来计算已经过去了多长时间。

利用下列结构体实现:

并要求使用下面两个变量来解决问题:

当程序运行时,取当前时间并保存到 previtimePtr 变量中。

此后,程序将无限地接受命令,直到用户输入"quit" 程序才会停止。

如果用户输入"check",则输出存储的上一个时间与当前时间的差。

(其他命令不采取任何操作)

提示:取现行时间的方法

#include #include  int main(void) {     time_t timer;    struct tm *t;     timer = time(NULL);    t = localtime(&timer);     return 0;}

输出结果演示:

参考答案:

#include #include #include #include  typedef struct{        int hours;        int minutes;        int seconds;}Time; int main(void){        Time* prevTimePtr;        Time currTime;        time_t timer;        struct tm *t;        int i = 1, a, b, c;        char buf[80];         timer = time(NULL);        t = localtime(&timer);         prevTimePtr = (Time*)malloc(sizeof(Time));        prevTimePtr->hours = t->tm_hour;    prevTimePtr->minutes = t->tm_min;    prevTimePtr->seconds = t->tm_sec;         while(1){                printf("system> ");                fgets(buf, 80, stdin);                if(!strcmp(buf, "quit\n")) break;                        if(!strcmp(buf, "check\n")){                        timer = time(NULL);                        t = localtime(&timer);                         currTime.hours = t->tm_hour;                    currTime.minutes = t->tm_min;                    currTime.seconds = t->tm_sec;                         printf("\n\tCheck Point #d\n", i++);                        printf("\tCurrent Time = d : d : d\n",                                        currTime.hours, currTime.minutes, currTime.seconds);                        printf("\tPrevious Time = d : d : d\n",                                        prevTimePtr->hours, prevTimePtr->minutes, prevTimePtr->seconds);                                                c = currTime.seconds - prevTimePtr->seconds;                        b = currTime.minutes - prevTimePtr->minutes;                        a = currTime.hours - prevTimePtr->hours;                         if(c < 0){                c+=60;                b--;            }                        if(b < 0){                b+=60;                a--;            }                         printf("\tElasped Time = d : d : d\n\n", a,b,c);                         *prevTimePtr = currTime;                }        }     return 0;}

运行结果:

第三题:学生成绩自动打分

编写一个管理学生成绩,并带有计算学生成绩功能的小程序。

使用下面的结构来存储学生信息:

例如,上述结构中一个学生的值如下:

Grades student1 = {2601053, "Natalie Lewis", {30.5, 65.9, 69.6}};

程序启动时,在文本文件("input.txt")中读取信息。(这里请手动创建该文件!)

文件内容如下:

26
2601053 / Natalie Lewis / 30.5 / 65.9 / 69.6
2026018 / Chloe Christian / 54.1 / 43.4 / 35.4
2016317 / Emolys Evans / 31.6 / 20.4 / 26.3
2961329 / Sophia Allen / 63.5 / 37.9 / 56.8
2016787 / Robert Melton / 44.1 / 54.2 / 32.7
2011661 / Siaomos Barton / 92.2 / 15.4 / 33.7
8166559 / Sebastian Henderson / 55.1 / 38.2 / 0.9
2061185 / Richard Cerney / 63.6 / 98.6 / 97.0
2017454 / Elizabeth Calvin / 7.4 / 0.0 / 26.4
2026196 / Madison Frost / 49.3 / 64.3 / 73.3
2015758 / Emily Stevgenson / 51.6 / 89.2 / 34.0
2016776 / Navy Taylor / 8.6 / 36.4 / 52.3
2062103 / Vincent Newton / 38.7 / 79.0 / 24.0
2501762 / Owen Ingram / 40.6 / 85.1 / 91.1
2042142 / Olyen Massey / 72.1 / 62.0 / 97.3
2027039 / Emma Thomas / 30.1 / 25.1 / 27.3
2051341 / Peter Pitts / 47.9 / 71.8 / 74.9
2071368 / Xygret Latimer / 67.2 / 9.7 / 79.1
2023762 / Michael Grahan / 6.4 / 29.0 / 17.5
2024545 / Mandon Austin / 98.8 / 28.5 / 48.9
2091176 / Violet Smith / 4.8 / 93.9 / 3.9
2802841 / Samuel Davis / 95.6 / 54.2 / 31.8
2027062 / Sam Mackey / 83.6 / 26.1 / 97.5
2061555 / Miguel Parr / 77.2 / 88.1 / 99.5
2028836 / Oscar Hamersley / 67.7 / 43.4 / 91.7
2026582 / MeanSon King / 97.2 / 88.3 / 100.0

文本的第一行显示了学生人数 n

从第二行开始,按照"id/name/mid/final/proj"的顺序给出了学生的信息。

通过根据所有学生的成绩计算排名来确定学生的最终成绩:

① 总分评判规则: total_point = mid * 0.3 + final * 0.3 + prog * 0

② 评分评判规则: 成绩前 30% 为 A,前 70% 为 B,其余为 C

③ 总分小于 30(total_point < 30) 的学生,无视排名给 F。

输入的成绩范围限制在 0~100分,学生姓名长度限制在40个字符以内。

仅对给定的文本文件内的学生进行评分,输出文件的位置随意。

输出效果演示:

参考答案:

#include #include #include  typedef struct{    float mid;    float final;    float proj;}Points; typedef struct{    int studentId;    char name[40];    Points subject;    char grade[3];    float total_point;}Grades; int main(void){    int cnt, i, j, A_temp, B_temp;    float a_grade, b_grade;    char name_temp[30];    Grades* grade;    Grades gtemp;    FILE *fp = fopen("input.txt", "r");    if(fp == NULL){        printf("未找到文件!\n");        return 1;    }     fscanf(fp, "%d", &cnt);     A_temp = cnt * 0.3;    B_temp = cnt * 0.7;     grade = (Grades*)malloc(sizeof(Grades) * cnt);     for(i = 0; i < cnt; i++){        fscanf(fp, "%d / %s %s / %f / %f / %f\n", &grade[i].studentId, grade[i].name, name_temp, &((grade[i].subject).mid), &(grade[i].subject).final, &(grade[i].subject).proj);        strcat(grade[i].name, " ");        strcat(grade[i].name, name_temp);        grade[i].total_point = (grade[i].subject).mid * 0.3 + (grade[i].subject).final * 0.3 + (grade[i].subject).proj * 0.4;    }     for(i = 0; i < cnt - 1; i++){        for(j = 0; j < cnt - i - 1; j++){            if(grade[j].total_point < grade[j + 1].total_point){                gtemp = grade[j];                grade[j] = grade[j + 1];                grade[j + 1] = gtemp;            }        }    }     a_grade = grade[A_temp].total_point;    b_grade = grade[B_temp].total_point;     printf("Cut off for A grade: %f (rank %d)\n", a_grade, A_temp);    printf("Cut off for B grade: %f (rank %d)\n", b_grade, B_temp);     for(i = 0; i < cnt; i++){        if(grade[i].total_point < 30){            strcpy(grade[i].grade, "F");        }        else if(a_grade <= grade[i].total_point){            strcpy(grade[i].grade, "A");        }        else if(b_grade <= grade[i].total_point && grade[i].total_point < a_grade){            strcpy(grade[i].grade, "B");        }        else if(grade[i].total_point < b_grade){            strcpy(grade[i].grade, "C");        }    }     printf("\n-- Student List --\n");    for(i = 0; i < cnt; i++){        printf("    Id : %d\n", grade[i].studentId);        printf("    Name : %s\n", grade[i].name);        printf("    Grade(mid) : %.02f\n", (grade[i].subject).mid);        printf("    Grade(final) : %.02f\n", (grade[i].subject).final);        printf("    Grade(project) : %.02f\n", (grade[i].subject).proj);        printf("    Grade : %s (%.02f, rank %d)\n", grade[i].grade, grade[i].total_point, i + 1);        printf("\n");    }     return 0;}

读到这里,这篇"C语言怎么处理学生打分、计算时间、最少硬币问题"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

学生 时间 成绩 硬币 文件 程序 问题 输出 处理 结果 输入 语言 信息 内容 文本 文章 答案 结构 金额 参考 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 互联网加科技 互联网佳科技有限公司 蓝思科技飞鸽互联网 互联网科技垄断 唐信互联网科技 亿策互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 广州慧亚互联网科技怎么样 以后互联网后是啥科技 苏州五指互联网络科技有限 西安小鹰速贷互联网科技有限公司 产业互联网科技服务公司 广州百诚互联网科技有限公司官网 兰石爱特工业互联网科技分公司 安徽九吞吴互联网科技有限公司 互联网科技创业计划的风险分析 网互联网络科技 科技互联网企业在行动 恒生科技互联网指数十大成分股 互联网科技官网 科技互联网政务服务 唐信互联网科技 顺玮阁互联网科技 呼和浩特新华互联网科技学院 互联网科技创新的路径 阿里互联网科技企业 合肥互联网科技公司公章图片 2021世界互联网领先科技成果发布 艺电能源互联网科技有限公司招聘
0