学过编程的我们都知道,编写一个long long类型范围内的加法计算器很简单,但加数的范围超过了long long的范围,这时我们该怎么办呢?
表示多个数的数据类型在c语言里有数组和字符串,这个时候我们可以用数组或字符串来储存这个范围非常大的数据,用数组模拟小学学过的竖式计算,从低位开始相加,产生进位,保留个位。
这里注意,我们要想用数组模拟数学的竖式计算,但他们还是有些许的不同。因为如果两个加数的位数不一样,两个模拟加数的数组他们的下标是对不齐的,这个时候进行逆序处理会比较好。(文字描述还是有点抽象,下面用图说明问题)
图片来源
CSDN博主「zimegll」
原文链接:https://blog.csdn.net/qq_40790042/article/details/119846094
数学的竖式加法计算
数组模拟竖式计算
逆序之前
逆序之后(方便进行各位相加)
但是数组和字符串各有优缺点。
数组:每个数组元素储存一位数,数组的优点是可以直接进行加减计算,而缺点却是无法直接输入,每位数之间需要有分隔符,这不符合数值输入的习惯。
字符串:字符串的优点便是可以直接输入,符合数值输入的习惯,但是它每一个元素储存的是一个字符而不是数字,不可以直接进行运算。
所以两者结合,用字符串输入,用数组进行运算输出。
下面来看代码如何实现。
#include#include #define MAX 66 int main() { char str[MAX]; int arr1[MAX]={0},arr2[MAX]={0},temp,temp1,temp2,i,j; scanf("%s",str); temp1=strlen(str);//计算str的长度 for(i=0;i temp2)?temp1:temp2; for(i=0;i



