1 次元配列、2 次元配列、および多次元配列の使用

ctry L : クリアスクリーン

フォルダ ディレクトリに入る 3 つのコマンド: cd ~ cd home/hq/ cd

cat test.c 行番号なし nl test.c 行番号あり

配列とは、いくつかの変数を一定の順序関係で集めたもので、配列を構成する各変数を配列の要素と呼びます。

配列内の各要素のデータ型要件は同じで、配列名と添え字によって決まります。

1. 一次元配列

1. 定義と使用

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;
}

2、2 次元配列

定義方法:配列型 配列名[定数式][定数式]

宣言時に行数は省略できますが、列数は省略できません

配列要素の格納順序は、メモリが 1 次元であるため、最初に行順の原則に基づいて格納されます。
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]

複数の 1 次元配列に相当

#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;
}

3 つの多次元配列

添字が 2 つ以上ある配列は、多次元配列と呼ばれます。

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