| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6815 人关注过本帖
标题:求两个字符串相加后的模样
取消只看楼主 加入收藏
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
求两个字符串相加后的模样
将两个字符串相加,并考虑其的正负和进位情况。
如 输入 1 9999
   输出 10000
 若输入 12345  3456678888
   输出 3456691233
 若输入 -123 23
   输出 -100
 若输入 -123 -77
   输出  -200
求大神回帖
搜索更多相关主题的帖子: 字符串 
2017-01-09 20:25
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
回复 2楼 九转星河
字符串长度没有限制。
2017-01-09 20:36
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

 这个还是有些问题!!!
  求大神在看一下,能否在完全一些
2017-01-10 14:16
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
自己和同学研究的一个题目,问过老师了,老师给的答案只是无符号加减!!!
  所以在论坛找大神解决了

[此贴子已经被作者于2017-1-10 15:05编辑过]

2017-01-10 15:03
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
#include "stdio.h"
#include "string.h"
void fun1(char *s1,char *s2,char *sum)
 { char ch;
     int i,j,t;
     for(i=0;i<100;i++)
       sum[i]='0';
     i=strlen(s1)-1;
     j=strlen(s2)-1;
     if(i>j) t=i;
     else t=j;
     sum[t+2]='\0';
     for(t++;i>=0&&j>=0;i--,j--)
      { ch=s1[i]+s2[j]-'0'-'0';
          if(ch+sum[t]<=57)
            sum[t--]=sum[t]+ch;
          else
          { sum[t-1]='1';
                 sum[t]=sum[t]+ch-10;
                 t-=1;
          }
      }
      if(i>0)
       for(;i>=0;i--)
         { if(sum[t]+s1[i]-'0'<='9')
              sum[t--]=sum[t]+s1[i]-'0';
           else
             { sum[t-1]='1';
                 sum[t--]=sum[t]+s1[i]-'0'-10;
             }
         }
       else
        for(;j>=0;j--)
         { if(sum[t]+s2[j]-'0'<='9')
              sum[t--]=sum[t]+s2[j]-'0';
           else
             { sum[t-1]='1';
                 sum[t--]=sum[t]+s2[j]-'0'-10;
             }
         }      
 }

void main()
{  
   char s1[100],s2[100],sum[120]="0";
   int i,j;
   printf(" input s1:");
   gets(s1);
   printf(" input s2:");
   gets(s2);
   if(s1[0]!='-'&&s2[0]!='-')
    {  fun1(s1,s2,sum);
       printf(" output sum:");
       if(sum[0]!='0')
       puts(sum);
       else puts(sum+1);
    }
   else if(s1[0]=='-'&&s2[0]=='-')
       {  fun1(s1+1,s2+1,sum+1);
             sum[0]='-';
             printf(" output sum:");
             if(sum[1]!='0')
               puts(sum);
             else
              { sum[1]='-';
                   puts(sum+1);
              }
       }
}


这个程序只能完成同号相加
2017-01-10 20:09
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
#include "stdio.h"
 #include "string.h"
 void fun1(char *s1,char *s2,char *sum)
  { char ch;
      int i,j,t;
      for(i=0;i<100;i++)
        sum[i]='0';
      i=strlen(s1)-1;
      j=strlen(s2)-1;
      if(i>j) t=i;
      else t=j;
      sum[t+2]='\0';
      for(t++;i>=0&&j>=0;i--,j--)
       { ch=s1[i]+s2[j]-'0'-'0';
           if(ch+sum[t]<=57)
             sum[t--]=sum[t]+ch;
           else
          { sum[t-1]='1';
                  sum[t]=sum[t]+ch-10;
                  t-=1;
           }
       }
       if(i>=0)     // 改为 if(i>=0)  原来的 if(i>0) 没有考虑到高一位的问题
       for(;i>=0;i--)
          { if(sum[t]+s1[i]-'0'<='9')
               sum[t--]=sum[t]+s1[i]-'0';
            else
             { sum[t-1]='1';
                  sum[t--]=sum[t]+s1[i]-'0'-10;
              }
          }
        else
        for(;j>=0;j--)
          { if(sum[t]+s2[j]-'0'<='9')
               sum[t--]=sum[t]+s2[j]-'0';
            else
             { sum[t-1]='1';
                  sum[t--]=sum[t]+s2[j]-'0'-10;
              }
          }      
 }
 
void main()
 {  
    char s1[100],s2[100],sum[120]="0";
    int i,j;
    printf(" input s1:");
    gets(s1);
   printf(" input s2:");
    gets(s2);
    if(s1[0]!='-'&&s2[0]!='-')
     {  fun1(s1,s2,sum);
        printf(" output sum:");
        if(sum[0]!='0')
        puts(sum);
        else puts(sum+1);
     }
    else if(s1[0]=='-'&&s2[0]=='-')
        {  fun1(s1+1,s2+1,sum+1);
              sum[0]='-';
              printf(" output sum:");
              if(sum[1]!='0')
                puts(sum);
              else
              { sum[1]='-';
                    puts(sum+1);
               }
        }
 }
2017-01-10 21:19
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-01-16 11:52
快速回复:求两个字符串相加后的模样
数据加载中...
 
   



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

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