第6章数组
一维数组
1、定义形式:
类型名 数组名[数组长度];
2、引用
C语言规定,只能引用单个的数组元素,而不能一次引用整个数组。
引用形式:数组名 [下标];
下标的合理取值范围是[0,数组长度-1]。
注意:不要让下标越界,因为,一旦发生越界,就会把数据写到其他变量所占的储存单元中,甚至写入程序代码段,有可能造成不可预料的运行结果。
3、初始化
没有赋初值的元素值为0。
数组初始化时,如果对全部元素都赋初值,就可以省略数组长度,如int a[ ]={ 1,2,3,4,5};
4、应用
/*求数组中的最大值和其最小下标*/
#include <stdio.h>
int main()
{
int i,j,n,index=0;//下标
int a[10];
scanf("%d",&n);
if(n>1&&n<=10){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(j=0;j<n;j++){
if(a[index]<a[j])
{
index=j;
a[index]=a[j];
}
}
printf("%d %d",a[index],index);
}
return 0;
}
/*将数组中的数逆序存放并顺序输出*/
#include <stdio.h>
int main()
{
int a[10];
int i,j,n;
scanf("%d",&n);
if(n>1&&n<=10){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(j=n-1;j>=0;j--){
printf("%d",a[j]);
if(j>0) printf(" ");
}
}
return 0;
}
/*定义两个数组并找出不同的元素*/
#include <stdio.h>
int main()
{
int a[20],b[20],c[20],d[20];
int i,j,n,m,k=0,o=0;
scanf("%d",&n);
if(n<=20){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
}
scanf("%d",&m);
if(m<=20){
for(i=0;i<m;i++){
scanf("%d",&b[i]);
}
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(a[i]==b[j]) break;
}
if(j>=m){
c[k]=a[i];
k++;
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(b[i]==a[j]) break;
}
if(j>=n){
d[o]=b[i];
o++;
}
}
printf("%d",c[0]);
for(i=1;i<k;i++){
for(j=0;j<i;j++){
if(c[i]==c[j]) break;
}
if(j>=i){
printf(" %d",c[i]);
}
}
printf(" %d",d[0]);
for(i=1;i<o;i++){
for(j=0;j<i;j++){
if(d[i]==d[j]) break;
}
if(j>=i){
printf(" %d",d[i]);
}
}
return 0;
}
二维数组
1、定义形式:
类型名 数组名[行长度] [列长度];
2、同一维数组。
3、初始化
4、应用
/*矩形运算*/
#include <stdio.h>
int main()
{
int i,j,n;
int a[10][10];
int sum=0;
scanf("%d",&n);
if(n<=10&&n>=1){
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
if(i!=(n-1)&&j!=n-1&&i+j!=n-1){
sum=sum+a[i][j];
}
}
}
printf("%d",sum);
}
return 0;
}