解题思路:用字符数组储存两个加数,从个位开始,进行相加,结果存放另一个数组里,(顺便考虑是否进位)

        

注意事项:  在下的方法  要注意 每次输入数据时,要进行清空数组和进位标志count赋值0;
          
           要考虑两个加数长度是否相等,以及最高位是否进位

参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
	char str1[1100], str2[1100];                          //定义两个字符串,表示两个加数
	int i, L1, L2, count = 0,num[1100] = { 0 };
	while (scanf("%s %s", str1, str2) != EOF)               //输入两个字符串
	{
		count = 0;                                     //count表示进位,每次输入赋值为0
		memset(num, 0, sizeof(num));               // 数组num 代表 和 的即结果,每次清空数组
		L1 = strlen(str1);                           //L1表示第一个加数的长度
		L2 = strlen(str2);                            //L2表示第二个加数的长度
		for (i = 1005; L1 > 0 || L2 > 0; i--)          //为了防止加数 位数过多,i从1005开始
		{
			if (L1 > 0 && L2 > 0)                  //当相同位 上都有数字时,进行相加
			{
				num[i] = str1[L1 - 1] + str2[L2 - 1] + count - 2 * '0';
				L1--;
				L2--;
			}
			else                                //当某一个数字的已经计算到最高位时,进行赋值
			{
				if (L1 > 0 && !L2)           //当第二个数字已经计算到最高位时
				{
					num[i] = str1[L1 - 1] + count - '0';
					L1--;
				}
				else if (!L1&&L2 > 0)          //当第一个数字已经计算到最高位时
				{
					num[i] = str2[L2 - 1] + count - '0';
					L2--;
				}
			}
			if (num[i] > 9)                   //当前位的和 超过10 ,进位!
			{
				num[i] -= 10;
				count = 1;
			}
			else                           //当前位的和 不超过10 , 不进位!
				count = 0;

		}

		if (count == 1)                      //这一步的if else 语句, 是为了计算 :
		{                                    // 如果两个加数长度相等,最高位是否进位
			num[i] = 1;
			for (; i <= 1005; i++)
				printf("%d", num[i]);       //输出结果
		}
		else                                
		{
			for (i++; i <= 1005; i++)         //如果两个加数长度不等,或者长度相等最高位不存在进位
				printf("%d", num[i]);         //   输出结果
		}
		printf("\n");
	}
	return 0;

}


点赞(1)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 1 条评论

正弦 6年前 回复TA
欢迎大神指教 ~不要吝啬小心心