求指导!!!!

lrd408 2011-09-01 10:49:30
//两个数组中存的二进制数,求和
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

void ADD_BIT(int *result,int *p,int *q,int n);
int main() {
const int NUM=10;
int BitArray1[NUM]={1,0,1,1,1,1,0,0,1,1};
int BitArray2[NUM]={1,1,1,1,1,0,1,0,1,1};
int Result[NUM+1];
ADD_BIT(Result,BitArray1,BitArray2,NUM);
return 0;
}

void ADD_BIT(int *result,int *p,int *q,int n) {
int overflow=0;
for(int i=n-1;i<=0;--i) {
if( (*(p+i) +*(q+i)==2) && overflow==0 ) { *(result+i+1)=0;overflow=1; }
if( ( (*(p+i) + *(q+i))==2) && overflow==1) { *(result+i+1)=1;overflow=1; }
if( (*(p+i)+*(q+i))==1 && overflow==0) { *(result+i+1)=1;overflow=0;}
if( (*(p+i)+*(q+i))==1 && overflow==1) { *(result+i+1)=0;overflow=1; }
if((*(p+i)+*(q+i))==0 && overflow==1) { *(result+i+1)=1;overflow=0;}
else { *(result+i+1)=0; overflow=0; }
}
if(overflow==1) *(result)=1;
else *(result)=0;
cout<<"相加的二进制和是:"<<endl;
for(int i=0;i!=n+1;++i)
cout<<*(result+i);
cout<<endl;
return;
}
...全文
69 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
仙度瑞城 2011-09-01
  • 打赏
  • 举报
回复
帮你改了一下..现在可以了..编译运行结果正确..

//两个数组中存的二进制数,求和
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

void ADD_BIT(int *result,int *p,int *q,int n);
int main() {
const int NUM=10;
int BitArray1[NUM]={1,0,1,1,1,1,0,0,1,1};
int BitArray2[NUM]={1,1,1,1,1,0,1,0,1,1};
int Result[NUM+1] = {0};//数组初始化
ADD_BIT(Result,BitArray1,BitArray2,NUM);
return 0;
}

void ADD_BIT(int *result,int *p,int *q,int n) {
int overflow=0;
for(int i=n-1;i>=0;--i)//你把大于号和小于号写反了
{
if( (*(p+i) +*(q+i)==2) && overflow==0 )
{
*(result+i+1)=0;overflow=1;
continue;//当前位运算结束以后保留当前位结果和进位标志后
//直接跳入下一个循环进行下一位的运算..
}
if( ( (*(p+i) + *(q+i))==2) && overflow==1)
{
*(result+i+1)=1;overflow=1;
continue;//同上
}
if( (*(p+i)+*(q+i))==1 && overflow==0)
{
*(result+i+1)=1;overflow=0;
continue;//同上
}
if( (*(p+i)+*(q+i))==1 && overflow==1)
{
*(result+i+1)=0;overflow=1;
continue;//同上
}
if((*(p+i)+*(q+i))==0 && overflow==1)
{
*(result+i+1)=1;overflow=0;
continue;//同上
}
else
{
*(result+i+1)=0; overflow=0;
continue;//同上
}
}
if(overflow==1) *(result)=1;
else *(result)=0;
cout<<"相加的二进制和是:"<<endl;
for(int i=0;i!=n+1;++i)
cout<<*(result+i);
cout<<endl;
getchar();
return;
}
仙度瑞城 2011-09-01
  • 打赏
  • 举报
回复
for(int i=n-1;i<=0;--i)
for循环一进来i = 9
判断i<=0不符合直接跳出循环..你说还用用么?
lrd408 2011-09-01
  • 打赏
  • 举报
回复
没人吗
仙度瑞城 2011-09-01
  • 打赏
  • 举报
回复
先占个座..
lrd408 2011-09-01
  • 打赏
  • 举报
回复
我说的不对
lrd408 2011-09-01
  • 打赏
  • 举报
回复
好像BitArray1的赋值还是对的,到BitArray2就不对了
ctreewang 2011-09-01
  • 打赏
  • 举报
回复
打上断点,一步步跳,你应该知道怎么回事吧?二进制想加你会不?
lrd408 2011-09-01
  • 打赏
  • 举报
回复
谢谢!

65,190

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧