一维数组,二维数组及多维数组的使用

ctry L :清屏

进入夹目录的三种命令: cd ~ cd home/hq/ cd

cat test.c无行号 nl test.c带行号

数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。

数组中各元素的数据类型要求相同,用数组名和下标确定。

一、一维数组

1、定义与使用

一维数组:<存储类型> <数据类型><数组名> [<表达式>];

#include<stdio.h>
int main(){
int a[6],i;
for (i=0;i<6;i++)    //只能逐个引用数组元素,不能一次性引用整个数组;
printf("%p",&a[i]); //打印数组各元素的地址
printf("%p",a);     //打印数组的起始地址,打印数组用%p
printf("%d\n",sizeof(a));     //打印数组占用的总空间
return 0;
}
int a[5]={1,2,3,4,5};    int a[]={1,2,3,4,5};
//数组不初始化,其元素值为随机值
//对static数组元素不赋初值,数组会自动赋以0值
//只给部分数组元素赋初值,剩下的默认为0;

2、练习:冒泡排序

#include<stdio.h>
int main(){
int a[]={1,3,4,2,45,9};      //冒泡排序
int t;
n=sizeof(a)/sizeof(int);
for (i=0;i<n-1;i++) {
   for(j=0;j<n-i-1;j++){
          if(a[j]>a[j+1]){
              t=a[j+1];
              A[j+1]=a[j];
              a[j]=t;
}
}
} 
for (i=0;i<n;i++)     
printf("%d\n",a[i]);  
puts("");
return 0;
}

二、 二维数组

定义方式: 数组类型 数组名[常量表达式][常量表达式]

声明时行数可以省略,列数不可以省略

数组元素的存放顺序是以行序优先的原则进行存储的,因为内存是一维的。
a[0] a[0][0] a[0][1] a[0][2]
a[1] a[1][0] a[1][1] a[1][2]
a[2] a[2][0] a[2][1] a[2][2]

相当于多个一维数组构成

#include<stdio.h>
int main(){
int a[7][5];
int i,j;
for (i=0;i<7;i++) {   //只能逐个引用数组元素,不能一次性引用整个数组;
   for (j=0;i<5;i++)
   putchar('/n');
}
printf("%p",&a[i][j]); //打印数组各元素的地址
printf("%p",a);     //打印数组的起始地址
printf("%d\n",sizeof(a));     //打印数组的总长度
return 0;
}

二维数组元素的初始化:

int a[2]3]={ {1,2,3},{4,5,6}};

部分初始化,其它补0;

#include<stdio.h>
int main(){
int a[2][3]={
    
    {},{2}};
int i,j;
for (i=0;i<2;i++) {  
   for (j=0;i<3;i++)
   printf("%d",a[i][j]);
   putchar('/n');
}

return 0;
}

三、多维数组

具有两个或两个以上下标的数组称为多维数组。

int main(int argc,const char *argv[])    //杨辉三角
int a[10][10]={
    
    {0}};    //定义十行十列数组,并全部置为0
int i,j;
for(i=0;i<10;i++ ){
   a[i][0]=1;           //第一列全部置为1
   for(j=1;j<=i;j++)
      a[i][j]=a[i-1][j-1]+a[i-1][j];  //第i行i列的值置为第i-1行,j-1列和i-1行,j列的和
      }
for(i=0;i<10;i++ ){
    for(j=0; j<=i;j++)
      printf(”%8d" ,a[i][j]);
      printf("\n");
return 0:
#include <stdio.h>
int main(int argc, const char *argv[ ] )     //求数组中的最大值
int a[3][3]={
    
    {1,2,3},{4,5,6},{7,8,9}};
inti,j,row,cloumn;
roW= cloumn=0 ;
for(i=0;i<3;i++){
for(j=0;j<3; j++ ){
if(a[row][clounn]<a[i][j]){
row=i ;
cloumn=j;
}
}
}
printf("max-%d 最大值所在行为%d行%d列\n",a[ row][clounn], row,cloumn);
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_52049228/article/details/129619943