#include <iostream>
using namespace std;
int main() {
int ages[5];
for (int i = 0; i < 5; ++i) {
cin >> ages[i];
}
int age_1 = ages[0];
int age_2 = ages[1];
int age_3 = ages[2];
int age_4 = ages[3];
int age_5 = ages[4];
if (age_1 < age_2 and age_3 and age_4 and age_5) {
float dis_1 = age_1 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_2 < age_1 and age_3 and age_4 and age_5) {
float dis_1 = age_2 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_3 < age_1 and age_2 and age_4 and age_5) {
float dis_1 = age_3 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_4 < age_1 and age_2 and age_3 and age_5) {
float dis_1 = age_4 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_5 < age_4 and age_3 and age_2 and age_1) {
float dis_1 = age_5 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}else {
cout << "50" << endl;
}
return 0;
}
这是一个基于数组获得折扣的代码。只要最小的数字不是第一个输入的,我就会得到一个不同的答案。
样本输入:
69
48
33
25
29
预期输出:
37.5
实际输出:
26
您需要像这样编写if语句:
if (age_1 < age_2 and age_1 < age_3 and age_1 < age_4 and age_1 < age_5)
但是,随着数组中的值越来越多,这种方法很快变得难以管理。
你可以查看std::min_element
查找数组中最小的元素
你没有正确使用'and'。这就是这种情况不起作用的原因。尝试使用如下函数获取最小元素:
#include <iostream>
using namespace std;
void displayDiscount(int age){
float dis_1 = age * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << "Result: " << dis_3 << endl;
}
int getMin(int arr[], int n)
{
int res = arr[0];
for (int i = 1; i < n; i++)
res = min(res, arr[i]);
return res;
}
int main() {
int ages[5];
for (int i = 0; i < 5; ++i) {
cin >> ages[i];
}
int minAge = getMin(ages, 5); // size of array
displayDiscount(minAge);
return 0;
}