| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 908 人关注过本帖
标题:关于大整数运算,帮忙看下哪里出错了~~(上次的错误以纠正,又有新问题!)
只看楼主 加入收藏
v943761
Rank: 2
等 级:论坛游民
帖 子:42
专家分:15
注 册:2009-3-4
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#define N 200
int change(char str[],int d[])
{
    int i,j,len=strlen(str);
    j=N-1;
    for(i=0;i<N-1;i++)
        d[i]=0;
    for(i=len-1;i>=0;i--)
        d[j--]=(str[i]-'0');
    return j+1;
}
void change2(char th[],int k,int c[])
{
    int i;
    char s[10];
    sprintf(th,"%d",c[k]);
    for(i=k+1;i<N;i++)
    {        
        sprintf(s,"%d",c[i]);
        strcat(th,s);
    }
}

void add(char st1[],char st2[],char st[])
{
    int a[N],b[N],c[N];
    int i,sum=0,k1,k2,k,re=0;
    if (strlen(st1)==0)
    {
        strcpy(st,st2);
        return;
    }
    if (strlen(st2)==0)
    {
        strcpy(st,st1);
        return;
    }
    k1=change(st1,a);
    k2=change(st2,b);
    k=k1<k2?k1:k2;
    for(i=N-1;i>=k;i--)
    {
        sum=a[i]+b[i]+re;
        c[i]=sum%10;
        re=sum/10;
    }
    if(re>0)
    {
        k--;
        c[i]=re;
    }
    change2(st,k,c);
}
int main()
{
    char st1[N],st2[N],st[N];
    scanf("%s%s",st1,st2);
    add(st1,st2,st);
    printf("%s\n",st);
    return 0;
}
OK了~运行全都正确,我把那个四个字符转换成一个四位的整数的语句去掉了。。
2010-10-20 22:01
v943761
Rank: 2
等 级:论坛游民
帖 子:42
专家分:15
注 册:2009-3-4
收藏
得分:0 
这一个整形数组元素只存放了一个一位数,我想进行优化,把每个数组存放一个四位数,谁能教下该怎么写吗??
2010-10-20 22:08
快速回复:关于大整数运算,帮忙看下哪里出错了~~(上次的错误以纠正,又有新问题 ...
数据加载中...
 
   



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

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