| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:数组处理
只看楼主 加入收藏
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
结帖率:76.92%
收藏
已结贴  问题点数:46 回复次数:11 
数组处理
我对那种超出int范围,用数组计算的例子很不行,请问有什么方法可以改进么??
例如 16549812376498123756986578916  +  7856123789569218 这种的
搜索更多相关主题的帖子: 计算 
2011-05-20 22:16
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:12 
模拟手算  大数相加, 开数组一字符串输入, 然后从后往前加,注意下进位就OK了
2011-05-20 22:31
lhp3774848
Rank: 2
来 自:福建省
等 级:论坛游民
帖 子:46
专家分:77
注 册:2011-5-3
收藏
得分:12 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
      int i,j,n[100],m[100];
      char a[100],b[100];
      gets(a);
      gets(b);
      for(i=0;i<=strlen(a)-1;i++)
      {
       if(a[i]=='0')
       n[i]=0;
       else if(a[i]=='1')
       n[i]=1;
       else if(a[i]=='2')
       n[i]=2;
       else if(a[i]=='3')
       n[i]=3;
       else if(a[i]=='4')
       n[i]=4;
       else if(a[i]=='5')
       n[i]=5;
       else if(a[i]=='6')
       n[i]=6;
       else if(a[i]=='7')
       n[i]=7;
       else if(a[i]=='8')
       n[i]=8;
       else n[i]=9;
      }
      for(i=0;i<=strlen(b)-1;i++)
      {
       if(b[i]=='0')
       m[i]=0;
       else if(b[i]=='1')
       m[i]=1;
       else if(b[i]=='2')
       m[i]=2;
       else if(b[i]=='3')
       m[i]=3;
       else if(b[i]=='4')
       m[i]=4;
       else if(b[i]=='5')
       m[i]=5;
       else if(b[i]=='6')
       m[i]=6;
       else if(b[i]=='7')
       m[i]=7;
       else if(b[i]=='8')
       m[i]=8;
       else m[i]=9;
      }
      if(strlen(a)>=strlen(b))
      {
      for(i=strlen(a)-1,j=strlen(b)-1;j>=0;i--,j--)
       {
           if((n[i]+m[j])<10)
           n[i]=n[i]+m[j];
           else
           {
           n[i]=(n[i]+m[j])%10;
           n[i-1]=n[i-1]+m[j-1]+(n[i-1]+m[j-1])/10;
           }
        }
        if(n[strlen(a)-strlen(b)-1]>=10)
        {
          n[strlen(a)-strlen(b)-1]=n[strlen(a)-strlen(b)-1]%10;
          n[strlen(a)-strlen(b)-2]=n[strlen(a)-strlen(b)-2]+n[strlen(a)-strlen(b)]/10;
        }
        for(i=0;i<=strlen(a)-1;i++)
         printf("%d",n[i]);
        }
      system("pause");
}
我这个不太行,求高手改进下。。。
2011-05-21 00:10
qianyou
Rank: 3Rank: 3
来 自:江西南昌
等 级:论坛游侠
帖 子:76
专家分:189
注 册:2011-3-25
收藏
得分:12 
两个数上下并列,较小的那个数长度不足补0,直到长度相等!然后上下相加就行了!
2011-05-21 01:37
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:12 
超长整数相加  用链表就可以实现

                                         
===========深入<----------------->浅出============
2011-05-21 09:32
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
收藏
得分:0 
回复 5楼 laoyang103
什么是链表
2011-05-21 12:03
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
收藏
得分:0 
回复 2楼 草狼
看不懂,能举个例子么?
2011-05-21 12:04
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
学了数据结构你就知道了  呵呵 现在在网吧

没有现成的链表  有时间给你传个

                                         
===========深入<----------------->浅出============
2011-05-21 12:10
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
收藏
得分:0 
谢了,邮箱是15201611949@
2011-05-21 12:12
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
我qq  553069938

                                         
===========深入<----------------->浅出============
2011-05-21 12:34
快速回复:数组处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043323 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved