用的办法比较土,但符合题目要求。用了if语句和switch语句。
变量说明:
I :利润
bns :奖金(bonus)
代码如下:
//谭浩强C语言习题5.8 参考答案
//输入当月利润,输出应发奖金
#include<stdio.h>
void main()
{
double I,bns;
printf("利润=");
scanf("%lf", &I);
int c;
if (I > 1e+6) c = 10;
else c = I / ((1e+5)+1);
switch (c) {
case 0: bns = I * 0.1; break;
case 1: bns = (I - 1e+5) * 0.075 + (1e+5) * 0.1; break;
case 2:case 3: bns = (I - 2e+5) * 0.05 + (1e+5) * 0.075 + (1e+5) * 0.1; break;
case 4:case 5: bns = (1 - 4e+5) * 0.03 + (2e+5) * 0.05 + (1e+5) * 0.75 * (1e+5) * 0.1; break;
case 6:case 7:case 8:case 9: bns = (I - 6e+5) * 0.015 + (2e+5) * 0.03 + (2e+5) * 0.05 + (1e+5) * 0.75 * (1e+5) * 0.1; break;
case 10: bns = (1 - 1e+6) * 0.01 + (4e+5) * 0.015 + (2e+5) * 0.03 + (2e+5) * 0.05 + (1e+5) * 0.75 * (1e+5) * 0.1;
}
printf("当利润=%.2f时,对应的奖金=%.2f", I, bns);
}
测试数据有限,代码是否正确有待考证。欢迎各位指出错误。希望对你们有帮助!