![](https://i-blog.csdnimg.cn/blog_migrate/c21d949c458f49fbab18e18b2d44cb3e.png)
题目
解决代码及点评
/************************************************************************/
/*
19. 求N个数中的最大值,最大值出现的次数,然后求出次大值(次大值一定存在)
*/
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int FindMax19(int * arr,int num) // 求最大值
{
int max=0;
for(int i=1;i<num;i++) // 循环查找最大值
{
if (arr[max]<arr[i])
{
max=i;
}
}
return arr[max];
}
int FindSMax19(int * arr,int num) // 查找次最大值,一样通过循环去查找
{
int max=arr[0];
int two=arr[0];
for(int i=1;i<num;i++)
{
if (max<arr[i]) // 当发现一个更大的数时,要保存最大数和第二大的数
{ two=max;
max=arr[i];
}
else if (arr[i]>two&&arr[i]<max) // 或者某一个数只是大于第二大的数,那么就只要更换第二大的就行
{
two=arr[i];
}
}
if (two==max)
{
printf("没有次大值");
return -1;
}
return two;
}
void main()
{
int arr[10]={0};
for (int i=0;i<10;i++ )
{
arr[i]=rand()%20;
}
for (int i=0;i<10;i++ )
{
printf("%5d",arr[i]);
}
int num=0;
int max=FindMax19(arr,10);
for (int j=0;j<10;j++)
{
if (arr[j]==max)
{
num++;
}
}
printf("最大值为%d出现次数为:%d",max,num);
printf("次大值为:%d",FindSMax19(arr,10));
system("pause");
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果