c++语法详解 pdf,C++基础语法
Yyds干货库存
写在前面:该系列文章旨在短时间内复习C/C语法中的重点和易错点,巩固算法竞赛和问题写作过程中常用的语法知识,准确解决学过但忘了的案例,为算法问题刷题打下坚实基础。
C (IV) VII的语法基础。数组7.1一维数组7.1.1数组的定义数组的定义类似于变量的定义。
这里需要注意的一点是:
main函数中定义的数组将放在堆栈空间中,默认情况下是1M。因此,如果数组太大,超过了堆栈空间的容量,将会报告错误TLE。为了避免这种现象,有必要全局定义数组(在main函数之外),以便它存储在堆空间中。基本没有限制。栈通常用来运行指令,堆用来存储数据。
#包括iostream
#包含算法
使用命名空间std
int main()
{
int a[10],b[10];//数组长度
浮动f[33];
双d[123];
char c[21];
返回0;
}7.1.2数组的初始化在main函数内部,未初始化数组中的元素是随机的。在main函数之外,未初始化数组中的元素都是0。堆中的空间不会真正被打开。申请一个数组后,在使用的时候,打开一块内存。会提前标记为0形成零页,使用时再赋值。
#包括iostream
#包含算法
使用命名空间std
int main()
{
int a[3]={0,1,2 };//分别包含3个元素0、1、2的数组
int b[]={0,1,1 };//维度是一个3的数组
int c[5]={0,1,2 };//相当于c[]={0,1,2,0,0}
char d[3]={a , b , c };//初始化字符数组,注意单引号 。
返回0;
}7.1.3访问数组元素通过下标访问数组。
数组下标从0开始。请注意,数组访问最好不要越界,这可能会导致错误“分段错误”。#包括iostream
#包含算法
使用命名空间std
int main()
{
int a[3]={0,1,2 };//数组下标从0开始
cout a[0] a[1] a[2]endl;
a[0]=5;
cout a[0]endl;
返回0;
}7.2程序练习练习1:用数组实现斐波那契数列的第n项。
#包括iostream
#包含算法
使用命名空间std
int main()
{
int n;
int f[100];
CIN n;
f[0]=0,f[1]=1;
for(int I=2;I I)f[I]=f[I-1]f[I-2];
cout f[n]endl;
返回0;
}练习2:输入一个n,然后输入n个整数。n个整数以相反的顺序输出。
#包括iostream
#包含算法
使用命名空间std
int main()
{
int n;
int a[100];
CIN n;
for(int I=0;CIN a[I];
for(int I=n-1;I I-)cout a[I]“”;
cout endl
返回0;
}练习3:输入一个n,然后输入n个整数。将这个数组顺时针旋转k(kn)次,最后输出结果。
旋转一次的意思是:把最左边的数字放到最右边。
方法1:
#包括iostream
#包含算法
使用命名空间std
int main()
{
int n,k;
int a[100];
CINnk;
fot(int I=0;CIN a[I];
while(k -)
{
int t=a[n-1];
for(int I=n-2;我我-)
a[I 1]=a[I];
a[0]=t;
}
for(int I=0;I I)cout a[I]“”;
返回0;
}方法二:
巧妙的练习:
#包括iostream
#包含算法
使用命名空间std
int main()
{
int n,k;
int a[100];
CINnk;
for(int I=0;CIN a[I];
反向(a,a k);
反向(一个k,一个n);
反向(a,a n);
for(int I=0;I I)cout a[I]“”;
cout endl
返回0;
}练习4:输入N的个数,按照从小到大的顺序输出N的个数。
#包括iostream
#包含算法
使用命名空间std
int main()
{
int n;
int a[100];
CIN n;
for(int I=0;CIN a[I];
for(int I=0;我我)
for(int j=I 1;j j)
if (a[i] a[j])
swap(a[i],a[j]);
for(int I=0;I I)cout a[I]“”;
cout endl
返回0;
}练习5:计算22的n次方。N10000
#包括iostream
#包含算法
使用命名空间std
int main()
{
int a[10000],size=1,n;
a[0]=1;
CIN n;
while (n -)
{
int t=0;
for(int I=0;I尺寸;我)
{
t=a[I]* 2;
a[I]=t % 10;
t/=10;
}
if(t)a[size]=t;
}
for(int I=size-1;I I-)cout a[I];
cout endl
返回0;
}7.3多维数组多维数组是数组的数组。
int a[3][4];//大小为3的数组,每个元素都是4个整数的数组。
int arr[10][20][30]={ 0 };//将所有元素初始化为0
//大小为10的数组,其中的每个元素都是由20个数组组成的数组
//这些数组的元素是包含30个整数的数组
#包括iostream
#包含算法
使用命名空间std
int main()
{
int[3][4]={//三个元素,每个元素都是一个大小为4的数组
{0,1,2,3},//第1行的初始值
{4,5,6,7},//第2行的初始值
{8,9,10,11} //第3行的初始值
};
返回0;
}7.4程序练习输入一个N行M列的矩阵,从左上角开始按回字形顺序顺时针打印。
#包括iostream
#包含算法
使用命名空间std
int main()
{
int n,m;
int arr[50][50];
CIN nm;
for(int I=0;我我)
for(int j=0;j j)
CIN arr[I][j];
bool ST[50][50]={ false };
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1 };
int d=1,x=0,y=0;
for(int I=0;I n * m;我)
{
int a=x dx[d],b=y dy[d];
if (a 0 a=n b 0 b=m st[a][b])
{
d=(D1)% 4;
a=x dx[d],b=y dy[d];
}
cout arr[x][y] ;
ST[x][y]=true;
x=a,y=b;
}
cout endl
返回0;
}
来自的。如需转载,请联系作者,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。