每天打卡一小时 第二十天 承接十九天
这段代码实现了两个大数相加的功能,其中BigNum是一个自定义的大数类,它的数据成员num是一个字符数组,用于存储大数。下面是对代码的解释:
1.首先判断两个大数的符号,如果一个为正数,另一个为负数,则通过转换为减法的方式实现加法。
2.定义一个新的BigNum对象s,用于存储相加后的结果;另外定义一个字符数组s2,用于存储被加数num的副本a.num。
3.获取num和a.num的长度,将长度较短的一方在末尾补零,使它们的长度一致。
4.根据两个大数的符号来判断相加的结果的符号,并从1开始遍历两个大数的每一位。将每一位的数值相加,如果和大于等于10,则将进位的1加到后一位,并将相加的结果减去10;否则直接将相加的结果存入结果BigNum对象s的对应位。
5.将BigNum对象s的num最后一位赋为'\0',并根据两个大数的符号来确定BigNum对象s的符号。
6.将结果BigNum对象s返回。
这段代码实现了两个大数相减的功能,其中BigNum是一个自定义的大数类,它的数据成员num是一个字符数组,用于存储大数。下面是对代码的解释:
1.首先判断被减数和减数的符号,如果一个为正数,另一个为负数,则通过转换为加法的方式实现减法。
2.定义一个新的BigNum对象s,用于存储相减后的结果;另外定义一个字符数组s2,用于存储减数b.num的副本。
3.获取被减数num和减数b.num的长度,将长度较短的一方在末尾补零,使它们的长度一致。
4.根据被减数num和减数b.num的符号来判断相减的结果的符号,并从最高位开始遍历两个大数的每一位,将减数b.num的每一位从被减数num的相应位上减去,若被减数的这一位不够减,则向高位借位,否则直接将被减数的这一位减去减数的这一位,并将相减的结果存入结果BigNum对象s的对应位。
5.将BigNum对象s的num最后一位赋为'\0',并根据两个大数的符号来确定BigNum对象s的符号。
6.将结果BigNum对象s返回。