[华为机试练习题]16.数字统计

时间:2023-02-23 11:16:56

题目

题目标题:

对输入的整型数组,输出数组元素中的最大值、最大值的个数、最小值和最小值的个数
详细描述:

接口说明
原型:
voidOutputMaxAndMin(int * pInputInteger,intInputNum,int * pMaxValue,int * pMaxNum,int * pMinValue,int * pMinNum);
输入参数:
Int * pInputInteger:整型数组指针
Int InputNum:数组元素个数
输出参数(指针指向的内存区域保证有效):
int* pMaxValue:数组中最大值
int* pMaxNum:数组中最大值的个数
int* pMinValue:数组中最小值
int* pMinNum:数组中最小值的个数
返回值:
void
涉及知识点:

C语言基础:数组、比较
性能要求:


圈复杂度要求:

这个不由出题者提供,由后续判题系统全局配置
如:函数圈复杂度低于10,类公函数小于20等
代码工程和用例:
C/C++:
VS2005代码工程
嵌入工程的CPPUNIT用例

知识点:
工程环境请使用VS2005

题目来源: 软件训练营
维护人: d00191780
练习阶段: 初级

代码

/*---------------------------------------
* 日期:2015-06-30
* 作者:SJF0115
* 题目:数字统计
* 来源:华为上机
-----------------------------------------*/
#include <stdio.h>

/*
功能:对输入的整型数组,输出数组元素中的最大值、最大值的个数、最小值和最小值的个数

输入:int * pInputInteger:整型数组指针
int * InputNum:数组元素个数

输出:int * pMaxValue:数组中最大值
int * pMaxNum:数组中最大值的个数
int * pMinValue:数组中最小值
int * pMinNum:数组中最小值的个数

返回:void
*/
void OutputMaxAndMin(int * pInputInteger, int InputNum, int * pMaxValue, int * pMaxNum, int * pMinValue, int * pMinNum)
{
if(pInputInteger == NULL || InputNum <= 0){
return;
}//if
*pMaxValue = pInputInteger[0];
*pMinValue = pInputInteger[0];
*pMaxNum = 1;
*pMinNum = 1;
for(int i = 1;i < InputNum;++i){
// 更新最大值
if(pInputInteger[i] > *pMaxValue){
*pMaxValue = pInputInteger[i];
*pMaxNum = 1;
}//if
else if(pInputInteger[i] == *pMaxValue){
++(*pMaxNum);
}//else
// 更新最小值
if(pInputInteger[i] < *pMinValue){
*pMinValue = pInputInteger[i];
*pMinNum = 1;
}//if
else if(pInputInteger[i] == *pMinValue){
++(*pMinNum);
}//else
}//for
return;
}