蒜头君是一位高中电脑老师,这学期正在教学生写 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
要在循环体内,不然还是错误的(我做题时开始一直放循环体外面,
一直只能测一组数据,后面改了位置就提交成功了),你也来试试吧!