1.3数组
1.定义数组的方式
如果写int a[n];而不赋值的话,数组的值是随机的
但是把它放到函数外面存储到堆空间,为全局变量而不是局部变量,会全是0
想要定义一个数组但是不确定长度,可以定义的时候长度写多一点,比如int a[100] = {1,2,3};int a[10] = {1};指前几个数是你输入的,后面的都是0
2.旋转数组k次
第一种方式,把初始数组的最后一位取出,然后让数组每一项后移一位,循环k次
第二种方式运用reverse方法反转数组
3.算2的N次方
#include<bits/stdc++.h> using namespace std; const int N = 3000; int main(){ int a [N] = {1}; int n; cin>>n; //cout<<pow(2,n)<<endl; int m = 1; for(int i = 0;i<n;i++){ int t = 0; for(int j = 0;j<m;j++){ t += a[j]*2; a[j] = t%10; t/=10; } if(t){ a[m] =1; m++;//即a[m++]=1; } } for (int i = m-1;i>=0;i--){ printf("%d",a[i]); } system("pause"); }
还是很有成就感的2333
4.memset函数,void *memset(void *s, int ch, size_t n);头文件是<cstring>。
(开始初始化的位置,初始化的数字,初始化的字节byte)
1个int是4个byte
#include <bits/stdc++.h> using namespace std; int main(){ int a[10]; memset(a,0,40);//将a全部转为0 memset(a,0,sizeof a);//将a全部转为0 memset(a,1,sizeof a);//不是将a转为1 for(int i =0;i<10;i++)cout<<a[i]<<" "; cout<<endl; memset(a,-1,sizeof a);//将a全部转为-1 for(int i =0;i<10;i++)cout<<a[i]<<" "; cout<<endl; system("pause"); }
输出的结果如上图。
sizeof函数会返回字节大小,一般用sizeof,后面不用加括号。
5.memcpy函数,复制数组给另一个数组,让b数组复制a数组,就把b数组放在括号第一个,代码如下
int a[10],b[10]; for(int i=0;i<10;i++)a[i]=i; memcpy(b,a,sizeof a); for(int i =0;i<10;i++)cout<<b[i]<<" "; cout<<endl;
输出的b数组是0123456789.