解题思路:

            

                因为一半的类型长度已经不够题目要求了,所以我们要使用字符串来考虑:

首先把两个数分别读入两个字符串(str1,str2);接着把这两个字符串反序放到整型数组中(注意减'0');

然后对应相加,这里要注意进位,并且进位最大为1不可能超过1(9+9=18);和我们小学普通加法一样,置不过位数有点多让计算机来计算而已;


                11233 + 2356  =  ?

                    

                1 1 2 3 3

                   2 3 5 6

            ---------------

                1 3 5 8 9


注意是重后向前加的。

注意事项:

参考代码:

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
int a[1001], b[1001], c[1001];
char str1[1001], str2[1001];
int main()
{
	int len_str1, len_str2, len_max, k = 0;
	scanf("%s%s", str1, str2);
	len_str1 = strlen(str1);
	for(int i = 0, j = len_str1 - 1; j >= 0; ++i, --j)
	{
		a[i] = str1[j] -'0';
	}
	len_str2 = strlen(str2);
	for(int i = 0, j = len_str2 - 1; j >= 0; ++i, --j)
	{
		b[i] = str2[j] -'0';
	}
	len_max = len_str1 > len_str2 ? len_str1 : len_str2;
	for(int i = 0; i < len_max; ++i)
	{
		c[i] = (a[i]+b[i]+k)%10;
		k = (a[i]+b[i]+k)/10;
	}
	if(k)
	{
		c[len_max] = 1;
		printf("%d",1);
	}
	for(int i=len_max-1;i>=0;--i)
	{
		printf("%d",c[i]);
	}
	printf("\n");
	return 0;
}


点赞(1)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论