ACM程序设计书中题目--N(数字反转)

题目简述:给两个数字,先反转,求和,再翻转。

解题思路:

1、数字反转首先想到的是就是一位一位的计算。即求余与求和。

2、利用结构体对过程中的数据进行储存。

3、结构体内定义a,c,sum。c用来储存每个数字的最后一位,即逐步取余得到的数字,sum用来计算数字反转后的和。

4、对反转过后的数字进行求和。

5、和上面思路一样,再按位进行反转,输出反转过后的数字。

源代码:

#include <bits/stdc++.h>
using namespace std;
struct abc
{
    int a,c,sum;
}e[2];
int main()
{
    int n,i;
    cin>>n;
    for (i=0;i<n;i++)
    {
        cin>>e[0].a>>e[1].a;
        e[0].sum=0;
        e[1].sum=0;
        int add,adc,sum1=0;
        while (e[0].a)
        {
            e[0].c=e[0].a%10;
            e[0].sum=e[0].sum*10+e[0].c;
            e[0].a=e[0].a/10;
        }
        while (e[1].a)
        {
            e[1].c=e[1].a%10;
            e[1].sum=e[1].sum*10+e[1].c;
            e[1].a=e[1].a/10;
        }
        add=e[0].sum+e[1].sum;
        while (add)
        {
            adc=add%10;
            sum1=sum1*10+adc;
            add=add/10;
        }
        cout<<sum1<<endl;
    }
    return 0;
}
解题感想:本来考虑是否要考虑0的问题,因为反转过后求和的过程中0*10=0,所以又考虑到可以先*10再加上余数。这个题目看起来不难,缕清思路用差不多的思路就可以解答。觉得用的时间还不算多,感觉还是不错的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值