- 随着学习的不断深入,我们遇到和研究的问题越来越难,当然处理的数据也越来越多,数据的值和数量越来越大。这时候我们普通的输入输出已经应付不过来了。数组便是用于处理这方面的问题。数组是一组具有相同类型的变量集合,每个数据项被称为数组元素,C程序通过数组的下标实现对数组的访问。
数组在目前的学习中分为 一维数组,二维数组 两种在声明数组时,前面的 int,double等是代表着数组的基类型。在声明数组时,方括号内为常量,我们也可以是用宏常量定义数组,但是一定不能用变量定义。
基本格式是: 类型标识符 数组名[常量表达式]
接下来注意的就是数组的初始化,对你定义的数组数据初始化。可以写出全部,也可以写出部分其他自动为0。如果没有数组初始化,有两种结果。1 定义放在int main()之外,初始值默认为0。2 定义在int main()之内,初始值则为随机值。
数组定义时的常量表达式是表示系统给这个数组分配的内存。访问是一定要在范围之内,否则数据无法存储,程序就会异常关闭。这就是数组越界。
二维数组可以理解为一个表格。基本格式为:
类型 数组名[第一维长度][第二维长度]。例如a[i][j] 表示的就是 一个排列为i行j列的元素。
接下来是数组这章的易错点和注意点。
1.c++语言只能逐个引用数组元素,不能一次引用整个数组。
2.数组变量可以像同类型的普通变量使用。
3.一维数组输入可以用for循环,二维数组用的是循环嵌套。
4.数组声明在main函数外面时,数组才可以开的很大,放在main函数之内,数组稍大就会异常退出。
5.把数组a中k个元素到数组b,可以用memcpy(b,a,sizeof(int)*k)。使用memcpy函数需要头文件cstring。
6.也可以把数组定义为布尔类型。用做标志常量。
7.在学习数组的时候也学习关于排序的知识
1.冒泡排序。for(int i=0;i<n-1;i++)
for(int j=0;j<n-i;j++)
if(b[j]>b[j+1])
{
swap(b[j],b[j+1]);
将数组元素进行排序,可以从大到小也可以从小到大。
8.关于排序还有一个简单的方法。系统自带的sort排序,将数组元素从小到大排序,不过得用到头文件algorirhm。
9.a[i][j]中含有i*j个元素,同样也不能超出元素指定的范围,否则也会越界。
10.将二维数组看成一个矩阵或表格。将题目简单化。
11.也有一种排序方法为选择排序。可自己选择排序方式。
程序为
void inssort(int*a int num)
{
for(i=1;i<num;i++)
{
l=i-1;temp=a[i];
while(l>=0&&a[l]>temp)
{
a[l+1]=a[l];
l--;
}
a[l+1]=temp;
最后给大家分享一道题。
扫雷游戏是一款十分经典的单机小游戏。它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里是否是地雷。
现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。
注:每个格子周围格有八个:上、下、左、右、左上、右上、左下、右下。
输入
第一行包含两个整数n和m,分别表示雷区的行数和列数。1 <= n <= 100, 1 <= m <= 100。
接下来n行,每行m个字符,‘*’表示相应格子中是地雷,‘?’表示相应格子中无地雷。字符之间无任何分隔符。
输出
n行,每行m个字符,描述整个雷区。若相应格中是地雷,则用‘*’表示,否则用相应的周围格地雷数表示。字符之间无任何分隔符。
样例输入
3 3
*??
???
?*?
样例输出
*10
221
1*1
我的作答是
#include<iostream>
using namespace std;
char a[110][110];
int main()
{
int n,m,b=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int k=1;k<=n;k++)
{
for(int p=1;p<=m;p++)
{
if(a[k][p]=='*')
cout<<'*';
if(a[k][p]=='?')
{
for(int i=k-1;i<=k+1;i++)
{
for(int j=p-1;j<=p+1;j++)
{
if(a[i][j]=='*')
b++;
}
}
cout<<b;
b=0;
}
}
cout<<endl;
}
return 0;
}
这题用到了二维数组的定义和字符数组,和对题目的深度剖析。当没读到*号时。在它周围几个空格里在有一个循环嵌套。来判断周围的雷数。
以上是我对数组的理解和总结。如有错误和不足。请大家提出。
关于“数组”的总结和整理。
最新推荐文章于 2021-08-24 12:25:49 发布