IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 018:别叫,这个大整数已经很简化了 -> 正文阅读

[C++知识库]018:别叫,这个大整数已经很简化了

北大mooc,程序设计与算法(三)

题目

018:别叫,这个大整数已经很简化了!

程序填空,输出指定结果

#include <iostream> 
#include <cstring> 
#include <cstdlib> 
#include <cstdio> 
using namespace std;
const int MAX = 110; 
class CHugeInt {
// 在此处补充你的代码
};
int  main() 
{ 
	char s[210];
	int n;

	while (cin >> s >> n) {
		CHugeInt a(s);
		CHugeInt b(n);

		cout << a + b << endl;
		cout << n + a << endl;
		cout << a + n << endl;
		b += n;
		cout  << ++ b << endl;
		cout << b++ << endl;
		cout << b << endl;
	}
	return 0;
}

输入
多组数据,每组数据是两个非负整数s和 n。s最多可能200位, n用int能表示
输出
对每组数据,输出6行,内容分别是:

样例输入
99999999999999999999999999888888888888888812345678901234567789 12
6 6
样例输出
99999999999999999999999999888888888888888812345678901234567801
99999999999999999999999999888888888888888812345678901234567801
99999999999999999999999999888888888888888812345678901234567801
25
25
26
12
12
12
13
13
14

自己代码

大数加法,重载运算符

#include <iostream> 
#include <cstring> 
#include <cstdlib> 
#include <cstdio> 
using namespace std;
const int MAX = 110; 
class CHugeInt {
	private:
		char s[210];
		int v;
		
	public:
		CHugeInt(char c[]):v(0)
		{
			strcpy(s,c);
		}
		
		CHugeInt(int v_):v(v_)
		{
			memset(s, 0, sizeof(s));
		}
		
		char * Hugejia(char * a, char * b)	//大数相加
		{
			int c1[210];
			int c2[210];
			memset(c1, 0, sizeof(c1));
			memset(c2, 0, sizeof(c2));
			int len_a = strlen(a);
			int len_b = strlen(b);
			int max_l = len_a;
			if(len_b > len_a)
				max_l = len_b;
			
			for(int i = 0; i < len_a; ++i)	//倒过来相加
				c1[i] = a[len_a-i-1] - '0';
			for(int i = 0; i < len_b; ++i)
				c2[i] = b[len_b-i-1] - '0';
			
			for(int i = 0; i <= max_l; ++i)
			{
				c1[i] += c2[i];
				if(c1[i] > 9)	//进位
				{
					c1[i] -= 10;
					++c1[i+1];
				}
			}
			
			if(c1[max_l] != 0)
				++max_l;
			
			for(int i = 0; i <max_l; ++i)
				b[i] = c1[max_l-i-1] + '0';	//再倒回来
			b[max_l] = '\0';	
			return b;
		}
		
		char * operator+ (CHugeInt & d)	//a + b
		{
			static char c[210];	//因为需要返回字符串,不加static函数结束之后字符串就没了
			memset(c, 0, sizeof(c));
			sprintf(c, "%d", d.v);
			return this -> Hugejia(s, c);
		}
		
		friend char * operator+ (int n, CHugeInt & d)	//n + a
		{
			static char c[210];
			memset(c, 0, sizeof(c));
			sprintf(c, "%d", n);
			return d.Hugejia(d.s, c);
		}
		
		char * operator+ (int n)	//a + n
		{
			static char c[210];
			memset(c, 0, sizeof(c));
			sprintf(c, "%d", n);
			return this -> Hugejia(s, c);
		}
		
		void operator+= (int & n)	//b += n
		{
			v = v + n;
		}
		
		int & operator++ ()	//前自增
		{
			v = v + 1;
			return v;
		}
		
		int operator++ (int k)	//后自增
		{
			int temp = v;
			v = v + 1;
			return temp;
		}
		
		friend ostream & operator<< (ostream & os, const CHugeInt & d)	//流插入 <<
		{
			os << d.v;
			return os;
		}
};

int  main() 
{ 
	char s[210];
	int n;

	while (cin >> s >> n) {
		CHugeInt a(s);
		CHugeInt b(n);

		cout << a + b << endl;
		cout << n + a << endl;
		cout << a + n << endl;
		b += n;
		cout << ++b << endl;
		cout << b++ << endl;
		cout << b << endl;
	}
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:30:34  更:2022-02-09 20:33:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:25:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码