1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; /* 计算2个二进制的数0或者1(字符)进行and or xor运算的结果 */ char calc(char a,char b,string x){ char r; if(x == "and"){ if(a == '1' && b == '1'){ r = '1'; }else{ r = '0'; } } else if(x == "or"){ if(a == '1' || b == '1'){ r = '1'; }else{ r = '0'; } }else if(x == "xor"){ if(a != b){ r = '1'; }else{ r = '0'; } } return r; } int main(){ //定义完函数,调试一下,做一步测一步 //cout<<calc('1','0',"xor"); //开始编写程序 string s1,s2,r,x;//s1 s2代表2个要运算的数,r代表结果,x代表运算符 int len,i,j; getline(cin,s1); getline(cin,s2); getline(cin,x); //得到较长的字符串的长度,按照这个长度运算,短的要在前面补0(相当于倒过来后面补0) len = s1.length() > s2.length()?s1.length():s2.length(); if(s1.length() < len){ for(i = 1;i <= len - s1.length();i++){ s1 = '0' + s1; } } else if(s2.length() < len){ for(i = 1;i <= len - s2.length();i++){ s2 = '0' + s2; } } //测试一下补0是否正确 //cout<<s1<<" "<<s2<<endl; //逐位运算 for(i = 0;i < len;i++){ r = r + calc(s1[i],s2[i],x); } //结果从第一个非0开始输出(这里删除r中前面的0,注意如果r都为0,会删光的,考虑特殊情况) while(r[0] == '0'){ r.erase(0,1); } if(r.length() != 0){ cout<<r<<endl; }else{ cout<<"0"<<endl; } }
- 1
信息
- ID
- 260
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者