当前位置:编程学习 > C/C++ >>

a+b (九度oj 题目60)

前言
这个周末感冒,一直没写程序,拿到题练习一下,我很奇怪的是这道题只能用全局数组,传参总会出问题,gdb没有调试出来,太诡异了
 
题目
[html]  
题目描述:  
实现一个加法器,使其能够输出a+b的值。  
输入:  
输入包括两个数a和b,其中a和b的位数不超过1000位。  
输出:  
可能有多组测试数据,对于每组数据,  
输出a+b的值。  
样例输入:  
2 6  
10000000000000000000 10000000000000000000000000000000  
样例输出:  
8  
10000000000010000000000000000000  
 
ac代码
[cpp]  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
   
#define MAX 1002  
   
   
char a[MAX], b[MAX], sum[MAX];  
   
void bigDataPlus();  
   
int main()  
{  
    while(scanf("%s %s", a, b) != EOF)  
    {  
        bigDataPlus();  
        printf("%s\n", sum);  
    }  
   
    return 0;  
}  
   
   
void bigDataPlus()  
{  
    int i, j, k, c, len_a, len_b;  
   
    //初始化  
    memset(sum, 0, sizeof(sum));  
    len_a = strlen(a);  
    len_b = strlen(b);  
       
    //进位标识  
    c = 0;  
   
    for(i = len_a - 1, j = len_b - 1, k = 0; i >=0 && j >= 0; i --, j --, k ++)  
    {  
        sum[k] = a[i] + b[j] + c - '0';  
           
        if(sum[k] > '9')  
        {  
            c = 1;  
            sum[k] -= 10;  
        }else  
        {  
            c = 0;  
        }  
    }  
       
    //a > b  
    while(i >= 0)  
    {  
        sum[k] = a[i] + c;  
        if(sum[k] > '9')  
        {  
            sum[k] -= 10;  
            c = 1;  
        }else  
        {  
            c = 0;  
        }  
        k ++;  
        i --;  
    }  
   
    //b > a  
    while(j >= 0)  
    {  
        sum[k] = b[j] + c;  
        if(sum[k] > '9')  
        {  
            sum[k] -= 10;  
            c = 1;  
        }else  
        {  
            c = 0;  
        }  
        k ++;  
        j --;  
    }  
       
    //最后是否有进位的情况  
    if(c == 1)  
    {  
        sum[k ++] = '1';  
    }  
   
    //翻转  
    char temp;  
    for(i = 0, j = k - 1; i < j; i ++, j --)  
    {  
        temp = sum[i];  
        sum[i] = sum[j];  
        sum[j] = temp;  
    }  
   
}  
/************************************************************** 
    Problem: 1198 
    User: wangzhengyi 
    Language: C 
    Result: Accepted 
    Time:30 ms 
    Memory:912 kb 
****************************************************************/  
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,