100000575 《算法笔记》3.1小节 简单模拟 问题 B: A+B

题目描述

给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。

输入

输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

输出

请计算A+B的结果,并以正常形式输出,每组数据占一行。

样例输入

-234,567,890 123,456,789
1,234 2,345,678

样例输出

-111111101
2346912

源代码

 

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

int main(){
    long long a,b,sum = 0;
    char str1[20],str2[20];
    int len1,len2;

    while(scanf("%s %s",&str1,&str2) != EOF){

        a = 0;
        b = 0;

        len1 = strlen(str1);
        len2 = strlen(str2);

        for(int i = 0;i < len1;i ++){
            if(str1[i] >= '0' && str1[i] <= '9'){
                a = a*10 + str1[i] - '0';
            }
        }
        if(str1[0] == '-'){
            a = - a;
        }

        for(int i = 0;i < len2;i ++){
            if(str2[i] >= '0' && str2[i] <= '9'){
                b = b*10 + str2[i] - '0';
            }
        }
        if(str2[0] == '-'){
            b = - b;
        }

        sum = a + b;

        printf("%d\n",sum);
    }
    return 0;
}

 

做题思路

1、明确输入何时停止

      while循环条件是没有输入(即输入结束时)。

2、解决有符号输入

      判断输入字符串数组的第一个字符是不是’ - ‘,如果是,就为负的。

3、得到A和B的数值

      for循环找到字符串中的数字,再计算出A和B

4、得到A+B的值

      sum = A + B; 

 

总结

       一开始,不明白如何输入,可以方便进行计算。还用了string类型,将其看成数组,然而运行还是不正确的。最后,看了别人写的代码,发现一开始定义数组类型,然后再以字符串输入,就可以达成输入的目的了。

       在计算a和b的时候,用了比较巧妙的方法:就是在数组中从头至尾的查找,找到为数字的那几项,然后×10就可以得到A和B的值。在题目中的 “ 从个位开始,每三位数用逗号 ‘ , ’ 隔开 ”,就是一个干扰的条件,完全没有必要去想这个条件。在之前的解题思考的时候,我就掉到这个陷阱中了,一直在思考逗号这个条件如何去使用,还想着可以利用逗号的条件就可以得知每位×10的个数,但是这个太复杂,所以在解题思路方面还需要在磨练。

       之后要做的事情就是将两数相加就可以了。

       纵观全局,就是在输入和得到A和B数值的地方比较难,希望在做过一些题之后,可以找到做题的灵感和思路。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值