#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;}
这有什么问题? 编写此代码以查找数组中的最大数字 但它只会将数组中的第一个数字显示为最大
答案 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)
代码中的错误对:
i
从未初始化。largest=arg[0];
被放入使largest
始终等于arg[0];
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.
}