C语言入门:大数整合

// beautiful.cpp : Defines the entry point for the console application.
//

#include"stdafx.h"
#include <string.h>//导入String有关的头文件
#define MAXLEN 20   //定义一个常量,注意常量后面是没有;的!!!                    
int main(int argc, char* argv[]){                                   
    int a[MAXLEN],b[MAXLEN],c[MAXLEN];     //设定长度
    char s1[MAXLEN],s2[MAXLEN];           //S1:a S2:b
    int l1,l2,na,nb,nc,i,j,k;
    //l1,l2:字符串的长度    na,nb,nc:a[],b[],c[]的长度
    memset(a,0,sizeof(a));     //让a,b,c清零
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    printf("Please enter 2 numbers to add");
    scanf("%s%s",s1,s2);  //得到俩个要相加的数
    l1 =strlen(s1);//strlen函数:计算的是字符串str的长度,从字符的首地址开始遍历,以 '\0' 为结束标志
    l2=strlen(s2);//然后将计算的长度返回,计算的长度并不包含'\0'。
        for(i = 0;i<l1;i++){         //将字符串转换为int数组
      a[i]=s1[l1-i-1]-'0';
    }
    na=l1;                       //得到int a [] 算式的长度
    for(i = 0;i<l2;i++){        //将字符串转换为int数组
        b[i]=s2[l2-i-1]-'0';
    }
    nb=l2;                       //得到int b [] 算式的长度

    if(na>nb){                  //比较 a和b的长度,并且将最长的长度赋给c
                                //如 a=10000,b=2222,a 长为;5,b长为4,那么c的长度就是5;
        nc=na;
    }
    else {
        nc=nb;}
    for(i=0;i<nc;i++){            //开始进行a+b=c的运算
        c[i]=c[i]+a[i]+b[i];// c[i];加上了进位
        c[i+1]+=c[i]/10;// 进位
        c[i]=c[i]%10;// 得到个位数
    }

    nc++;//0~nc-1都已经进好了位数,nc位可能发生了进位,所有为了显示进位,让nc++
   while(c[nc-1]==0){  //判断有没有前导零,如,nc++之前,99,9为nc-1,nc++之后,990,0为nc-1
      if(nc==1){
         break;
      }
      nc--;
   }

   for(i=nc-1;i>=0;i--){     //从最右位开始倒数,如 123,3:nc-1

      printf("%d",c[i]);

   }

    return 0;
}

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值