第3章 编程问题 3.2节 4
来源:互联网 发布:数据etl工具 编辑:程序博客网 时间:2024/06/09 15:59
编写一个程序来实现两个最大为300位的大整数的加法。一种方法是将每个数看作是一个列表,这个列表的每个元素是这个数的一个数字块。例如,整数179,534,672,198可以被存储为block[0]=198,block[1]=672,block[2]=534,block[3]=179。然后将这个整数(列表)逐个元素的进行相加,在需要时从一个元素向下一个元素进位。
C++实现:
#include <iostream>#include <climits>using namespace std;#define BLOCK 8 //数组中每个元素存储的数字的位数void sum(const unsigned* const a, const unsigned* const b, unsigned *result);void display(const unsigned* const array);void main() { unsigned a[40] = { 95765432, 34532189, 99903999 }; unsigned b[40] = { 34767891, 78653912, 88760033 }; unsigned result[10] = { 0 }; sum(a, b, result); display(result); //输出计算结果 system("pause");}/*----------------------------------------数组a里的数和数组b里的数相加,结果保存到数组result中去。数组a和数组b的最后一个元素是0,作为数组的结束标志。初始时result中的元素应全部为0const unsigned* const a:指针a指向的值不可改变,且指针a本身的值也不可改变------------------------------------------*/void sum(const unsigned* const a, const unsigned* const b, unsigned *result) { unsigned carry = 0;//保存进位 int i = 0, j = 0, k = 0; while (a[i] && b[j]) {//当数组a和数组b的当前元素都不为0的时候,执行循环体 unsigned temp = (a[i] + b[j]); //临时变量存储a和b对应元素相加的和 result[k] = carry + temp % (int)pow(10, BLOCK); carry = temp / (int)pow(10, BLOCK); i++; j++; k++; } result[k] = carry; while (a[i] != 0) { result[k] = result[k] + a[i]; k++; i++; } while (b[j] != 0) { result[k] = result[k] + b[j]; k++; j++; }}/*------------------------------------从数组的最后一个正整数开始,依次向前输出数组中元素的值--------------------------------------*/void display(const unsigned* const array) { int i = 0; while (array[i]) { i++; } i--; while (i >= 0) { cout << array[i--] << " "; }}
程序中给出的两个数的运算结果是:
阅读全文
0 0
- 第3章 编程问题 3.2节 4
- 第3章 编程问题 3.2节 3
- 第3章 编程问题 3.2节 1
- 第3章 编程问题 3.2节 2
- 第2章 编程问题 2.2节 3
- 第3章 编程问题 3.3节 9
- 第2章 编程问题 2.2节 1
- 编程珠玑--第12章 取样问题
- 《编程珠玑》第12章:取样问题
- unix网络编程-第3,4章套接字编程
- unix网络编程-第3,4章套接字编程
- 数据库编程第4章
- 数据库编程第3章
- 第3章:RDD编程
- 第3章 IAR编程
- 【C++语言99个常见编程错误】第4章 类型转换问题
- 【C++语言99个常见编程错误】第3章 预处理器问题
- 编程珠玑第12章(取样问题)学习笔记
- android surface
- 1.遇到的问题
- HDU3427-Clickomania
- swing 之FlowLayout 实现自动换行和滚动条添加
- AI和机器学习发展历程
- 第3章 编程问题 3.2节 4
- POJ 1285 Combinations, Once Again 笔记
- Hibernate setParameter绑定参数报错
- 多线程(下)
- #游戏unity-音之国度#实现语音控制
- poj1226(哈希)
- Python中的http通讯
- TCP/IP基础知识
- 命令模式--软件设计模式