读书人

a+b (9度oj 题目60)

发布时间: 2013-03-06 16:20:31 作者: rapoo

a+b (九度oj 题目60)
前言这个周末感冒,一直没写程序,拿到题练习一下,我很奇怪的是这道题只能用全局数组,传参总会出问题,gdb没有调试出来,太诡异了
题目

#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****************************************************************/


读书人网 >编程

热点推荐