大数相乘,数组

#include <iostream>
#include <stdlib.h>
using namespace std;

void main()
{
    char a[50],b[50];//设置保存输入的数据为字符型...便于输入处理
    int c[100];             //保存每次的结果...
    //int a1[50],b1[50],c1[100];
    memset(a,0,50);     //a的进行初始化
    memset(b,0,50);        //a的进行初始化
    memset(c,0,100);        //a的进行初始化
    
    cout<<"输入乘数与被乘数:"<<endl;
    int i = 0,j=0;    
    int leng1=0,leng2=0;//保存字符串长度
    //for(i=0;i<50;i++)
// {
        cin>>a;
  leng1=strlen(a);
        cin>>b;
        leng2=strlen(b);
        a[leng1]='\0';
  b[leng2]='\0';
     cout<<endl;
        
     for(i=0;i<leng1;i++)//对a字符串输入的字符进行对应的处理
     {
            a[i]=a[i]-48;
     }

     for(i=0;i<leng2;i++)//对b字符串输入的字符进行对应的处理
     {
            b[i]=b[i]-48;
     }

     for(i=0;i<leng1;i++)    //这个循环是计算的核心...将对应位相乘
     {
        for(j=0;j<leng2;j++)
        {
         c[i+j]=c[i+j]+a[j]*b[i];
        // printf("%d    ",c[i+j]);
        }
     }
        
    // printf("\n");
     //for(i=0;i<=leng1+leng2-2;i++)
    // {
     //     printf("%d    ",c[i]);
    // }
        
     printf("\n");
     for(i=leng1+leng2-2;i>0;i--)//将每一位的进位进到下一位中
     {
         c[i-1]=c[i-1]+c[i]/10;
    c[i]=c[i]%10;
     }
        
     int head=0;//对第一个数字进行处理
     head=c[0]/10;
     c[0]=c[0]%10;
     //for(i=0;i<=leng1+leng2-1;i++)
     //{
        // c[i]=c[i]-48;
     //}
     printf("%d",head);//输出第一个
     for(i=0;i<=leng1+leng2-2;i++)//输出后面所有的数字
     {
            printf("%d",c[i]);
     }
        
     printf("\n");
     system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值