奖金发放(YOJ2.0中的题)
一道相对简单的题,刚开始我思路还做错了,不过所幸后面改正成功
记录利润的变量是不能改变的,因为一直要与分界值比较
关于中间截断的值的大小,我是用后一个分界值减前一个分界值,当然我特意设置数组长度为n + 1,第一个元素是0
然后很简单就做出来了
代码如下:
#include<stdio.h>
int main(void)
{
int n, num;
scanf("%d", &n);
double bonus = 0.0;
int interval[n + 1];
double rate[n + 1];
interval[0] = 0;
for(int i = 1; i <= n; i++)
scanf("%d%lf", &interval[i], &rate[i]);
scanf("%d", &num);
//处理
for(int i = 1; 1; i++)
{
if(i == n)
{
bonus += (double)(num - interval[i - 1]) * rate[i];
break;
}
if(num >= interval[i])
bonus += (double)(interval[i] - interval[i - 1]) * rate[i];
else
{
bonus += (double)(num - interval[i - 1]) * rate[i];
break;
}
}
if(num < 0)
printf("NO");
else
printf("%.2f", bonus);
return 0;
}
刚开始教的时候是Compile error,虽然我觉得并没有
被指出有问题的语句:int interval[n + 1] = {0};
我是不知道有什么错啦