poj grids 2981 大数的加法

poj grids 2981 大数的加法
 
 2 // 1.用字符数组输入 
 3 // 2.字符转化为数字进行计算 
 4 // 3.数组中下标相同的相加并存入到sum[]中
 5 // 4.进位处理
 6 // 5.存在前导  0  进行输出处理  一定要注意最开始 0  的存储位置 i = 2*MAXSIZE 
 7 #include < stdio.h >
 8 #include < stdlib.h >
 9 #include < string .h >
10 #define  MAXSIZE 100
11 int  main()
12 {
13    char line[MAXSIZE];
14    int a[MAXSIZE];
15    int sum[MAXSIZE + MAXSIZE];
16    
17    memset (sum, 0sizeof(sum));
18    while ( scanf ("%s",line) && strcmp (line, "0") )  //求和终止条件 
19    {
20        while ( line[0== '-'
21            return 0;
22        
23        memset (a, 0sizeof(a));
24        
25        //将字符数转化为数字 
26        int j = strlen(line);
27        for (int i = j - 1; i >= 0; i--)
28        {
29            a[j-1-i] = line[i] - '0';
30        }
 
31        
32        //将各组数据相加到sum数组中
33        for (int i = 0; i <= MAXSIZE; i++)
34        {
35            sum[i] += a[i]; 
36        }
 
37    }

38    
39    //对sum【】进行进位的处理 
40    for ( int i = 0; i <= 2*MAXSIZE; i++ )
41    {
42        if ( sum[i] >= 10 )
43        {
44            sum[i+1+= (sum[i] / 10); 
45            sum[i] = sum[i] % 10;
46            
47        }

48    }
 
49    
50    //进行输出处理
51    bool target = false;
52    for ( int i = 2*MAXSIZE ; i >= 0; i--)
53    {
54        if (target)
55            printf ("%d", sum[i]);
56        else if ( sum[i] )
57        {
58            printf ("%d", sum[i]);
59            target = true;
60        }

61    }
 
62    printf ("\n");
63    //system("pause");
64    return 0;
65}
 
66

你可能感兴趣的:(poj grids 2981 大数的加法)