用c++:读下列程序。 (1)将其改写为传递引用参数。 (2)说出其功能。 (3)将findmax()函数改写为非递归函数(重新考虑参数的个数)。 /* 请输入10个数据: 33 91 54 67 82 37 85 63 19 68 最大的数是:91 它的下标是:1 */
时间: 2024-02-22 20:01:01 浏览: 11
(1) 将其改写为传递引用参数:
```
#include<iostream>
using namespace std;
void findmax(int a[], int n, int &max, int &index)
{
max = a[0];
index = 0;
for (int i = 0; i < n; i++)
{
if (a[i] > max)
{
max = a[i];
index = i;
}
}
}
int main()
{
int a[10], max, index;
cout << "请输入10个数据:";
for (int i = 0; i < 10; i++)
{
cin >> a[i];
}
findmax(a, 10, max, index);
cout << "最大的数是:" << max << endl;
cout << "它的下标是:" << index << endl;
return 0;
}
```
(2) 这个程序的功能是输入10个数,然后找到这10个数中的最大值及其下标。
(3) 将findmax()函数改写为非递归函数:
```
#include<iostream>
using namespace std;
void findmax(int a[], int n, int &max, int &index)
{
max = a[0];
index = 0;
for (int i = 1; i < n; i++)
{
if (a[i] > max)
{
max = a[i];
index = i;
}
}
}
int main()
{
int a[10], max, index;
cout << "请输入10个数据:";
for (int i = 0; i < 10; i++)
{
cin >> a[i];
}
findmax(a, 10, max, index);
cout << "最大的数是:" << max << endl;
cout << "它的下标是:" << index << endl;
return 0;
}
```
这里将for循环的初值改为1,将max初始化为a[0],然后遍历数组,如果发现当前元素大于max,则更新max和它的下标index。