代码以查找数组中最大的数字,但只将第一个数字显示为最大。有人请让我知道为什么

时间:2018-08-10 05:36:18

标签: c++ arrays

    #include <iostream>

using namespace std;

int findLargest()
{
    int arg[25],largest,size,i,j;
    cout<<"enter the size of array"<<endl;
    cin>>size;
    cout<<"enter the numbers"<<endl;
    for(i; i<size; i++)
    {
        cin>>arg[i];
    }
    for(j=1; j<size; j++)
    {
        largest=arg[0];
        if(arg[0]<arg[j])
        {
            largest==arg[j];
        }
    }
    cout<<"The largest number is : "<<largest;

}
int main()
{
findLargest();    

    return 0;}

这有什么问题? 编写此代码以查找数组中的最大数字 但它只会将数组中的第一个数字显示为最大

2 个答案:

答案 0 :(得分:1)

事物的结合, i未初始化。

for(i=0; i<size; i++)
{
    cin>>arg[i];
}

在每次迭代中将最大元素设置为第一个元素,然后将每个元素与第一个元素(而不是largest)进行比较。然后,您使用==而不是=进行分配。 您也不会从findLargest()返回任何内容,因此最好将其设为void

largest = arg[0];
for(j=1; j<size; j++)
{
    if(largest<arg[j])
    {
        largest = arg[j];
    }
}

您可能想使用std::max_element()

cout << *std::max_element(begin(arg), begin(arg)+size);

答案 1 :(得分:1)

代码中的错误对:

  1. i从未初始化。
  2. largest=arg[0];被放入使largest始终等于arg[0];
  3. 的循环中
  4. 在语句largest==arg[j];中,它应该是赋值而不是相等性检查,即largest = arg[j];

正确的代码:

int findLargest()
{
    int arg[25],largest,size,i,j;
    cout<<"enter the size of array"<<endl;
    cin>>size;
    cout<<"enter the numbers"<<endl;
    for(i=0; i<size; i++)
    {
        cin>>arg[i];
    }
    largest=arg[0];
    for(j=1; j<size; j++)
    {
        if(largest < arg[j])
        {
            largest = arg[j];
        }
    }
    cout<<"The largest number is : "<<largest;
    return largest; // in case caller function needs it.
}