zoukankan      html  css  js  c++  java
  • ms的一道面试题

    把二进制数当成数组进行左移运算的,没隔四位要输出一个空格,我在这里看到此题:
    一个给定的数值由左边开始升位到右边第N位,如
    0010<<1 == 0100
    或者
    0001 0011<<4 == 0011 0000
    请用C或者C++或者其他X86上能运行的程序实现。
    题目要求是可以对带格式的(4位一空格)二进制数进行位操作。

    接收带有空格的输入可以用cin.getline()函数,要求一个字符数组作为参数,以及最多能接收的长度和以及一个表示结尾的字符。此题没有什么特别之处,就是记住在输出的时候每四位一个空格,并且要忽略输入行中的空格。我的算法复杂度为O(n):

    #i nclude <iostream> 
    using namespace std;

    void Convert(char* input,int num)
    {

        int j=0;
        for(int i=num+num/4;input[i]!='\0';i++)
        {

            if(input[i]==' ')
                continue;
            cout
    <<input[i];
            if(++j%4==0)
                cout
    <<" ";
        }

        for(int i=0;i<num;i++)
        {
            cout
    <<"0";
            if((++j%4==0)&&(i<num-1))
                cout
    <<" ";
        }
    }


    int main()
    {

        char input[100];
        cout
    <<"input string:";
        cin.getline(input,
    100,'\n');
        int num;
        cout
    <<"input number:";
        cin
    >>num;
        Convert(input,num);
        getchar();
        getchar();

        return 0;
    }
  • 相关阅读:
    Eclipse修改JSP文件的默认编码
    RPM常用命令总结
    软链接的妙用
    多线程练习
    Spring整合struts的配置文件存放问题
    使用struts框架后的404错误
    俄罗斯方块中的编程思想
    引用类型的强制类型转换
    数据库还原的问题
    常用sql语法初级
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1936840.html
Copyright © 2011-2022 走看看