计分程序

蒜头君是一位高中电脑老师,这学期正在教学生写 C++ 程序。他的评分标准是依照每一位学生在蒜厂 OJ 上解出的题数,去计算出对应的得分。为了不让分数落差太大,因此他并不是采取每一题固定得分的方式,而是随着题数增加而调整每题的得分。规则如下:

答对题数在 0 ~ 10 者,每题给 6 分。
题数在 11 ~ 20 者,从第 11 题开始,每题给 2 分。(前 10 题还是每题给 6 分)
题数在 21 ~ 40 者,从第 21 题开始,每题给 1 分。题数在 40 以上者,一律 100 分。
如此一来,只要写 10 题,就可以得到 60 分,写 20 题,就可以得到 80 分,不过要得到满分 100 分,则是要写到 40 题,所以同学们分数的差距就大大地减少了。

不过问题来了,虽然学生们因为这样的计分程序而大大地提升了及格率,但因为蒜头君有 600 多位学生,一个一个去计算真的是一件很吃重的工作,所以现在想请你帮他写个程序解决这个问题。

输入格式
一个测试点包含多组测试数据,一共不超过 10 组。

每组测试数据只有一个整数 N(0≤N≤100),代表学生在蒜厂 OJ 上解出的题数。

输出格式
输出该位同学的得分。

输出时每行末尾的多余空格,不影响答案正确性

样例输入 复制
10
40
样例输出 复制
60
100

#include <stdio.h>
int main()
{
    int n;
    int sum=0;
    while(scanf("%d",&n)!=EOF)		/*输入多个值*/
    {   
    	if(0<=n&&n<=10)
        	sum=n*6;
    	if(11<=n&&n<=20)
        	sum=10*6+(n-10)*2;
    	if(21<=n&&n<=40)
        	sum=10*6+10*2+(n-20)*1;
    	else if(n>=41)
        	sum=100;
        printf("%d\n",sum);
    }
    return 0;
}

这个问题的难度不是在算法,还是在于在控制板上一直输入这一点,
while(scanf()!=EOF) 来表示一直输入,不过要注意输出时 printf
要在循环体内,不然还是错误的(我做题时开始一直放循环体外面,
一直只能测一组数据,后面改了位置就提交成功了),你也来试试吧!

发布了35 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43873385/article/details/96138974