计算机N位数相加
来源:互联网 发布:volatile源码 编辑:程序博客网 时间:2024/05/24 06:56
#include<iostream>
#include<string>
int main()
{
using namespace std;
string a,b;
cout<<endl<<"输入数字A:";
cin>>a;
cout<<"输入数字B:";
cin>>b;
int dh/*用来保存A B中每位数相加的和*/
,yu=0/*用来保存要进位的值*/
,az=a.size()-1,bz=b.size()-1;/*测量A B字符串的长度 减1是因为数组从0的开始的*/
int bjab=az>bz?az:bz;//计算出a b两个字符串那个长
char *p=new char[bjab+3]; //申请空间,用来存放最后的和
if(p==NULL)
{
cout<<"内存空间不够 ";
return 0;
}
int i=0,vc=0,k=0,jl=0;
for(i;i<=bjab+2;i++)
{
if(!(a[az]>='0'&&a[az]<='9'&&b[bz]>='0'&&b[bz]<='9'))
{
cout<<endl<<"你输入的数字中有非法字符! 程序将退出"<<endl;
delete []p;
exit(1);
}
dh=(a[az]-'0')+(b[bz]-'0'); //将a b中的每一位字符转换成数字后相加
p[vc++]=((dh+yu)%10)+'0'; //保存 dh中和个位数
if(dh+yu==10) yu=1; //用来除去如果dh等于9 yu等于1时没余数的情况
else yu=dh/10;
if(az==0) a[az]='0'; //当a 字符串比b短时,比b短的地方补0
else az--;
if(bz==0) b[bz]='0'; //同上
else bz--;
}
cout<<endl<<"数字A的长度为:"
<<a.size()<<endl<<"数字B的长度为:"
<<b.size()<<endl;
cout<<endl<<"A+B=";
if(p[vc-1]=='0'&&p[vc-2]=='0') k=vc-3; //除去没有进位时前面有0的情况
else if(p[vc-1]='0') k=vc-2;
else
k=vc-1 ;
for(k;k>=0;k--) //从后面往前输出字符
cout<<p[k];
cout<<endl;
delete []p;
return 0;
}
- 计算机N位数相加
- c++写的两个N位数相加
- 固定位数相加,位数不变
- 36位数相加
- 汇编 多位数相加
- 无限位数的相加
- 计算机位数
- java 实现任意位数相加!
- N位数乘以1位数
- n位数乘1位数
- n的阶乘相加
- n个阶层相加
- n个阶乘相加
- 计算机的位数
- 计算机的位数
- n^n的第一位数
- N^N的第一位数
- N!的位数
- 自由软件之父:Win 7仍未解决Vista核心问题
- Windows 7不安全 管理员权限是罪魁祸首
- 微软为Win7安全性辩护:至少可增加攻击难度
- log4j Warn 的解决一
- DNN安装问题
- 计算机N位数相加
- 淡淡的感觉~
- 唉原来我是一只菜鸟
- 我的C语言学习日志(一)
- 一本未看完的书 一段未走完的旅途
- 我的C语言学习日志(二)
- 不想再做菜鸟
- 一位哲人说过:“失去金钱的人损失甚少,失去健康的人损失极多,失去勇气的人失去一切。”
- 我与学生大本营一起走过的日子