C++ 二进制数

给某个二进制数加1,就得到它后面的那个二进制数。如二进制数001101001111,它的后一个数是001101010000。模拟算法:对于n位的二进制数,指针指向最右边的... 给某个二进制数加 1 ,就得到它后面的那个二进制数。如二进制数 001101001111 ,它的后一个数是 001101010000 。模拟算法:对于 n 位的二进制数,指针指向最右边的一位,只要是 1 ,就把它改为 0 ,然后指针左移,直到首次遇到 0 ,改为 1 就结束。输入文件:一行 0 1 字符串(长度不超过 255 位,表示某个二进制数)输出文件:一行 0 1 串构成的二制数,它比输入数据大 1输入样例:001101001111输出样例:001101010000提示:定义 char a[255]字符数组然后读入cin>>a;然后模拟加一 展开
 我来答
junlin1991
2014-01-03 · TA获得超过354个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:110万
展开全部

代码如上,有注释楼主应该可以看得懂。但是异常处理不完善,楼主可以尝试自己去完成。有不懂可以继续咨询

追问
直接写,否则不能复制
追答
#include <iostream>
#include <cstring>
using namespace std;

#define N 255
// 定义函数,nums:0,1串,操作结果保存在nums中
void add_1(char *nums)
{
    int size=strlen(nums);
    if(!size)    // 长度为0
    {
        nums="1";
        return;
    }
    char *p=nums+size-1;// 将指针p指向二进制串的结尾
    while(*p=='1')        // 如果指针指向的值为1,那么将其变为0继续循环
    {
        *p='0';
        if(p==nums)        // p如果指到了nums的开头,那么直接返回,以免溢出
            return;
        --p;
    }
    *p='1';
    
}

int main()
{

    char s[N];
    cin>>s;
    add_1(s);
    cout<<s<<endl;
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式