为什么我的for循环只运行2次而不是10次?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的for循环只运行2次而不是10次?相关的知识,希望对你有一定的参考价值。
我正在尝试在O(n)空间和时间复杂度的数组中找到第三高的数字。我的程序显然是错误的,但这不是问题。我在thirdhighestnum
函数中的for循环似乎只运行2次。我似乎找不到原因。谁能帮我。对不起这个基本问题,我是这里的初学者。
#include<iostream>
using namespace std;
int thirdhighestnum(int a[],int size)
cout<<" "<<size<<endl;
int first=a[0],second=0,third=0;
for(int i=1;i<size;i++)
cout<<a[i]<<";"<<endl;
if(a[i]>first)
first=a[i];
if(a[i+1]>first)
second=first;
first=a[i+1];
if(a[i+2]>first)
third=second;
second=first;
first=a[i+2];
cout<<i<<endl
return third;
int main()
int num,a[10];
cout<<"Enter the elements in the array"<<endl;
for(int i=0;i<10;i++)
cin>>a[i];
cout<<"Third highest number is "<<thirdhighestnum(a,10)<<endl;
return 0;
答案
这是return third
语句的位置。任何数字大于第一个数字时,它就会退出thirdhighestnum
函数并返回一个值。将其放在for
循环之外,应该没问题。
另一答案
这被称为nth_element,库函数可以为您完成此操作。至于为什么代码失败,逻辑上就有缺陷
for(int i=1;i<size;i++)
// some code
if(a[i]>first)
// some more code
cout<<i<<endl
return third;
因此您的代码在a [i]大于第一个时第一次退出。
另一答案
从函数中获取return
并在first
变得大于a[i]
时终止循环,这是在输入1 2 3 4 5 6 7 8 9 10
的情况下仅运行两次的原因>
以上是关于为什么我的for循环只运行2次而不是10次?的主要内容,如果未能解决你的问题,请参考以下文章