C语言数组

2.1 一维数组
1)数组:把具有相同类型的批量变量按有序的形式组织起来满足编程需要,这些按序
排列的同类型数据元素的集合称为数组。
数组中共用的名字称为数组名,集合中的变量称为数组元素。
数组元素格式:数组名 [下标]
数组维数:数组名后所跟下标的个数。
由 1 个下标组成的数组称为一维数组;由 2 个下标组成的数组称为二维数组;由 3 个以
上下标组成的数组称为多维数组。
2)一维数组的定义形式如下:
<数据类型> <数组名>[<常量表达式>]={<初始值>}
例如:float a[10];
定义了 10 个元素组成的实型一维数组,数组名为 a 。
10 个元素分别为:a[0]、a[1]、a[2]…a[9]。
说明:在数组定义格式中:
(1) 数据类型可以是:int 、float、char。
(2) 数组名符合符标识符定义,但不能与其它变量同名。
例如:int b,b[7];就是不对的。
(3) 数组元素的下标是从 0 开始编号的,如定义 float a[10],第一个元素为 a[0],最后
一个为 a[9],而不是 a[10],否则要产生数组越界。
(4) 常量表达式只能为常量和符号常量,不能为变量
3)一维数组元素的引用
任何数组都是先定义后引用。数组元素的引用形式为:
<数组名>[<下标>]
数组元素的实质为具有下标的变量,故又称下标变量。因此,数组元素普通变量的引用
完全相同。
例:求整型 a 数组中最大元素的值和该元素的下标。
#include <stdio.h
void main( )
{ int a[5]={25,-2,8,24,5};
int max,k,i;
max=a[0]; k=0;
for(i=0;i<5;i++)
if (a[i]>max)
{ max=a[i]; k=i; }
printf(“m=%d,%d\n”,max,k);
}
4)一维数组元素的初始化
初始化就是给数组元素赋初始值,有以下两种方法:
数组定义时初始化
定义时初始化:在定义数组时将各元素的值全部写入定义语名中。
一般格式:
<数据类型> <数组名>[<数组元素个数>]={值 1,值 2,…,值 n};
①对数组全部元素赋初值
例如:int num[3]={1,2,3};
②对数组部分元素赋初值
例如:int num[5]={10,15,20};
执行后各元素初值为:
num[0]=10, num[1]=15, num[2]=20,num[3]=0, num[4]=0
注意:不能写为如下形式:int num[3];num[3]={10,15,20};
③全部元素均初始化为 0
例、有 10 个整数,要求对它们按由小到大的顺序排列,采用冒泡排序。
#include <stdio.h>
int main()
{
int a[10];
int i,j,t;
printf(“input 10 numbers :\n”);
for (i=0;i<10;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=0;j<9;j++) //进行 9 次循环,实现 9 趟比较
for(i=0;i<9-j;i++) //在每一趟中进行 9-j 次比较
if(a[i]>a[i+1]) //相邻两个数比较
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf(“the sorted numbers :\n”);
for(i=0;i<10;i++)
printf(“%d “,a[i]);
printf(”\n”);
return 0;
}
2.2 二维数组
1) 二维数组的定义
定义形式: <数据类型> <数组名>[<常量表达式 e1>] [<常量表达式 e2>];
二维数组的数组元素个数为:e1*e2。
在这里插入图片描述
2) 二维数组元素的引用
不论是一维数组还是二维数组,都不能对数组进行整体引用,只能对具体元素进行访问。
引用格式:<数组名>[<下标 1>][<下标 2>]
3) 二维数组元素的初始化
可以用下面的方法对二维数组进行初始化:
(1)对数组全部元素赋值
允许二维数组定义中缺省行下标,但不能缺省列下标。
①int bb[3][2]={{1,2},{3,4},{5,6}};
②int bb[3][2]={1,2,3,4,5,6};
③int bb[ ][2]={1,2,3,4,5,6}
④int bb[ ][2]={{1,2},{3,4},{5,6}};
四种赋初值形式等效,执行后各元素值为:
bb[0][0]=1 bb[0][1]=2
bb[1][0]=3 bb[1][1]=4
bb[2][0]=5 bb[2][1]=6
(2)可以对部分元素赋初值
例:求二维数组最大值
main( )
{ int a[3][4]={{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};
int i,j,row=0,colum=0,max;
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{ max=a[i][j];
row=i;
colum=j;}
printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);
}
2.3 字符数组
字符数组:用来存放字符或字符串的数组称为字符数组。一维字符数组的定义形式如下:
char <数组名>[<常量表达式>]={<初始值>};
二维字符数组定义的形式是:
char <数组名>[<常量表达式 e1>] [<常量表达式 e2>] ={<初始值>};
字符数组的初始化
关于字符数组的初始化有如下两种方式:
(1)用字符常量初始化数组
(2)用字符串常量初始化数组
例如:
char ch[4]={‘a’,‘b’,‘c’,‘d’};或者:
char ch[ ]={‘a’,‘b’,‘c’,‘d’};
/可以缺省数组定义长度/
用字符串常量方式赋值时,在末尾自动加上一个结束符’\0’ 作为结束标志,比用字符常
量赋值方式每行要多占一个字节。
main( )
{ char a[15],b[5],c[5];
scanf(“%s%s%s”,a,b,c);
printf(“a=%s\nb=%s\nc=%s\n”,a,b,c);
scanf(“%s”,a);
printf(“a=%s\n”,a);
}
运行情况:
输入:How are you?
输出:a=How
b=are
c=you?
输入:How are you?
输出:a=How

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值