第八章 数组
对于一组同类型数据进行处理,不可能逐个用字母去命名,为此我们引入了数组,用一个字符和一组下标来表示一组数据,从而简化了数据的命名,并且能有序的对数据进行处理,对数据进行输入和输出。
1.一维数组:用一个字符做数组名,用一组下标作为顺序记录各个元素便构成了一维数组,格式为score[a] 其中a必须为数字或者常量字符,a代表数组元素的个数,正真元素为从score[0]到score[a-1]
2.二维数组:可以理解为以数组为元素的数组,即用两个下标表示不同的元素,可以表示更多的数据使数据更具格式化,行列分明。
3.字符数组:字符和字符串为元素的数组,输入一般使用gets() 下标代表字符串中各个元素,字符串以\\0为结束符。
4.输入输出:字符的输入和输出一般用循环语句来进行,通过控制某个变量的变化,让变量作为数组的下标,从而对数组元素进行赋值和输出等处理。
利用数组可以解决一系列问题,尤其是对于一些有规律的数和矩阵问题,在数学方面也有很大的用处如
1)用模拟法进行只有两种情况的数据得处理
#include<stdio.h>
int main(){
int score[99999],a[999],b[999],i,j,l,m,sum=0;
scanf(\"%d %d\",&l,&m);
for(i=0;i<=l;i++)
{
score[i]=1;
}
for(j=1;j<=m;j++)
{
scanf(\"%d %d\",&a[j],&b[j]);
for(i=a[j];i<=b[j];i++)
{
score[i]=0;
}
}
for(i=0;i<=l;i++)
{
sum=sum+score[i];
}
printf(\"%d\",sum);
}
2)对矩阵中的元素进行处理,寻找或增减某些元素
#include<stdio.h>
int main(){
int k=0,t,s,i,j,a[6][6],m,d;
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
scanf(\"%d\",&a[i][j]);
for(i=1;i<=5;i++){
m=a[i][1];d=1;s=0;
for(j=1;j<=5;j++)
if(a[i][j]>m)
{m=a[i][j];
d=j;}
for(t=1;t<=5;t++){
if(a[t][d]>=m)s++;
else break;}
if(s==5)
{
printf(\"%d %d %d\\n\",i,d,a[i][d]);k++;}
}
if(k==0)printf(\"not found\\n\");
return 0;
}
3)设计一些简单的游戏,如扫雷等
#include<iostream>
using namespace std;
int main()
{
int n,m,i,j,sum=0;
char a[999][999];
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
sum=0;
if(a[i][j]==42) cout<<\'*\';
else
{
if(a[i-1][j-1]==42) sum++;
if(a[i-1][j]==42) sum++;
if(a[i-1][j+1]==42) sum++;
if(a[i][j-1]==42) sum++;
if(a[i][j+1]==42) sum++;
if(a[i+1][j-1]==42) sum++;
if(a[i+1][j]==42) sum++;
if(a[i+1][j+1]==42) sum++;
cout<<sum;
}
}
cout<<endl;
}
return 0;
}
数组作为C语言的一个利器,合理使用,许多复杂的问题均可迎刃而解,但是对于细节处理要求特别高,如数组越界等问题都会让数组使用出现错误,所以必须多多使用总结才能更好的使用数组。
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。


