posts - 99,  comments - 8,  trackbacks - 0
 
 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
11int 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
posted on 2010-08-09 13:07 雪黛依梦 阅读(255) 评论(0)  编辑 收藏 引用 所属分类: 大数

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜