华为OJ之初级篇Ⅲ

21.数字统计
简要描述:对输入的整型数组,输出数组元素中的最大值、最大值的个数、最小值和最小值的个数

详细描述:

接口说明

原型:

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

22.水仙花数
简要描述:水仙花数又称阿姆斯特朗数。

水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

求输入的数字是否为水仙花数

23.兔子产子
简要描述:从前有一对长寿的兔子,他们每个月生出一对小兔子,第一个月新生产的兔子两个月就长大了,在第三个月初开始生他们的下一代小兔子,这样一代一代的生下去,不考虑兔子的寿命,求第n个月出生多少对小兔子





简单示例:

比如输入1,第一个月出生的兔子只有一对,所以输出为1

比如输入2,第二个月出生的兔子只有一对,所以输出为1

比如输出为3,则该月份有两对兔子出生,则输出为2



要求:



实现以下接口:

输入一个正整数,表示第几个月,输出该月份生产出的小兔子的对数
调用者会保证: 

输入的月份与生产的兔子数目都为unsigned int 能表达的数字 

24.向升序单向链表中插入一个节点
简要描述:输入一个升序单向链表和一个链表节点,向单向链表中按升序插入这个节点。

输入为空指针的情况视为异常,另外不考虑节点值相等的情况。

链表结点定义如下:

struct ListNode

{

int m_nKey;

ListNode* m_pNext;

};

详细描述:

接口说明

原型:

ListNode* InsertNodeToList(ListNode* pListHead, ListNode* pInsertNode);

输入参数:

ListNode* pListHead 单向链表

ListNode* pInsertNode 新插入节点

输出参数(指针指向的内存区域保证有效):

ListNode* pListHead 单向链表

返回值:

正常插入节点返回链表头指针,其它异常返回空指针

25.修改字符串
简要描述:将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母(z变为a),大写字母和其他字符不处理,仍然保留。要求最终输出的字符串中不再存在任何连续出现3次的小写字母。

例如字符串”ATRcccert893#45ae”经过处理后应该为”ATRdert893#45ae”



详细描述:

接口说明

原型:

int ChangeString(char *pInStr,char *pOutStr)

输入参数:

char *pInStr 输入字符串

输出参数:

char *pOutStr 输出字符串,内存空间已分配好,可直接使用

返回值:

int 0:处理成功 -1:出现异常

限制:



举例:

pInStr:jkds*^*(HKEEEklIdddjilfff

pOutStr:jkds*^*(HKEEEklIejilg


26.找出字符串中第一个出现次数最多的字符
简要描述:找出字符串中第一个出现次数最多的字符

详细描述:

接口说明

原型:

bool FindChar(char* pInputString, char* pChar);

输入参数:

char* pInputString:字符串

输出参数(指针指向的内存区域保证有效):

char* pChar:出现次数最多的字符

返回值:

false 异常失败

true 输出成功

27.在字符串中找出连续最长的数字串
简要描述:请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;

注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!

样例输入

abcd12345ed125ss123058789

abcd12345ss54761



样例输出

输出123058789,函数返回值9

输出54761,函数返回值5





接口说明

函数原型:

unsignedint Continumax(char** pOutputstr, char* intputstr)

输入参数:
char* intputstr 输入字符串;

输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串; 

返回值:
连续最长的数字串的长度


28.循环队列基本操作
简要描述:
当时做的时候,题目给的是错的,然后做的时候是根据工程中的测试用例猜测的题目意思,根据这个意思完成作答,代码通过验证。

29.找出升序数组中和为给定值的两个数字
简要描述:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。

详细描述:

接口说明

原型:

bool FindTwoNumbersWithSum(int aData[], unsignedint uiLength, int sum, int *pNum1, int *pNum2);

输入参数:

int aData[] // 升序数组

unsigned int uiLength // 数组元素个数

int sum, // 给定两个数组的和

输出参数(指针指向的内存区域保证有效):

int*pNum1 // 第一个数字,对应数组索引小的

int *pNum2 // 第二个数字,对应数组索引大的

返回值:

找到返回true,异常返回false

30.整型反序

简要描述:给出一个不多于5位的整数, 进行反序处理

要求:

1、求出它是几位数

2、分别输出每一位数字

3、按逆序输出各位数字,例如原数为321,应输出123(仅数字间以空格间隔, 负号与数字之间不需要间隔)



例如:输入:12345

输出:5

1 2 3 4 5

54321



注意:如果是负数,负号加在第一个数字之前, 与数字没有空格间隔

比如

输入:-12345

输出:5

-1 2 3 4 5

-54321





函数原型:

/*
输入:
iInput: 位数不大于5的整数

输出:
iNum: 整数位数 
strRst: 空格间隔输出结果
iOutput:逆序整数

返回:
0 成功
-1 输入无效
*/

int ProcessX(int iInput, int& iNum, char * strRst, int& iOutput) 


答案点这里


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值