华为机试题目:识别字符串中的整数并转换为数字形式
2013-08-02 22:30
381 查看
华为机试题目:识别字符串中的整数并转换为数字形式
void take_num(const char *strIn, int *n, unsignedint *outArray)
【输入】 strIn: 输入的字符串
【输出】 n: 统计识别出来的整数个数
outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数,
outArray[1]是第二个整数,以此类推。数组地址已经分配,可以直接使用
【返回】 无
注:
I、 不考虑字符串中出现的正负号(+,-),即所有转换结果为非负整数(包括0和正整数)
II、 不考虑转换后整数超出范围情况,即测试用例中可能出现的最大整数不会超过unsignedint可处理的范围
III、 需要考虑 '0' 开始的数字字符串情况,比如 "00035",应转换为整数35;
"000" 应转换为整数0;"00.0035"应转换为整数0和35(忽略小数点:mmm.nnn当成两个数mmm和nnn来识别)
IV、 输入字符串不会超过100Bytes,请不用考虑超长字符串的情况。
示例
输入:strIn ="ab00cd+123fght456-253.005fgh"
输出:n = 6
outArray = {0, 123,456, 25, 3, 5}
#include<iostream>
using namespace std;
void take_num(const char *strln, int * n, unsigned int *outArray)
{
int res,m=0;
while(*strln!='\0')
{
while(!(*strln>='0'&&*strln<='9')&&*strln!='\0')
strln++;
if(*strln!='\0')
{
res=*strln-'0';
strln++;
while(*strln>='0'&&*strln<='9')
{
res=10*res+*strln-'0';
strln++;
}
outArray[m]=res;
m++;
}
}
*n=m;
}
int main()
{
int num,i;
const char strln[50]="ab00cd+123fgh456-253.005fgh";
unsigned int outArray[50];
take_num(strln ,&num,outArray);
cout<<"整数的个数是"<<num<<endl;
for(i=0;i<num;i++)
{
cout<<outArray[i]<<"";
}
cout<<endl;
return 0;
}
相关文章推荐
- 华为机试——识别字符串中的整数并转换成数字形式
- 华为机试题--识别字符串中的整数并转换为数字形式
- 华为: 识别字符串中的整数并转换为数字形式
- 识别字符串中的整数并转换为数字形式
- 识别字符串中的整数并转换为数字形式
- 识别字符串中的整数并转换为数字形式
- 将一个整数(数字或长字符串形式)转换成中文输出
- 华为机试——字符串到数字的转换
- 题目:请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。用c语言编写(不能用数字转换成字符串)。
- 为函数原型编写函数定义:int my_atoi(char *str);(将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数))
- 华为机试在线训练-牛客网(21)整数与IP地址间的转换
- 华为机试—字符串删除数字大写变小写
- 华为机试——通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 华为机试——任意正整数编码为字符串
- 题目1508:把字符串转换成整数
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)
- 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
- NFA转换成DFA——汉字形式数字转换成整数数字
- 第20题: 题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。