C++大数加法-----OvO

简单大数加法

可以将加数存放在数组中,按位让数组元素相加,对结果进行进位操作,最后进过转换(消0、逆序)输出结果*

↓↓↓代码↓↓↓

#define _CRT_SECURE_NO_WARNINGS//避免scanf报错

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

char X[2000], Y[2000];
int a[2000], b[2000], s[2000];

int main()
{
	int i, k, n, m;
	while (scanf("%s %s", X, Y))
	{
		n = strlen(X);//求数组长度
		m = strlen(Y);
		for (i = 0; i < n; i++)
			a[i] = X[n - i - 1] - '0';//逆序,并使ascii码值小于10
		for (i = 0; i < m; i++)
			b[i] = Y[m - i - 1] - '0';//逆序,并使ascii码值小于10
		k = (m > n) ? m : n;//比较两加数的长短,并将长度(最长的)赋给k
		memset(s, 0, sizeof(s));//将s数组中的所有元素置零
		for (i = 0; i <= k; i++)
		{
			s[i] += a[i] + b[i];//从最低位开始相加
			if (s[i] > 9)//进位操作
			{
				s[i + 1]++;
				s[i] %= 10;
			}
		}
		while (s[k] == 0 && k > 0) k--;//将数组高位上的0消去
		for (i = k; i >= 0; i--)//逆序输出数组元素
			printf("%d", s[i]);
		printf("\n\n");
	}
	return 0;
}

↓↓↓演示↓↓↓
演示

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值