华为机试——数字字符串转二进制

C_C++_XY_09.数字字符串转二进制

  • 题目描述:

输入一个三个数字的字符串,请将此串进行如下整理:

将字符串转换成数字,转换为二进制数,如果倒数第三位是“0”,则输出“0”,如果是“1”,则输出“1”。

比如,输入字符串“240”,转换为二进制为“11110000”,它的倒数第三位是“0”,所以输出是“0”.

  • 要求实现函数:

void ArrangeString(const char *pInputStr, long lInputLen, char *pOutputStr);

· 【输入】 pInputStr: 输入字符串

· lInputLen: 输入字符串长度

· 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

· 【注意】不用考虑输入串为空,非数字等异常

  • 示例

输入:“000”

输出:“0”

输入:“251”

输出:“0”

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

#include <iostream>
#include <stdlib.h>
#include <bitset>
using namespace std;
 
void ArrangeString(const char *pInputStr, long lInputLen, char *pOutputStr)
{
    if ((pInputStr == NULL) || (lInputLen <= 0) || (pOutputStr == NULL))
    {
        return;
    }
 
    int num = atoi(pInputStr);
    bitset<32> b(num);
    if (b[2] == 1)
    {
        *pOutputStr = '1';
    }
    else
    {
        *pOutputStr = '0';
    }
 
    pOutputStr++;
    *pOutputStr = '\0';
}
//void ArrangeString(const char *pInputStr, long lInputLen, char *pOutputStr)
//{
//     if ((pInputStr == NULL) || (lInputLen <= 0) || (pOutputStr == NULL))
//     {
//         return;
//     }
//
//     int num = atoi(pInputStr);
//     if ((num >> 2) & 0x01 == 1)
//     {
//         *pOutputStr = '1';
//     }
//     else
//     {
//         *pOutputStr = '0';
//     }
//
//     pOutputStr++;
//     *pOutputStr = '\0';
//}
 
int main() {
    const char *pInputStr = "251";
    char pOutputStr[10];
    ArrangeString(pInputStr, 3, pOutputStr);
    cout << pOutputStr << endl;
    return 0;
}
posted @ 2013-07-16 18:07  helloweworld  阅读(1019)  评论(0编辑  收藏  举报