实现两个超大无符号整数的加法
来源:互联网 发布:软件平台使用协议 编辑:程序博客网 时间:2024/05/13 22:01
实现两个超大无符号整数的加法(现有基本数据类型无法存储)
#include <stdio.h>#include <string.h>#include <stdlib.h>int AddBigNum ( const char *pA, const char *pB, char *pSum, int nSumMaxLen);int main ( int argc, char **argv ){int len;char str[1000];char str1[1000];char str2[1000];scanf("%s",str);scanf("%s",str1);len = AddBigNum ( str, str1, str2, 0);if( str2[ 0 ] == '0'){for ( int i = 1; i < len ; i++){printf("%c", str2[ i ]);}}else {for ( int i = 0; i < len; i++){printf("%c", str2[i]);}}putchar ( 10 );}int AddBigNum ( const char *pA, const char *pB, char *pSum, int nSumMaxLen){int len_a = strlen ( pA );//计算字符串A长度int len_b = strlen ( pB );//计算字符串B长度const char *max;const char *min;int len_max = (len_a -len_b >= 0) ? len_a : len_b;//把字符串长的给len_maxint len_min = (len_a - len_b < 0) ? len_a : len_b;//把字符串短的给len_minmax = (len_a - len_b >= 0) ? pA : pB;//把字符串长的给maxmin = (len_a - len_b < 0) ? pA : pB;//把字符串短的给minnSumMaxLen = len_max + 1;//和的长度加1 进位pSum[ 0 ] = '0';//和的最高位给0for( int i = 0; i < len_max - len_min; ++i){pSum[ i + 1 ] = max[ i ];//字符串长的前len_max-len_min 字符给到pSum}for( int i = len_max - len_min; i < len_max; ++i){if( pA[ i ] + pB[ i - len_max + len_min ] - '0' > '9' )//判断有无进位{pSum[ i + 1 ] = max[ i ] + min[ i - len_a + len_b] - '0' - 10;//本位减10int j = i ;while ( (pSum[ j ] = pSum[ j ] + 1) > '9' )//进位加1 判断是否还需要进位{pSum[ j ] = pSum[ j ] - 10;j-- ;}}else{pSum[ i + 1 ] = max[ i ] + min[ i - len_a + len_b ] - '0';//不需要进位}}return nSumMaxLen;}
0 0
- 实现两个超大无符号整数的加法
- LeetCode 两个整数的加法运算,不使用+符号
- 实现任意两个整数的加法
- 再回首-无符号大整数加法
- 超大整数加法
- 超大整数加法模板
- 两个超大整数相加之数组实现
- 实现超大整数(超过long长度范围)的加法运算
- 实现超大整数的方法
- 栈实现计算器四则运算+一个任意两个超大位数加法
- 字符数组实现两个大整数的加法
- 用位运算实现两个整数的加法运算
- 位运算实现两个整数的加法运算
- 面试题~位运算实现两个整数的加法
- 利用位运算实现两个整数的加法运算
- VC++ 利用位运算实现两个整数的加法运算
- 利用位运算实现两个整数的加法运算
- 小测试Extra:实现两个百位整数的加法练习
- 黑马程序员-oc中分类的使用
- 异步上传,兼容性IE6到10,FF,GOOGLE
- windows下安装redis
- NSPredicate
- wamp升级php5.3.3到5.4.36版本
- 实现两个超大无符号整数的加法
- iOS 之位置信息管理
- C#实现AES加解密方法
- java实现类linux shell效果
- 黑马程序员-oc中内存管理的相关知识
- Android-完全退出当前应用程序的四种方法
- iOS--二维码(libqrencode、ZBarSDK)
- 内核模块 Makefile
- 用vim的查找和替换功能删除行末的空格