返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言怎么处理学生打分、计算时间、最少硬币问题
  • 805
分享到

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

2023-06-29 07:06:23 805人浏览 八月长安
摘要

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

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

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

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

输出结果演示:

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

参考答案:

#include <stdio.h> 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;}

运行结果:

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

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

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

利用下列结构体实现:

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

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

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

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

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

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

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

提示:取现行时间的方法

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

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

输出结果演示:

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

参考答案:

#include <stdio.h>#include <time.h>#include <string.h>#include <stdlib.h> 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 #%02d\n", i++);printf("\tCurrent Time = %02d : %02d : %02d\n",currTime.hours, currTime.minutes, currTime.seconds);printf("\tPrevious Time = %02d : %02d : %02d\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 = %02d : %02d : %02d\n\n", a,b,c); *prevTimePtr = currTime;}}     return 0;}

运行结果:

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

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

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

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

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

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

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个字符以内。

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

输出效果演示:

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

参考答案:

#include <stdio.h>#include <stdlib.h>#include <string.h> 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语言怎么处理学生打分、计算时间、最少硬币问题”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

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

本文链接: https://lsjlt.com/news/323464.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言怎么处理学生打分、计算时间、最少硬币问题
    本文小编为大家详细介绍“C语言怎么处理学生打分、计算时间、最少硬币问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么处理学生打分、计算时间、最少硬币问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第...
    99+
    2023-06-29
  • C语言基础应用处理学生打分 计算时间 最少硬币问题详细过程
    第一题: 最少硬币问题(简单版) 假设有三种面值的硬币,分别为10、5、1。接收一个整数作为金额数,计算要达到该金额数,每个面值的硬币最少需要多少枚。 输出结果演示: ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作