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;然后模拟加一
展开
1个回答
追问
直接写,否则不能复制
追答
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询