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

题目

题目标题:

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

接口说明
原型:
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;
}

你可能感兴趣的:(华为机试练习题)