

题目
解决代码及点评
/************************************************************************/
/*
14. 编一个程序,读入具有5个元素的实型数组,然后调用一个函数,
递归地找出其中的最大元素,并指出它位置
*/
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int GO(float * arr,int num)
{
if (num==1) // 如果数组长度只有1
{
return 0; // 那么最大值的下标是0
}
else
{
if (arr[num-1]>arr[GO(arr,num-1)]) // 最后一个元素大于,前面num-1的最大值
{
return num-1; // 那么返回最后一个元素
}
else
return GO(arr,num-1); // 否则返回前面num-1个元素的最大元素
}
}
void main()
{
float arr[5]={0};
for (int i=0;i<5;i++) // 从键盘输入值
{
scanf_s("%f",&arr[i]);
}
int num=GO(arr,5); // 返回最大值的下标
printf("最大元素位置:%d最大元素为:%f",num,arr[num]);
system("pause");
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果