题目描述

鸡尾酒今天学习了原码反码补码的概念,现在他想要设计一个程序,能够自动把原码转换成反码。 原码转换成反码的规则:原码的第一位为符号位,若符号位为 0,则反码与原码相同。若符号位为 1,则符号位不变,将其他位全部取反。 但是写代码太累了,于是鸡尾酒将这个任务交给了你。
输入描述: 输入一行字符串表示一个原码。
输出描述: 输出一行一个字符串表示该原码对应的反码。
示例1
输入

00011101

输出

00011101

示例2
输入

1001

输出

1110

备注: 对于 50% 的数据,满足符号位为 0。
对于 100% 的数据,满足字符串长度不超过 32,且字符串仅由 0 和 1 构成。

思路

根据题意进行模拟即可

code

#include<bits/stdc++.h>//万能头
using namespace std;
string s;//定义字符串
int main()
{
	cin>>s;//string类型只能用cin读入
	int len=s.size();//len存储字符串s长度
	cout<<s[0];//不管符号位等于1或0,都不变,干脆直接先输出
	for(int i=1;i<len;i++)//从一开始(符号位位s[0])
	{
		if(s[0]=='0') cout<<s[i];//如果符号位等于0,就直接输出
		else if(s[i]=='1') printf("0");//否则等于1输出0
		else printf("1");//或等于0输出1
	}
	return 0;//结束
}

The End