我需要创建一个接受5个输入的程序,然后我应该显示5个输入的最高值。但是有一个问题,我需要将number[0]
的值与number[1]
进行比较,以获得最高可用数量。而且,我需要确保如果用户输入与之前相同的号码,则不应接受该号码并告诉用户输入另一个号码。这就是我的目标......
int i,number[5],highest,max = number[i] + 1;
int main(){
clrscr();
for(int i=0; i<5; i++){
cout<<"\nEnter number :";
cin>>number[i];
if(number[i] > max){
cout<<"\nHighest number is: "<<number[i];
}
else if (number[i] == number[i]){
cout<<"\nDo not repeat the same number twice!";
i=i-1;
}
}
答案 0 :(得分:0)
还要注意,else if (number[i] == number[i])
总会触发,因为您要将号码与itselfe进行比较。
答案 1 :(得分:0)
您的代码有很多错误。这是写这个的一种方式。
#include <iostream>
int main() {
// Loop iterators
unsigned int i = 0;
unsigned int j = 0;
// Data storage -- expecting only positive values.
unsigned int number[5];
unsigned int max = 0;
bool duplicate;
// No incrementation here, as we want to skip invalid cases
for (i = 0; i < 5; ) {
duplicate = false;
std::cout << "\nEnter number: ";
std::cin >> number[i];
// Check that we don't have the same number in twice
for (j = 0; j < i; ++j) {
if(number[i] == number[j]) {
std::cout << "\nDo not repeat the same number twice!" << std::endl;
duplicate = true;
}
}
// If a duplicate has been found, skip the rest of the process.
if (duplicate) {
continue;
}
// Is this a new maximum?
if (number[i] > max) {
max = number[i];
}
++i;
}
std::cout << "Highest number is : " << max << std::endl;
return 0;
}
答案 2 :(得分:0)
检查std::cin >>
的结果:您可能会收到无效的输入(例如if(! std::cin >> number[i]) { std::cout << "wrong input received"; return -1; }
)
使用最小值初始化您的最大值:std::numeric_limits<int>::min();
因此第一个数字将始终是第一个最大值。您还应该在输入更高时更新max。
如果您只需要检查前一个值,请检查i是否为零(没有先前的值),然后将值[i]检查为值[i-1]。但是,如果您需要所有唯一编号,则应检查循环中的所有先前编号。
仅在循环之后输出最大值(循环内部仅用于调试)
答案 3 :(得分:0)
int i,number[5],highest,max = number[i] + 1;
因为我刚刚开始init然后i = 0. number [i] realy number [0]。 所以max = number [0] + 1 = 1。 你必须输入所有数字到数组:
for(int i=0; i<5; i++){
cout<<"\nEnter number :";
cin>>number[i];
}
比较之后:
max = number[i] + 1;
for(int i=0; i<5; i++){
if(number[i] > max){
cout<<"\nHighest number is: "<<number[i];
}
}