算法导论 练习题 2.1-4
2017-03-15 11:07
225 查看
#include <stdio.h> #define MAXLEN 100 //进位函数,返回更新后数组长度 int binCarry(int a[],int len) { int carry=0,l=len; for(int i=0;i<len;i++) { a[i]+=carry; carry=0; if(a[i]>1) { carry+=a[i]/2; a[i]%=2; if(i==len-1) { a[len]=1; l++; } } } return l; } //二进制相加函数,返回“和数组”长度 int binAdd(int a[],int b[],int sum[],int alen,int blen) { int i,j,len=alen; //两个二进制相加,先不进位 for(i=0,j=0;i<alen&&j<blen;i++,j++) { sum[i]=a[i]+b[j]; } if(i>=alen && j< blen) { while(j<blen) { sum[j]=b[j]; j++; } len=blen; } if(j>=blen && i<alen) { while(i<alen) { sum[i]=a[i]; i++; } len=alen; } //开始进位 len=binCarry(sum,len); return len; } int main() { //倒序存放二进制数,a=11001,b=10111 int a[MAXLEN]={1,0,0,1,1}; int b[MAXLEN]={1,1,1,0,1}; int i,len; int sum[MAXLEN]; len=binAdd(a,b,sum,5,5); //倒序打印结果 for(i=len-1;i>=0;i--) { printf("%d",sum[i]); } getchar(); }
相关文章推荐
- 《算法导论》练习题 2.1-4
- 《算法导论》练习题2.1-4————二进制整数相加
- 算法导论 练习题 2.1-2
- 人人校园招聘笔试题 vs 算法导论练习题
- 算法导论第三版 22.1 图的表示 练习题答案全解析
- 算法导论 练习题 2.3-4
- 算法导论 练习题 4.3-4
- 算法导论 练习题 4.4-3
- 《算法导论》习题2.1-3
- 算法导论 练习题 6.3-3
- 算法导论 练习题 7.4-5
- 算法导论 练习题 11.3-1
- 算法导论 练习题 13.4-6
- 算法导论 练习题 15.5-4
- CSAPP:第二章 - 2.1练习题答案
- 算法导论习题自作2.1-1
- 算法导论 2.1-2
- 算法导论 练习题 4.3-6
- 算法导论第二章算法入门2.1 插入排序
- 算法导论 练习题 13.4-7