个人网站与企业网站,滑动 手机网站 代码,360建筑网一级消防工程师,广州信息流推广公司排名1. 题目
玩游戏时#xff0c;当攻击力高于某一阶段时#xff0c;会获得额外战斗力加成#xff0c;当然攻击力越高#xff0c;提升越少#xff0c;不然就破坏游戏平衡了。 规则如下#xff1a; 规则1#xff1a;攻击力低于或等于10万时,战斗力额外可提升10%; 规则2…1. 题目
玩游戏时当攻击力高于某一阶段时会获得额外战斗力加成当然攻击力越高提升越少不然就破坏游戏平衡了。 规则如下 规则1攻击力低于或等于10万时,战斗力额外可提升10%; 规则2攻击力高于10万,低于20万时,低于10万的部分按规则1,高于10万的部分,战斗力额外可提升7.5%; 规则320万到40万之间时,低于20万的部分按规则2,高于20万的部分,战斗力额外可提升5%; 规则440万到60万之间时,低于40万的部分按规则3,高于40万的部分,战斗力额外可提升3%; 规则560万到100万之间时,低于60万的部分按规则4,高于60万的部分,战斗力额外可提升1.5%; 规则6高于100万时,低于100万的部分按规则5,高于100万的部分,战斗力额外可提升1%. 玩家可从键盘输入角色攻击力求额外战斗力加成是多少
2. 分析
这需要根据规则进行分段计算。
3. 实例代码之if计算
#include stdio.hint main() {double attackPower;double extraBonus 0;// 从键盘输入角色攻击力printf(请输入角色的攻击力);scanf(%lf, attackPower);if (attackPower 100000) {extraBonus attackPower * 0.1;} else if (attackPower 100000 attackPower 200000) {extraBonus 100000 * 0.1 (attackPower - 100000) * 0.075;} else if (attackPower 200000 attackPower 400000) {extraBonus 100000 * 0.1 100000 * 0.075 (attackPower - 200000) * 0.05;} else if (attackPower 400000 attackPower 600000) {extraBonus 100000 * 0.1 100000 * 0.075 200000 * 0.05 (attackPower - 400000) * 0.03;} else if (attackPower 600000 attackPower 1000000) {extraBonus 100000 * 0.1 100000 * 0.075 200000 * 0.05 200000 * 0.03 (attackPower - 600000) * 0.015;} else if (attackPower 1000000) {extraBonus 100000 * 0.1 100000 * 0.075 200000 * 0.05 200000 * 0.03 400000 * 0.015 (attackPower - 1000000) * 0.01;}printf(额外战斗力加成是%lf\n, extraBonus);return 0;
}以上代码就是根据业务硬编程便于理解。 以下是使用switch实现
4. 实例代码之switch计算
#include stdio.hint main() {double attackPower;double extraBonus 0;// 从键盘输入角色攻击力printf(请输入角色的攻击力);scanf(%lf, attackPower);// 根据攻击力范围确定初始区间索引int intervalIndex;if (attackPower 100000) {intervalIndex 1;} else if (attackPower 200000) {intervalIndex 2;} else if (attackPower 400000) {intervalIndex 3;} else if (attackPower 600000) {intervalIndex 4;} else if (attackPower 1000000) {intervalIndex 5;} else {intervalIndex 6;}switch (intervalIndex) {case 1:extraBonus attackPower * 0.1;break;case 2:extraBonus 100000 * 0.1 (attackPower - 100000) * 0.075;break;case 3:extraBonus 100000 * 0.1 100000 * 0.075 (attackPower - 200000) * 0.05;break;case 4:extraBonus 100000 * 0.1 100000 * 0.075 200000 * 0.05 (attackPower - 400000) * 0.03;break;case 5:extraBonus 100000 * 0.1 100000 * 0.075 200000 * 0.05 200000 * 0.03 (attackPower - 600000) * 0.015;break;case 6:extraBonus 100000 * 0.1 100000 * 0.075 200000 * 0.05 200000 * 0.03 400000 * 0.015 (attackPower - 1000000) * 0.01;break;default:printf(输入有误请重新输入有效攻击力值。\n);break;}printf(额外战斗力加成是%lf\n, extraBonus);return 0;
}这个和if计算类似。
5. 实例代码之switch穿透现象计算
#include stdio.hint main() {double attackPower;double extraBonus 0.0;int nBaseNo 100000;// 从键盘输入角色攻击力printf(请输入角色的攻击力);scanf(%lf, attackPower);int nFlag;nFlag (int)(attackPower / nBaseNo);nFlag nFlag 10 ? 10 : nFlag;switch (nFlag) {case 10:extraBonus (attackPower - 10 * nBaseNo) * 0.01;attackPower 10 * nBaseNo;case 9:case 8:case 7:case 6:extraBonus (attackPower - 6 * nBaseNo) * 0.015;attackPower 6 * nBaseNo;case 5:case 4:extraBonus (attackPower - 4 * nBaseNo) * 0.03;attackPower 4 * nBaseNo;case 3:case 2:extraBonus (attackPower - 2 * nBaseNo) * 0.05;attackPower 2 * nBaseNo;case 1:extraBonus (attackPower - nBaseNo) * 0.075;attackPower nBaseNo;case 0:extraBonus attackPower * 0.1;}printf(额外战斗力加成是%lf\n, extraBonus);return 0;
}除此之外还可以使用 数组、递归、链表等方式实现。主要是分析方式实现就多了。