大数加法

语法:add(char a[],char b[],char s[]);

参数:

a[] 被乘数,用字符串表示,位数不限

b[] 乘数,用字符串表示,位数不限

t[] 结果,用字符串表示

返回值: null

注意:  

  空间复杂度为 o(n^2)

  需要 string.h

源程序:  

 

复制代码
#include <iostream>
#include <string.h>
using namespace std;
void add(char a[],char b[],char back[])
{
    int i,j,k,up,x,y,z,l;
    char *c;
    if(strlen(a)>strlen(b)) 
        l=strlen(a)+2; 
    else 
        l=strlen(b)+2;
    c=(char *) malloc(l*sizeof(char));
    i=strlen(a)-1;
    j=strlen(b)-1;
    k=0;up=0;
    while(i>=0||j>=0)
        {
            if(i<0) 
                x='0'; 
            else 
                x=a[i];

            if(j<0) 
                y='0'; 
            else 
                y=b[j];

            z=x-'0'+y-'0';

            if(up) 
                z+=1;
            if(z>9) 
            {
                up=1;
                z%=10;
            } 
            else 
                up=0;
            c[k++]=z+'0';
            i--;
            j--;
        }
    if(up) 
        c[k++]='1';
    i=0;
    c[k]='\0';
    for(k-=1;k>=0;k--)
        back[i++]=c[k];
    back[i]='\0';
} 
void add(char a[],char b[],char back[]);
int main()
{
    char a[100];
    char b[100];
    char back[100];
    cout<<"请输入两个大数:"<<endl;
    cin>>a>>b;
    add(a,b,back);

    cout<<"大数相加结果是:"<<back<<endl;
    return 0;
}
复制代码
posted @   xingoo  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示