首页 > 试题广场 >

成绩

[编程题]成绩
  • 热度指数:15290 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}牛牛最近学习了 C++ 入门课程,这门课程的总成绩按照如下权重计算:
\hspace{23pt}\bullet\,作业成绩 A20\%
\hspace{23pt}\bullet\,小测成绩 B30\%
\hspace{23pt}\bullet\,期末考试成绩 C50\%
\hspace{15pt}因此,总成绩 S 计算公式为:

\displaystyle S = A \times 20\% + B \times 30\% + C \times 50\%

\hspace{15pt}在本题中,由于我们保证,输入的 A,B,C 均为 10 的倍数,所以总成绩一定是一个整数。输出这个整数。

输入描述:
\hspace{15pt}在一行中输入三个非负整数 A,B,C \left(0 \leqq A,B,C \leqq 100\right),分别表示牛牛的作业成绩、小测成绩和期末考试成绩。且保证 A,B,C 均为 10 的整数倍。


输出描述:
\hspace{15pt}输出一个整数 S,表示牛牛的总成绩,满分为 100
示例1

输入

100 100 100

输出

100

说明

S = 100 \times 20\% + 100 \times 30\% + 100 \times 50\% = 20 + 30 + 50 = 100
示例2

输入

70 80 90

输出

83

说明

S = 70 \times 20\% + 80 \times 30\% + 90 \times 50\% = 14 + 24 + 45 = 83

备注:
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-06-03 优化题面文本与格式。
2. 2025-11-20 优化题面文本与格式。
#include <stdio.h>

int main() {
    unsigned int A, B, C, result;

    scanf("%d %d %d\r\n", &A, &B, &C);

    if ((A % 10 != 0) || A > 100) {       //成绩输入限制,不大于100,且为10的倍数

        printf("输入的作业成绩A超过范围,请重新输入\r\n");

        return -1;

    } else if ((B % 10 != 0) || B > 100) {

        printf("输入的作业成绩B超过范围,请重新输入\r\n");

        return -2;

    } else if ((C % 10 != 0) || C > 100) {

        printf("输入的考试成绩C超过范围,请重新输入\r\n");

        return -3;

    } else {

        result = (A * 20 + B * 30 + C * 50) / 100;

    }

    printf("%d\r\n", result);

    return 0;
}
发表于 2025-10-02 21:21:36 回复(0)
//好哥哥,别犯我这样的错
#include <stdio.h>
#include <stdlib.h>

int main() {
    void judgeNum(int n);
    int a,b,c;
    int score;
    scanf("%d%d%d", &a, &b,&c);
    judgeNum(a);
    judgeNum(b);
    judgeNum(c);
    score=0.2*a+0.3*b+0.5*c;
    printf("%d\n",score);
    return 0;
}
void judgeNum(int n){
    if(n>=0&&n<=100&&n%10==0){
        ;//输入的数符合要求,不做任何处理操作
    }
    else{
        printf("题中要求0≦A,B,C≦100");

//错误处一
        // return;//
        //在错误处理后直接返回会导致主程序继续执行,不符合逻辑//分清 return 在 void 函数中的作用范围—— 它只能退出当前的 judgeNum 函数,无法终止整个程序。这就是为什么 “用了 return 却达不到终止程序” 的关键原因。
   
    exit(1);//exit(0) 的含义:正常终止
    // exit(a),其中a为非0,程序遇到错误(如输入非法、文件不存在),需要提前终止时使用
    /// 输入不合法时终止程序

    }
}

发表于 2025-09-28 16:08:56 回复(0)
#include <stdio.h>

int main() {
    int a,b,c;
    scanf("%d %d %d", &a, &b, &c);
    int s=a * 0.2 + b * 0.3 + c * 0.5;
    printf("%d", s);
    return 0;
}
发表于 2025-09-17 23:04:55 回复(0)
若按百分比的方式计算总成绩,那么就需要考虑浮点数了,但是题目要求输出的是整数,因此可以考虑提取公约数来计算,公约数是 十分之一。
#include <stdio.h>

int main() {
    
    int A = 0, B = 0, C = 0;

    scanf("%d %d %d", &A, &B, &C);

    printf("%d", (A * 2 + B * 3 + C * 5) / 10);

    return 0;
}
发表于 2025-08-05 20:22:43 回复(0)