【程序功能】利用一维数组将两个二进制数做二进制加法运算,再将结果化为十进制数输出。函数dec( )的功能是将两个二进制数进行二进制加法运算, 并转化为一个十进制数返回。 主函数中将两个二进制数反向存入数组a和b中,每位数为一个数组元素。从低位开始计算加法,其中要处理进位。对于以下2个反向写出的二进制数: 1,0,1,1,0,1,1,1,1 1,0,0,0,1,0,0,0,1,0,1,0,1 相加之后再转化为十进制数,输出结果为:5886 【程序调试要求】在下面给定的程序中,只允许在原语句上进行修改,不能增加或删除整条语句或修改算法。 #include <iostream.h> int dec(int a[],int b[], int n, int m) { int c[50]; //c数组用于存放相加的和 int s, h; int t=n>m?n:m; for (int i=0; i<=t; i++) { c[i]=a[i]+b[i]+c[i]; //第i位求和 if (c[i]>=2) //如果有进位 { c[i]=c[i]%2; c[i++]++; //则相邻高位加1 } } s=c[0], h; //s用于保存转换得到的十进制数 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 19:55:14 浏览: 53
将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处
4星 · 用户满意度95%
```
#include <iostream.h>
int dec(int a[], int b[], int n, int m) {
int c[50] = { 0 }; // 初始化c数组为0,用于存放相加的和
int s = 0, h = 1; // s用于保存转换得到的十进制数,h用于计算二进制位权
int t = n > m ? n : m;
for (int i = 0; i <= t; i++) {
c[i] += a[i] + b[i]; // 第i位求和
if (c[i] >= 2) { // 如果有进位
c[i] %= 2;
c[i + 1]++; // 则相邻高位加1
}
}
for (int j = 0; j <= t; j++) {
s += c[j] * h; // 转换为十进制数
h *= 2; // 计算二进制位权
}
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, b, 9, 13);
cout << "相加之后十进制数为:" << t << endl;
}
```
阅读全文