数组:是在内存中物理连续存放的同类型的数据结构 一维数组:同类型、物理内存连续、大小一旦创建不能改变 下标:从零开始,是我们为了使用数组方便设计的 地址:数组名代表数组在内存中首元素的起始位置,十六进制 0x开头 int a[100]; cout<<a;//0x344ef6 cout<<&a[0];//& 引用符号,取地址符 0x344ef6 cout<<&a[1];//0x344efa 相差4,int占4字节 数组的初始化: int a[长度]; int a[长度]={数据}; int a[];//数组创建时,长度不能为空 int a[]={数据};//创建的同时并赋值,数组长度根据赋值数量而定 如果赋值的数据数量比长度少,其余位置补零 作业: 小鱼比可爱 https://www.luogu.com.cn/problem/P1428 统计天数 https://www.luogu.com.cn/problem/P1567 黑色星期五 https://www.luogu.com.cn/problem/P1202 二维数组的本质就是连续的多个长度相同的一维数组,也就是一个大的一维数组。 因此,使用二维数组时,下标可以与一维数组互置 int n,m; cin>>n>>m; int a[n+5][m+5]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } int a[n*m+5]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i*m+j]; } } 字符数组&字符串 在C语言中,没有字符串,把字符数组称作字符串 C++语言中,有string工具包 字符数组拥有普通数组的所有用法和性质 且,可以通过字符串赋值,赋值时字符串的末尾会自带空字符 '\0',因此把长度空着比较常用 char c[]="abcde";//长度默认5+1 输入一个字符数组 char c[10000]; cin>>c;//整行输入,以空格或换行符分隔 hello world cout<<c;//hello cin.getline(c,10000);//整行输入,换行结束,可以输入空格符并存储 hello world cout<<c;//hello world 使用getline时,容易存储缓存垃圾数据 在同时使用 cin语句和getline语句时,需要提前清理缓存垃圾 在getline语句执行前,写清空代码 cin.ignore();//清空缓存 字符数组函数笔记:https://noicode.online/a/jichuyufa/20240511/205.html 字符串string 基本数据类型:int long long double float bool char 字符串不是基本数据类型 string s;//创建一个字符串空间,包含s的数据域以及字符串的相关功能函数 string s="abcde"; s.size() s.length() s.substr() ... 直接使用的函数是公共的,不需要(变量名.)调用 字符串作为特殊的类型,自带很多类函数,需要通过字符串类型的变量加'.'调用 字符串相关的功能详解:string文档 ~~~~~~~~~~~~~~~~~~~~~~~~~ 1、自定义函数:一般自定义函数中不写输出语句 创建语法结构 函数类型 函数名(参数组){ 函数体 return 返回值; } 函数类型与返回值类型相同 如果返回值不存在(return ;)函数类型为void int a=5,b=10; swap(a,b); cout<<a<<b;//105 根据需求写函数,确定函数的类型与参数 1、计算两个整数的和:将两个整数相加,返回结果 int he(int a,int b){ return a+b; } int main(){ int n,m; cin>>n>>m; cout<<he(n,m); return 0; } 2、判断一个整数是否是质数 bool isprime(int n){ if(n<2) return false; for(int i=2;i<=sqrt(n);i++) if(n%i==0) return false; return true; } int main(){ int num; cin>>num; if(isprime(num)) cout<<"yes"; else cout<<"no"; return 0; } 3、交换函数swap void swap2(int a,int b){ int t=a; a=b; b=t; } int main(){ int n,m; cin>>n>>m;//5 10 swap2(n,m); cout<<n<<m;//510 return 0; } 后序内容如下: 递归函数 自定义类型 文件操作 指针操作 ~~~~~~~~~~~~~~~~~~~~~~~~~ 基础算法:枚举、二分、排序(冒泡、选择、插入、计数[桶]、快速排序),高精度算法,时空复杂度 数据结构:栈、队列、链表、集合、向量、映射... ~~~~~~~~~~~~~~~~~~~~~~~~~ 树、图、贪心、动态规划 |