楠木青花 发表于 2016-11-29 23:26:25

实现一个加法器,使其能够输出a+b的值。

题目描述:
实现一个加法器,使其能够输出a+b的值。

输入:
输入包括两个数a和b,其中a和b的位数不超过1000位。

输出:
可能有多组测试数据,对于每组数据,
输出a+b的值。

样例输入:
2 6
10000000000000000000 10000000000000000000000000000000
样例输出:
8
10000000000010000000000000000000

这个题是什么意思 不懂
大神们帮帮我{:10_266:}

DarkSE 发表于 2016-11-30 11:00:04

不是2+6 = 8
10000000000000000000+10000000000000000000000000000000 = 10000000000010000000000000000000吗?
主要考虑的是溢出的问题,因为你如果用int型来存储第二个数的话就会溢出了{:10_266:}

致年轻的我们 发表于 2016-11-30 12:03:56

基本满足需求{:10_266:}
#include <stdio.h>

int main()
{
        int a,b;
        while(1)
        {
                scanf("%d %d",&a,&b);
                printf("%d ",a+b);
        }
        return 0;
}

楠木青花 发表于 2016-11-30 12:57:18

DarkSE 发表于 2016-11-30 11:00
不是2+6 = 8
10000000000000000000+10000000000000000000000000000000 = 100000000000100000000000000000 ...

那用什么 ?double?{:10_266:}

楠木青花 发表于 2016-11-30 12:58:00

致年轻的我们 发表于 2016-11-30 12:03
基本满足需求

{:10_247:}

DarkSE 发表于 2016-11-30 22:44:12

楠木青花 发表于 2016-11-30 12:57
那用什么 ?double?

double的最大值和最小值分别为1.79769e+308(10^308),2.22507e-308(10^-308),网上查的也不知道对不对,10^308次方也不够一千位啊
我写了一部分简略的你看一下
int main()
{
        int a;
        int temp;
        int num = 0;
        temp = getch();
        while( (temp-48) >=0 && (temp-48)<=9 )
        {
                a = temp - 48;
                num++;
                temp = getch();
        }
        cout<<endl;
        for(int i=0;i<num;i++)
        {
                cout<<a;
        }
        cout<<endl;
        return 0;
}
页: [1]
查看完整版本: 实现一个加法器,使其能够输出a+b的值。