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++对与数据类型不足的补充 -> 正文阅读

[数据结构与算法]C++对与数据类型不足的补充

利用数组来模拟大整数的计算

大整数加法的实现:

补充1:

铺垫的知识点先展示一下:

//存放大数的一些方法
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char c=0;
	int b=0;
	cin>>c;
	b=c-'0';
	cout<<b;
	return 0;
} 

?补充2:

strlen函数的应用

//验证str的一个长度的问题
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char arr[10]={0};
	int len=0;
	cin.get(arr,10);//get的一个具体的用法,cin.get(表达式1,表达式2);//表达式1所要存放的地址。表达式2所要存储的长度
	len=strlen(arr);//strlen函数的调用,strlen();//需要用到头文件#include<cstring> 
	cout<<len;
	return 0;
} 

?补充3:

算法,两个数组交换位置的写法

//输入一个字符型数组,反向输出一个整数型数组。 
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char arr_str[10];
	int arr_value[10];
	int len;
	cin.get(arr_str,10);
	len=strlen(arr_str);//3
	for(int i=0,j=len-1;i<len;i++,j--)//0 1 2 3 4 5//这个地方书写可以学习一下。 
	{
		arr_value[i]=arr_str[j]-'0';//错误1:len-1是一个固定值。 //错误3:字符转数字减去'0' 
		//cout<<arr_value[i]<<endl;	
	}
	//cout<<arr_value;//错误2:arr_value,这样输出是错误的。需要用到循环。
	for(int i=0;i<len;i++) //0 1 2 3 4 5
	{
		cout<<arr_value[i];	
	} 
	return 0;
} 

最终代码:

#include<iostream>
#include<cstring>

using namespace std;
//const int max=200;

int main()
{
	int max=200;
	int sum[max] = {0};//       定义了存放大数字的数组 //这个位置存放最终值 
	char num1[max],num2[max];// num1 和  num2 存放两个字符串 
	int i,j,len; 
	int n2[max]={0};
	cin.get(num1,max);//存入到数组num1之中 
	cin.get();//吸收空格 
	cin.get(num2,max);//存入到数组num2之中 
	int len1=strlen(num1),len2=strlen(num2);// 计算输入的两个数值长度 
	len=len1>len2?len1:len2;//最大数位循环 
	for(i=len1-1,j=0;i>=0;i--,j++)//要想明白这个地方为什么是len1-1 
	{
		sum[j]=num1[i]-'0';//这个地方可以研究一下 
	}
	for(i=len2-1,j=0;i>=0;i--,j++)//这个地方的书写实际就是把两个数组的值换了一下。 
	{
		n2[j]=num2[i]-'0';//给到了n2 
	}
	for (i=0;i<=len;i++)//len这个地方用到了,len,个位加个位 //两个数组相加的算法。 
	{
		sum[i]+=n2[i];  //个位个位相加 
		if(sum[i]>9)// 一个下标下大于10了,就进行判断一下。 
		{
			sum[i]-=10;//直接就减去10 
			sum[i+1]++;//这个代表的意思是,进位//有个问题 //怎么解决999+91的问题的 ?
														// 
		}
	}
	if(sum[len]!=0)	len++;//最高位是不是产生了一个进位。 
	cout<<" "<<num1<<endl<<"+"<<endl<<" "<<num2<<endl<<"="<<endl<<" ";
	for(i=len-1;i>=0;i--)cout<<sum[i];
	cout<<endl;	
	return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:54:55  更:2022-05-13 11:56:19 
 
开发: 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/26 4:30:04-

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