文章目录
1 全局变量和局部变量
局部变量:
-
函数中定义的变量
-
值是随机的
-
存放在栈区,C++中默认栈空间是1MB,避免使用一个过大的数组,会产生栈溢出错误,举个例子:
全局变量:
-
程序中定义在所有函数(包括 main 函数)之外的任何变量
-
默认值为0
-
放在堆空间,没有什么限制,小于内存大小即可
2 一维数组
2.1 一维数组的定义与初始化
2.2 例题
例1:使用数组实现求斐波那契数列的第N项。
例2:输入一个n,再输入n个整数。将这个数组顺时针旋转k(k <= n)次,最后将结果输出。
方式一:
方式二:
2.3 多维数组(暂略)
3 数组的常用函数
3.1 数组初始化尽可能使用memset
memset效率更高,比遍历数组赋初值效率更高
3.2 数组拷贝memcpy
4 一些题目
753. 平方矩阵 I
输入整数 N,输出一个 N 阶的回字形二维数组。
数组的最外层为 1,次外层为 2,以此类推。
输入格式
输入包含多行,每行包含一个整数 N。
当输入行为 N=0 时,表示输入结束,且该行无需作任何处理。
输出格式
对于每个输入整数 N,输出一个满足要求的 N 阶二维数组。
每个数组占 N 行,每行包含 N 个用空格隔开的整数。
每个数组输出完毕后,输出一个空行。
数据范围
0≤N≤100
输入样例:
1
2
3
4
5
0
输出样例:
1
1 1
1 1
1 1 1
1 2 1
1 1 1
1 1 1 1
1 2 2 1
1 2 2 1
1 1 1 1
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
解答思路:
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
/*
规律:一个正方形套一个正方形
思路:根据坐标的距离来求
发现:该点的值为:距离上边,距离左边,距离下边,距离右边,这四个边距离的最小值
*/
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
//两层循环构造了n*n个坐标点(i,j)
//该坐标点到四边的距离的最小值为该矩阵的每个点代表的值
int up = i;
int left = j;
int down = n-i+1;
int right = n-j+1;
//两两求最小值,获取四个的最小值
int dis = min(min(up,left),min(down,right));
cout<<dis<<' ';
}
cout<<endl;
}
cout<<endl;
}
return 0;
}