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
详细描述:
接口说明
原型:
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)
求输入的数字是否为水仙花数
水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
求输入的数字是否为水仙花数
23.兔子产子
简要描述:从前有一对长寿的兔子,他们每个月生出一对小兔子,第一个月新生产的兔子两个月就长大了,在第三个月初开始生他们的下一代小兔子,这样一代一代的生下去,不考虑兔子的寿命,求第n个月出生多少对小兔子
简单示例:
比如输入1,第一个月出生的兔子只有一对,所以输出为1
比如输入2,第二个月出生的兔子只有一对,所以输出为1
比如输出为3,则该月份有两对兔子出生,则输出为2
要求:
实现以下接口:
输入一个正整数,表示第几个月,输出该月份生产出的小兔子的对数
调用者会保证:
输入的月份与生产的兔子数目都为unsigned int 能表达的数字
简单示例:
比如输入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 单向链表
返回值:
正常插入节点返回链表头指针,其它异常返回空指针
输入为空指针的情况视为异常,另外不考虑节点值相等的情况。
链表结点定义如下:
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
例如字符串”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 输出成功
详细描述:
接口说明
原型:
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,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;
返回值:
连续最长的数字串的长度
注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“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
详细描述:
接口说明
原型:
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)