#include <iostream.h> int dec(int a[],int b[], int n, int m) { int c[50]; int s, h; int t=n>m?n:m; for (int i=0; i<=t; i++) { c[i]=a[i]+b[i]+c[i]; if (c[i]>=2) { c[i]=c[i]%2; c[i++]++; } } s=c[0], h; for( int j=0: j<i: j++) { h=h*2; s+=c[j]*h; } return s; } void main ( ) { int a[50]={1,0,1,1,0,1,1,1,1}, b[50]={1,0,0,0,1,0,0,0,1,0,1,0,1}; int t=dec(a[50], b[50], 9,13); cout<<"相加之后十进制数为:"<<t<<endl; }
时间: 2023-11-27 15:55:00 浏览: 43
#include"iostream.h"
3星 · 编辑精心推荐
这段代码中存在一些语法错误,需要进行修改。另外,代码中使用了一个自定义的函数 dec(),但函数定义和函数调用的参数存在不一致的问题。
以下是经过修改后的代码:
```cpp
#include <iostream>
using namespace std;
int dec(int a[], int b[], int n, int m) {
int c[50] = {0}; // 初始化进位数组
int t = n > m ? n : m;
for (int i = 0; i <= t; i++) {
c[i] += a[i] + b[i]; // 加上进位
if (c[i] >= 2) {
c[i] %= 2;
c[i+1]++; // 进位
}
}
int s = 0, h = 1;
for (int j = 0; j <= t+1; j++) { // 注意循环范围
s += c[j] * h;
h *= 2;
}
return s;
}
int main() {
int a[50] = {1,0,1,1,0,1,1,1,1};
int b[50] = {1,0,0,0,1,0,0,0,1,0,1,0,1};
int t = dec(a, b, 9, 12); // 注意参数个数和类型
cout << "相加之后十进制数为:" << t << endl;
return 0;
}
```
注意,这段代码实现的是二进制数的加法,并且假定两个二进制数的位数不超过50位。输入的两个数组 a 和 b 分别表示两个二进制数,n 和 m 分别表示它们的位数。函数 dec() 的返回值为它们相加后的十进制结果。
阅读全文