| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:调了无数次了,还是不明白哪错了
只看楼主 加入收藏
gikieng
Rank: 2
等 级:论坛游民
帖 子:19
专家分:14
注 册:2013-3-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
调了无数次了,还是不明白哪错了
#include<stdio.h>
#include<memory.h>
#define MAXSIZE 1025
void add(char add1[],char add2[] )
{
    char sum[2000];
    int len1,len2,k,i,j;

    memset(sum,'0',2000);

    len1=strlen(add1);
    len2=strlen(add2);

    if(len1>=len2)
    {
        i=len1-1;
        j=len2-1;
        for(;j>=0;j--)
        {
            sum[len1]=add1[i]+add2[j]+sum[len1]-144;
            if(sum[len1]>9)
            {
                sum[len1]-=10;
                sum[len1-1]++;
            }
            sum[len1]+=48;
            len1--;
            i--;
        }
        for(;i>=0;i--)
        {
            sum[len1]=sum[len1]+add1[i]-96;
            if(sum[len1]>9)
            {
                sum[len1]-=10;
                sum[len1-1]++;
            }
            sum[len1]+=48;
            len1--;
        }
        if(sum[0]!=48)
        {
            for(i=0;i<len1;i++)printf("%c",sum[i]);
        }
        else
        {
            for(i=1;i<len1;i++)printf("%c",sum[i]);
        }
    }
    else
    {
        i=len2-1;
        j=len1-1;
        for(;j>=0;j--)
        {
            sum[len2]=add1[i]+add2[j]+sum[len2]-144;
            if(sum[len2]>9)
            {
                sum[len2]-=10;
                sum[len2-1]++;
            }
            sum[len2]+=48;
            len2--;
            i--;
        }
        for(;i>=0;i--)
        {
            sum[len2]=sum[len2]+add1[i]-96;
            if(sum[len2]>9)
            {
                sum[len2]-=10;
                sum[len2-1]++;
            }
            sum[len2]+=48;
            len2--;
        }
          if(sum[0]==48)
        {
            for(k=1;i<len2;k++)printf("%c",sum[k]);
        }
        else
        {
            for(k=0;i<len2;k++)printf("%c",sum[k]);
        }
    }
}

main()
{
    char num1[1000],num2[1000];
    scanf("%s%s",&num1,&num2);
    void add(char add1[],char add2[]);
    add(num1,num2);

}
是我编的实验两个大数加法运算的,不知道为什么总不行。。。
搜索更多相关主题的帖子: 还是 include 
2013-03-14 10:52
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
大致看了下,输出有问题,在相加的过程中,len1(或len2)的值已经改变了

建议模块功能清晰一些,add就是add,不要掺杂printf

void add(char a[], char b[], char sum[])


[fly]存在即是合理[/fly]
2013-03-14 12:15
gikieng
Rank: 2
等 级:论坛游民
帖 子:19
专家分:14
注 册:2013-3-7
收藏
得分:0 
回复 2楼 azzbcc
谢了。。。

来的是新手,请多多包涵。。。
2013-03-14 13:50
忧伤的小王子
Rank: 2
等 级:论坛游民
帖 子:26
专家分:43
注 册:2012-9-12
收藏
得分:0 
路过……

我是一只不愿早起的菜鸟,我怕被虫吃……唯愿有一天化小虾一条!
2013-03-14 14:48
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:0 
#include<stdio.h>
void add(char add1[],char add2[] )
{
    char c[2000]={0},a[2000]={0},b[2000]={0},t;
    int len1,len2,k,i,j;
    for(j=0;add1[j]!='\0';j++) a[j]=add1[j]-'0';
    i=0;len1=j;j--;
    while(i<j)
      {
        t=a[i];a[i]=a[j];a[j]=t;i++;j--;
      }
    for(j=0;add2[j]!='\0';j++) b[j]=add2[j]-'0';
    i=0;len2=j;j--;
    while(i<j)
      {
        t=b[i];b[i]=b[j];b[j]=t;i++;j--;
       }
    k=len1>len2?len1:len2;
    for(i=0;i<k;i++)
      {c[i]+=a[i]+b[i];
       if(c[i]>9)
          {c[i+1]++;
           c[i]-=10;}
       c[i]=c[i]+'0';
       }
    if(c[k]==0)
       j=k-1;
    else
       {j=k;c[k]=c[k]+'0';}
    i=0;
    while(i<j)
      {
        t=c[i];c[i]=c[j];c[j]=t;
        i++;j--;
      }
    printf("%s\n",c);

}

main()
{
    char num1[1000],num2[1000];
    scanf("%s%s",&num1,&num2);
    add(num1,num2);
}
这个可以计算
2013-03-28 22:03
快速回复:调了无数次了,还是不明白哪错了
数据加载中...
 
   



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

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