黑马程序员技术交流社区

标题: 【上海校区】字符数组实现两大数相加 [打印本页]

作者: 梦缠绕的时候    时间: 2018-11-19 09:48
标题: 【上海校区】字符数组实现两大数相加
C实现

#include "stdio.h"                 //===================头文件
#include "string.h"

void main()                        //===================主函数
{
        int i,temp,m,n,bigger;        //=================变量定义
        int c1[100]={0},c2[100]={0};
        char a[100];
        char b[100];
       
        printf("请输入第一个大数,enter:");
        gets(a);
        printf("请输入第二个大数,enter:");
        gets(b);
        m=strlen(a);
    n=strlen(b);
        if(m>n)                        //==取长度大者长度分配储存空间
         bigger=m;
        else
         bigger=n;
       
        temp=bigger;                       //=======temp暂存bigger的值
       
        for(i=0;i<m;bigger--,i++)          //=======将字符串a颠倒存入c1中
       c1[bigger]=a[m-1-i]-'0';   
    bigger=temp;
    for(i=0;i<n;bigger--,i++)         //=======将字符串b颠倒存入c2中
       c2[bigger]=b[n-1-i]-'0';
                             
       
        for(i=temp;i>=0;i--)               //============c1与c2各项相加
        {
           c1=c1+c2;
             if(c1>=10)               //=============== 十进制进位
             {
                      c1-=10;
                 c1[i-1]++;
             }
        }
        printf("\t两数之和为:");
        if(c1[0]!=0)                  //考虑到首位,即上面c[temp]可能为0               
        {                               //====当为0时,下一位作为首位
                for(i=0;i<=temp;i++)            
                printf("%d",c1);               
        }
        else
        {
                for(i=1;i<=temp;i++)
                printf("%d",c1);
        }

}

---------------------
作者:yangsong95
来源:CSDN
原文:https://blog.csdn.net/yangsong95/article/details/83054363
版权声明:本文为博主原创文章,转载请附上博文链接!


作者: 不二晨    时间: 2018-11-21 17:09

作者: 梦缠绕的时候    时间: 2018-11-22 17:00

作者: 魔都黑马少年梦    时间: 2018-11-22 17:07





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2