我必须制作一个程序来计算两个二进制数之间的差异,但它不能正常工作,我找不到错误;它输出的0和1是不正确的。 我试图修改几乎所有的东西,但在某一点上,它停止跟随“if”的命令。 很抱歉,如果我的代码效率不高,但我用C ++编写的代码只用了一个月。 如果你能找到错误,我将非常感激。
#include <iostream>
using namespace std;
int main(){
char primoN[8];
char secondoN[8];
int tot[16];
int i=0, j=15, rip=0; //rip is the number that you need if 0-1 happens
int n1[8];
int n2[8];
cout << "First number:\n";
for( i=0 ; i<8 ; i++){
cin >> primoN[i];
}
cout << "Second number:\n";
for( i=0 ; i<8 ; i++){
cin >> secondoN[i];
}
for( i=0 ; i<8 ; i++){
n1[i] = (primoN[i] - '0');
n2[i] = (secondoN[i] - '0');
}
for( i=7 ; i>=0; i--){
if(n1[i]==0 && n2[i]==1){
rip=1;
}
这是检查“rip”是0还是1的“开关”,它位于for循环中。我想可能错误就在这里,但我真的没有任何线索。
switch (rip){
case 0:
tot[j] = n1[i] - n2[i];
break;
case 1:
if(n1[i]==0 && n2[i]==0){
tot[j]=1;
rip=0;
}
if(n1[i]==1 && n2[i]==0){
tot[j]=1;
rip=0;
}
if(n1[i]==0 && n2[i]==1){
tot[j]=1;
}
if(n1[i]==1 && n2[i]==1){
tot[j]=1;
rip=1;
}
break;
}
j--;
}
while(j>=0){
tot[j]=0;
j--;
}
for( i=0 ; i<15 ; i++){
cout << tot[i];
}
return 0;
}