有以下两种方案寻找最大secondlargest整数:关于我++与++ i在C++
1.
int main()
{
int const no_of_elements =10;
int list[no_of_elements] = { 1, 2, 3, 4, 5, 10, 9, 6, 7, 10 };
int largest = list[0];
int second_largest = list[0];
int pos_largest = 0;
int pos_second_largest = 0;
int i;
for (i = 0; i < no_of_elements; i++)
{
if (largest <= list[i])
{
second_largest = largest;
largest = list[i];
pos_second_largest = pos_largest;
pos_largest = i;
}
}
cout << "Largest number is : " << largest << "\n";
cout << "And it is at the position : " << ++pos_largest << endl;
cout << "Second largest number is : " << second_largest << " and its at the position : " << ++pos_second_largest << endl;
return 0;
}
2. 在for循环中,我做pos_largest = ++i
他们给不同的答案:
1.给出largest=10 secondlargest=10
即按要求
但是2.给出largest=10 secondlargest=9
请解释一下?
++ i和i ++是i + = 1。前者会先增加我然后再做操作,后面的会对我进行操作,然后将值增加1。 – David
不要使用'++ i',如果要转换为开始计数,请使用'i + 1'在一个。 – RichardPlunkett
在线性时间内找不到第二大元素。想象一下序列1,5,3。你的程序会说1是第二大元素。 – fredoverflow