我在理解为什么我用C ++编写的一个极其简单的程序不断循环的过程中遇到了一些困难。我将首先描述眼前的问题,只是要检查我的解决方案是否不正确,然后再编写代码:
足球运动员的投篮效率是 进球是他职业生涯所有进球的总得分。它是介于0和100之间的有理数, 四舍五入到小数点后一位。举例来说, 射门得分7次,进球3次 效率42.9。 考虑到球员的投篮效率,我们想知道 是达到目标所需的最低射门次数 数字(必须大于0)。
我想到的是,如果p是给定的百分比,那么为了获得最小的射击次数n,必须满足关系n p <= n,因为n p为进球总数达到n个。
我已经编写了以下程序:
int main(){
float efficiency;
cin >> efficiency;
int i = 1;
float tries = i*efficiency;
while(tries > i){
i++;
tries = i*efficiency;
}
cout << i << endl;
return 0;
}
该程序永远不会终止,因为它会不断在内部循环,有关任何错误的建议将不胜感激。
答案 0 :(得分:0)
您将i递增后的效率相乘。这意味着效率将比i快得多,因为当i增加1时,效率将增加(i + 1)倍,最终比i大得多。