| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 328 人关注过本帖
标题:请各位大神,大牛看看。帮我解下疑,谢谢了。
取消只看楼主 加入收藏
王捉熊
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2012-10-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
请各位大神,大牛看看。帮我解下疑,谢谢了。
一下为求两个20~30位数相加的程序,请各位大神指点,我哪错了,谢谢。

#include <stdio.h>
#include <string.h>
void main()
{
char a[30],b[30],c[30];
int i,n,m,temp;
printf("please\n");
gets(a);
gets(b);
n=strlen(a);
m=strlen(b);
if(n>m)                     //a,b数组哪个元素多,输出数组就与哪个数组元素个数相同。
{
for (i=0;i<n;i++)     //将数组中的数进行倒置,即高位放在后面,低位在前面,以便相加。
c[i]=a[n-i-1];
for (temp=0,i=0;i<n;i++)   //将各个位上的数进行相加
{
c[i]+=b[i]+temp;
temp=0;
if(c[i]>9)
{                   //若大于十,前一位就加1
c[i]=c[i]-10;
temp=1;
}
}
for (i=--n;i>=0;i--)        //对数进行输出,高位在前,低位在后。
printf("%d",c[i]);
printf("\n");
}
  else
{
for (i=0;i<m;i++)         //将数组中的数进行倒置,即高位放在后面,低位在前面,以便相加。
c[i]=b[m-i-1];
for (temp=0,i=0;i<m;i++)//将各个位上的数进行相加
{
c[i]+=a[i]+temp;
temp=0;
if(c[i]>9)
{                     //将各个位上的数进行相加
c[i]=c[i]-10;
temp=1;
}
}
for (i=--m;i>=0;i--) //对数进行输出,高位在前,低位在后。
printf("%d",c[i]);
printf("\n");
}

}
搜索更多相关主题的帖子: please include 元素 
2012-12-09 11:11
王捉熊
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2012-10-23
收藏
得分:0 
哈哈,感谢大家,在大家的启发下,我完成了,不过有点凌乱。下面是我改写之后的程序。
此程序位计算两个长整数。
#include <stdio.h>
#include <string.h>
void main()
{
  char a[10000000],b[10000000],c[10000000];
   int i,n,m,temp;
   printf("please\n");
   gets(a);
   gets(b);
   n=strlen(a);
   m=strlen(b);
   if(n>m)                 
{
   for (i=0;i<n;i++)   
      c[i]=a[n-i-1];
   for (i=0;i<m/2;i++)
       { temp=b[i];
         b[i]=b[m-i-1];
         b[m-i-1]=temp;
        }
   for (temp=0,i=0;i<n;i++)   //将各个位上的数进行相加
      {
        if (i<m)
        c[i]=c[i]-48+b[i]-48+temp;
        else c[i]+=temp-48;
        temp=0;
        if(c[i]>9)
        {                   //若大于十,前一位就加1
           c[i]=c[i]-10;
            temp=1;
        }              
}         
   for (i=--n;i>=0;i--)        //对数进行输出,高位在前,低位在后。
     printf("%d",c[i]);
   printf("\n");
}
  else      
{
    for (i=0;i<m;i++)         
    c[i]=b[m-i-1];
    for (i=0;i<n/2;i++)
    {temp=a[i];
     a[i]=a[n-i-1];
     a[n-i-1]=temp;
    }            
    for (temp=0,i=0;i<m;i++)//将各个位上的数进行相加
    {if(i<n)
     c[i]=c[i]-48+a[i]-48+temp;
    else c[i]+=temp-48;
     temp=0;
      if(c[i]>9)
      {                   //将各个位上的数进行相加
        c[i]=c[i]-10;
         temp=1;
      }
 }
               
    for (i=--m;i>=0;i--) //对数进行输出,高位在前,低位在后。
         printf("%d",c[i]);
    printf("\n");
             }
}

新手上路,说错请勿见怪!
2012-12-10 18:32
快速回复:请各位大神,大牛看看。帮我解下疑,谢谢了。
数据加载中...
 
   



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

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