应用题
1. 使用VC++2010打开考生文件夹下“proj3”文件夹中的工程proj3.sln。完成空出的函数fun(int a[], int*index),使函数输入n(<100)个整数到指定数组,求该数组中最大元素的值和此元素的下标,最大元素值以函数值返回,此元素的下标通过指针形参带回调用函数。
要求函数实现以下的功能:
(1)获得输入的n个整数;
(2)把最大的数字的下标在第二个参数中输出;
(3)把最大的数字作为返回值。
注意:不能修改程序的其他部分,只能修改fun()函数。
#include<iostream.h>
#define MAXLINE 100
int fun(int a[],int *index)
{
}
void main()
{
int A[MAXLINE];
int index;
int maxdata;
maxdata=fun(A,&index);
cout<<"the max data is:"<<maxdata<<""<<"the posion is:"<<index<<endl;
return;
}
【正确答案】int i,n;
do //输入数组的大小
{
cout<<"Please input n\n";
cin>>n;
}while(n>99);
cout<<"Please input a[n]\n";
for(i=0;i<n; i++) //输入数组中元素的值
{
cin>>a[i];
}
*index=0; //元素下标值初始化
for(i=1; i<n; i++) //循环找出最大值
{
if(a[*index]<a[i])
*index=i;
//记录比较大元素的下标)
}
return a[*index]; //返回最大的元素值,其中index为最大值的下标
【答案解析】 (1)该程序功能是求数组中最大元素的值和此元素的下标。它的解题思路,初始化记录下标变量为0,指向数组第一个元素,逐个把所有元素和标记字符进行比较,并将大值的下标赋值给记录下标变量,从而找出最大值。
(2)从己给部分源程序的main主函数开始入手,核心函数int fun(int a[], int* index)中的a参数为输入的数组,其中index为记录最大值下标变量。
(3)首先输入数组大小,然后利用循环输入数组元素。
(4)利用for循环对每一个当前数组元素与index标记的元素进行大小比较。
(5)循环中将求得的最大数据a[i]的下标标志位赋给标志位index。