Chinaunix首页 | 论坛 | 博客
  • 博客访问: 478747
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1190
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 20:16
文章分类

全部博文(144)

文章存档

2017年(1)

2015年(5)

2014年(108)

2013年(30)

我的朋友

分类: C/C++

2014-07-13 16:52:59


点击(此处)折叠或打开

  1. #include "stdio.h"
  2. #include <string.h>
  3. int main()
  4. {
  5.     int i;
  6.     int len1,len2,len,len3;
  7.     int tmp1,tmp2=0;//tmp2表示进位
  8.     char str1[128],str2[128];
  9.     char str3[129];


  10. scanf("%s %s",str1,str2);
  11. len1=strlen(str1);
  12. len2=strlen(str2);
  13. printf("%s %s",str1,str2);

  14. if(len1>len2)
  15. {

  16.     len=len2;
  17.     for(i=len-1;i>=0;i--)
  18.     {
  19.         if((str1[i+len1-len2]-'0'+str2[i]-'0')>9)//超过十则进位
  20.         {
  21.             tmp1=(str1[i+len1-len2]-'0'+str2[i]-'0'+tmp2)%10;//把字符转换为整型计算
  22.             tmp2=1;//超过十则进位

  23.             str3[i+len1-len2]=tmp1+'0';//转换为字符型
  24.         }
  25.         else
  26.         {
  27.             tmp1=(str1[i+len1-len2]-'0'+str2[i]-'0'+tmp2)%10;
  28.             tmp2=0;
  29.             str3[i+len1-len2]=tmp1+'0';
  30.         }
  31.     }
  32.     for(i=len1-len2-1;i>=0;i--)
  33.     {
  34.         if(tmp2==1)
  35.         {
  36.             str3[i]=str1[i]+1;
  37.             tmp2=0;
  38.         }
  39.         
  40.         else
  41.             str3[i]=str1[i];
  42.     }
  43.         str3[len1]='\0';
  44. }
  45. else
  46. {
  47.     len=len1;
  48.     for(i=len-1;i>=0;i--)
  49.     {
  50.         if((str1[i]-'0'+str2[i-len1+len2]-'0')>9)//超过十则进位
  51.         {
  52.             tmp1=(str1[i]-'0'+str2[i-len1+len2]-'0'+tmp2)%10;
  53.             tmp2=1;//超过十则进位

  54.             str3[i-len1+len2]=tmp1+'0';
  55.         }
  56.         else
  57.         {
  58.             tmp1=(str1[i]-'0'+str2[i-len1+len2]-'0'+tmp2)%10;
  59.             tmp2=0;
  60.             str3[i-len1+len2]=tmp1+'0';
  61.         }
  62.     }
  63.     for(i=len2-len1-1;i>=0;i--)
  64.     {
  65.         if(tmp2==1)
  66.             {            str3[i]=str2[i]+1;
  67.         tmp2=0;
  68.         }
  69.         else
  70.             str3[i]=str2[i];
  71.     }
  72.     str3[len2]='\0';
  73. }
  74. len3=strlen(str3);//处理最后一位,如果最后有进位则把所有位后移,第一位置为1
  75. if(tmp2==1)
  76. {
  77.     for(i=len3;i>0;i--)
  78.         str3[i]=str3[i-1];

  79. str3[0]='1';
  80. str3[len3+1]='\0';
  81. }
  82. printf("\n%s",str3);
  83.      return 0;
  84. }


阅读(767) | 评论(0) | 转发(0) |
0

上一篇:堆和栈

下一篇:经典嵌入式面试题

给主人留下些什么吧!~~