数组—学习

ops/2025/2/3 18:53:02/

1.基础知识

  1. 高精度计算

高精度算法是处理大数(超过64位)的计算方法。C++标准库没有直接支持大数运算,因此需要使用数组来模拟大数的存储和运算。

2. 全局静态数组

全局变量(包括静态数组)在C++中会在程序启动时自动初始化为0。因此,定义一个全局数组时,不需要显式初始化为0。

int a[10000000]; // 定义一个很大的全局数组,自动初始化为0

3. 局部变量

局部变量(在函数内部定义的变量)不会自动初始化,除非显式初始化。如果局部变量未初始化,其值是未定义的,可能会导致不可预测的行为。

4. 栈空间限制

在函数内部定义大数组会导致栈溢出,因为栈空间有限(通常几MB)。因此,大数组应该定义为全局变量或动态分配(使用 newstd::vector)。

5. 代码示例分析

示例1:全局数组
  • 正确性:这段代码是正确的。全局数组 a 自动初始化为0,因此 a[0] 的值为0。

示例2:局部大数组
  • 正确性:这段代码是错误的。在函数内部定义大数组会导致栈溢出。虽然代码可以编译通过,但在运行时可能会崩溃或产生未定义行为。

示例3:全局变量和局部变量的初始化
#include <bits/stdc++.h>
using namespace std;
int a; // 全局变量自动初始化为0
int c = 99; // 赋值为99
int main() {int b;cout << a << endl; // 输出0cout << c << endl; // 输出99cout << b << endl; // 由于b没有初始化,这里输出莫名其妙的值return 0;
}
  • 正确性:这段代码的描述是正确的。全局变量 a 自动初始化为0,c 被显式初始化为999。局部变量 b 未初始化,因此其值是未定义的。

6. 补充说明

  • 动态分配:如果需要在函数内部使用大数组,可以使用动态分配(newstd::vector),但需要手动管理内存。

  • std::vector:推荐使用 std::vector,它会自动管理内存,并且可以动态调整大小。

2.应用——高精度加法

#include<bits/stdc++.h>
using namespace std;
int a[1003],b[1006];
string add(string x,string y)
{int lx=x.size();int ly=y.size();for(int i=0;i<lx;i++)//把字符串中的每个字符转化为数字,并倒序存入数组中{a[lx-1-i]=x[i]-'0';}for(int i=0;i<ly;i++){b[ly-i-1]=y[i]-'0';}int lmaxn=lx>ly?lx:ly;//lmaxn=max(lx,ly)for(int i=0;i<lmaxn;i++){a[i]=a[i]+b[i];a[i+1]=a[i+1]+a[i]/10;a[i]=a[i]%10;}if(a[lmaxn]) lmaxn++;//如果最高位也进位了string ans;for(int i=lmaxn-1;i>=0;i--)//把数组中的结果倒序输出,并存储在字符串ans中{ans+=a[i]+'0';}return ans;
}
int main()
{string x,y;cin>>x>>y;cout<<add(x,y);return 0;
}


http://www.ppmy.cn/ops/155374.html

相关文章

GWO优化LSBooST回归预测matlab

灰狼优化算法&#xff08;Grey Wolf Optimizer&#xff0c;简称 GWO&#xff09;&#xff0c;是一种群智能优化算法&#xff0c;由澳大利亚格里菲斯大学的 Mirjalii 等人于 2014 年提出。该算法的设计灵感源自灰狼群体的捕食行为&#xff0c;核心思想是模仿灰狼社会的结构与行为…

「全网最细 + 实战源码案例」设计模式——享元模式

核心思想 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;主要用于减少程序中大量对象的内存消耗。该模式通过共享相同的数据来有效减少内存的使用&#xff0c;适用于对象非常多且可以共享一部分状态的场景。核心&#xff1a;将对象的内部…

小程序-基础加强-自定义组件

前言 这次讲自定义组件 1. 准备今天要用到的项目 2. 初步创建并使用自定义组件 这样就成功在home中引入了test组件 在json中引用了这个组件才能用这个组件 现在我们来实现全局引用组件 在app.json这样使用就可以了 3. 自定义组件的样式 发现页面里面的文本和组件里面的文…

STM32 旋转编码器

旋转编码器简介 旋转编码器&#xff1a;用来测量位置、速度或旋转方向的装置&#xff0c;当其旋转轴旋转时&#xff0c;其输出端可以输出与旋转速度和方向对应的方波信号&#xff0c;读取方波信号的频率和相位信息即可得知旋转轴的速度和方向 类型&#xff1a;机械触点式/霍尔传…

pandas(三)Series使用

一、Series基础使用 import pandasd {x:100,y:200,z:300} s1 pandas.Series(d) #将dict转化为Series print(s1)print("") l1 [1, 2, 3] l2 [a, b, c] s2 pandas.Series(l1, indexl2) #list转为Series print(s2)print("") s3 pandas.Series([11…

非根目录部署 nextjs 项目,资源文件 请求404 的问题

最近在学习next项目编写的代码放到服务器上静态资源404 先分析问题 到服务器上查看是有资源目录的是不是项目配置有问题是不是nginx配置有问题 经过排查1和2是没有问题的目前来看只有3 检查一下nginx配置 尝试着把静态资源的配置禁用 问题解决 我的next项目用的是pm2管理…

Josephus Problem II CSES - 2163

有3种方法 Solution 1 - ordered_set Utilizing the ordered_set This data structure is an extension of the general set in C. It allows searching for the K-th smallest element in O(log n) time complexity. #include <iostream> using namespace std; #…

【大数据技术】教程01:搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell)

搭建完全分布式高可用大数据集群&#xff08;VMwareCentOSFinalShell&#xff09; 资源下载 VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.isoFinalShell 4.5.12 注&#xff1a;请在阅读本篇文章前&#xff0c;将以上资源下载下来。 写在前面 本章主要介…