长整数加减-实验报告(2)

2019-08-31 17:16

j--; //用来计数 i--; //用来计数 }// while(j!=0)

if(p->data>9&&i>1) /*长整数多余的位数值大于9向前一位进一,

当最高位大于9则不进一*/

{ p->data=p->data-10; p->prior->data=p->prior->data+1; }//if r=p; //指针r最终指向链表的第一个结点 p=p->prior; //指针向前移 i--; //用来计数 }// while(i!=0) }//if(i>j)

else if(i= =j) //当两个长整数的长度相等 { while(i!=0) //控制整数的长度 { if((p->data+q->data)>9&&i>1) /*两数相加大于9向前一位进一,

当最高位大于9则不进一*/

{ p->data=p->data+q->data-10; p->prior->data=p->prior->data+1; } else p->data=p->data+q->data; //不进位 r=p; //指针r最终指向链表的第一个结点 p=p->prior; //指针向前移 q=q->prior; //指针向前移 i--; //用来计数 }//while(i!=0) } //else if(i= =j)

else //当第一个长整数的长度小于第二个 { while(j!=0) //控制长整数的长度 { while(i!=0) //控制短整数的长度 { if(p->data+q->data>9) //当两数相加大于9向前一位进一 { q->data=q->data+p->data-10; q->prior->data=q->prior->data+1; } else q->data=p->data+q->data; //不进位 p=p->prior; //指针向前移

第 6 页 共 15 页

q=q->prior; //指针向前移 j--; //用来计数 i--; //用来计数 }// while(i!=0)

if(q->data>9&&j>1) /*长整数多余的位数值大于9向前一位进一,

当最高位大于9则不进一*/

{ q->data=q->data-10; q->prior->data=q->prior->data+1; } r=q; //指针r最终指向链表的第一个结点 q=q->prior; //指针向前移 j--; //用来计数 }// while(j!=0) }// else }//if(a= ='+')

if(a= ='-') //将两个长整数相减 { if(i>j) //当第一个长整数的长度大于第二个时,用第一个长整数减第二个 { while(i!=0) //控制长整数的长度 { while(j!=0) //控制短整数的长度 { if(p->datadata) /*当第一个长整数的数小于

第二个长整数的数,则向前一位借一*/

{ p->data=p->data-q->data+10; p->prior->data=p->prior->data-1; } else p->data=p->data-q->data; //不借一 p=p->prior; //指针向前移 q=q->prior; //指针向前移 j--; //用来计数 i--; //用来计数 } // while(j!=0) if(p->data<0&&i>1) //长整数多余的位数值小于0向前一位借一, { p->data=p->data+10; p->prior->data=p->prior->data-1; } r=p; //指针r最终指向链表的第一个结点 if(p->data= =0&&i= =1)// 当最高位等于0时,则r指向下一结点 {

第 7 页 共 15 页

r=p->next; break; } p=p->prior; //指针向前移 i--; //用来计数 }// while(i!=0) }//if(i>j) else if(i= =j) //当第一个长整数的长度等于第二个的长度 { int c=0,h=i,k=j; //定义几个临时整型变量 p1=p;q1=q; //使指针p1指向p,指针q1指向q while(i!=1) //将指针移到第一结点 { p1=p1->prior; //指针向前移 q1=q1->prior; //指针向前移 i--; //用来计数 } while(j!=0) /*判断两个长整数的大小,从高位开始判断, c=1,

表示第一个长整数大于或者等于第二个长整数,c=0则小于*/ { if(p1->data>q1->data) { c=1; break; } else if(p1->datadata) { c=0; break; } else if(p1->data= =q1->data&&j==1)c=1; else { p1=p1->next; q1=q1->next; } j--; //用来计数 }// while(j!=0) if (c= =1) //第一个长整数大于或者等于第二个长整数 { while(h!=0) //控制整数的长度 { if(p->datadata) /*当第一个长整数的数小于第二个

长整数的数,则向前一位借一*/

第 8 页 共 15 页

{ p->data=p->data-q->data+10; p->prior->data=p->prior->data-1; } else p->data=p->data-q->data; //不借一 r=p; //指针r最终指向链表的第一个结点 p=p->prior; //指针向前移 q=q->prior; //指针向前移 h--; //用来计数 }// while(h!=0) while(r->data= =0&&k>1) /*如果链表的的高位为0,则r向下一结点 移到,直到最后一位不移动*/ { k--; r=r->next; } }// if (c= =1) if(c= =0) //第一个长整数小于第二个长整数 { while(h!=0) //控制整数的长度 { if(p->data>q->data&&h>1) /*当第二个长整数的数小于第

一个长整数的数,则向前一位借一*/

{ q->data=q->data-p->data+10; q->prior->data=q->prior->data-1; } else q->data=q->data-p->data; //不借一 r=q; //指针r最终指向链表的第一个结点 p=p->prior; //指针向前移 q=q->prior; //指针向前移 h--; //用来计数 }// while(h!=0) while(r->data= =0) /*如果链表的的高位为0,则r向下一结点移到*/ { r=r->next; } r->data=-r->data; //如果高位不为0,则取负数 }// if(c= =0) }// else if(i= =j) else //当第一个长整数的长度小于第二个 { while(j!=0) //控制长整数的长度 {

第 9 页 共 15 页

}

6、销毁链表模块,程序结束后释放链表开辟的空间

while(i!=0) //控制短整数的长度 {

if(p->data>q->data) /*当第二个长整数的数小于第

一个长整数的数,则向前一位借一*/

{ q->data=q->data-p->data+10; q->prior->data=q->prior->data-1; } else q->data=q->data-p->data; //不借一 p=p->prior; //指针向前移 q=q->prior; //指针向前移 j--; //用来计数 i--; //用来计数 }// while(i!=0) if(q->data<0&&j>1) /*长整数多余的位数值小于0向前一位借一,

当到时最高位则不借一*/

{ q->data=q->data+10; q->prior->data=q->prior->data-1; } r=q; //指针r最终指向链表的第一个结点 if(r->data= =0&&j= =1) /*如果最高位值为0,

则r指向下一结点,并取负数*/

{ r=r->next; r->data=-r->data; break; } if(r->data!=0&&j= =1) //如果最高位值不为0,取负数

r->data=-r->data;

q=q->prior; //指针向前移 j--; //用来计数 }// while(j!=0) }// else } //if(a= ='-')

while(r!=NULL) //输出加减运算后的值 { cout<data; r=r->next ; }

cout<

第 10 页 共 15 页


长整数加减-实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:消防部队副团职干部竞聘演讲稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: