一维数组(C语言)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int a[5]={1,2,3,4,5};
字符数组
字符数组概念的引入 C语言中没有字符串类型的变量,字符串
的存储有两种方式。
将字符串存储在一个字符数组中(本节内容)
字符数组
1、字符数组的定义 Βιβλιοθήκη Baidu符数组的每个元素存放一个字符。
定义字符数组的一般格式如: char 数组名[整型常量表达式],… 如:char a[10]; 该语句(1)定义了一个名为a的字符数组。
char s[6]={“hello”}; 用字符串常量给字符数组赋初值时,系统在最 后自动补上字符串标志‘\0’,另外花括号也 可以省略。可写成:
char s[]=“hello”;
字符数组
例:char a[5]=“hello”;(错误)
注意: 1、字符数组要有足够的存储单元存储字符串。 2、上面的语句定义了一个有5个元素的字符数组,但 字符串常量中还包含一个字符串结束标志‘\0’,要占用 6个存储单元,5个单元空间不够用。
字符数组
(3)给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,若是逐个字符赋 值给数组元素,要在最后一个字符之后加上字符串结束 标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
(2)方括号中的10规定该数组最多容纳10个元 素
字符数组
2、数组元素的初始化 (1)字符数组逐个元素赋初值。
char s[ ]={‘H’,’e’,’l’,’l’,’o’,’\0’};
字符数组
(2)在赋初值时直接赋字符串常量。
char s[]={“hello”}; 说明:赋初值时,若没给数组元素的个数,系 统将按字符串中实际的字符个数来定义数组的 大小。上述语句等价于:
一维数组
注意: 1、如果初值的数据个数比数组元素少,则系统自动给后面的 元素补赋初值0。 2、如果初值的数据个数比数组元素多,则在编译时提示出错 信息:
too many initializers. 5、初始化时不指定数组长度。 C语言中,可以在初始化时,不指定数组长度的个数。 例:int a[ ]={1,2,3,4,5}; 这里,花括号里列出了5个初始化数据,它隐含地定义了该数 组共有5个元素。等价于:
strcpy(str1,str2); /*将str2存放到str1中*/
字符数组
注意:
1、不能用赋值语句把字符串整体赋给字符数组。 s1=“hello”;(错误)
2、使用strcpy函数给字符数组赋值时,字符数组1必须定 义得足够大,以便可以容纳得下被复制的字符串。
字符数组
5、字符数组的输入输出。
一维数组
1、数组概念的引入(必要性)
如用以解决从键盘输入任意100个数,输出这些的半值 这样的问题。
概念:数组由若干个类型相同的元素组成, 每个元素就是一个变量,每个数组都有一个 名称,称为数组名。
一个可以输入10个数的例子
main() { int i,a[10]; printf("Please input 10 numbers:"); for (i=0;i<10;i++)
一维数组
3、一维数组元素的使用 数组定义后,就可以在程序中使用数组元
素。 格式如下:
数组名[下标表达式] 如:int a[10];
a[0]=0; a[1]=1; a[2]=a[0]+a[1];
一维数组
使用数组元素应注意: (1)系统在内存中为数组分配一块连续的存储单元,
最低的地址对应于第一个数组元素,最高的地址对 应于最后一个数组元素。每个数组元素等同于一个 变量。 (2)C语言中,不能对一个数组整体赋值。 如: int a[10], b[10], k;
scanf(" %d",&a[i]); printf(" \nyou input is :"); for (i=0;i<10;i++) printf(" %d, ",&a[i]); }
一维数组
a[0] a[1] a[2] a[3] a[4]
2、一维数组的定义 一维数组是指数组元素只有一个下标的数组。 定义一维数组的一般格式如: 类型名 数组名[整型常量表达式],… 如:int a[5]; 该语句 (1)定义了一个名为a的一维数组。 (2)方括号中的5规定该数组最多容纳5个元素。 (3)类型名int规定了这5个元素均为整型变量。 (4)C语言规定数组第一个元素的下标(数组下标的 下界)为0;因此最后一个元素的下标(数组下标的上界) 为数组元素个数减1
一维数组
4、数组元素的初始化 一般形式为:
类型名 数组名[整型常量表达式]={常量1,常量2,…}
例:int a[10]={1,2,3,4,5,6,7,8,9,10}; 该语句定义了一个动态数组,并对该动态数组进行了初始化。
注意: 1、所赋初值的类型必须与说明的类型一致。 2、在指定初值时,第一个值赋给下标为0的元素。 3、不可能跳过前面的元素给后面的元素赋初值。
for (k=0;k<10;k++) scanf(“%d”,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
一维数组
(3) 在使用数组元素时,数组元素中的下标表 达式的值必须是整型。 下标表达式值的下限为0,值的上限为该数 组元素的个数减1。 使用数组时注意其下标不要越界。如果下 标越界,程序无法得到正确的结果。
字符数组
(4)利用库函数strcpy给字符数组赋值。
形式:strcpy(字符数组1,字符数组2); 作用是将字符数组2的内容复制到字符数组1中,复制时将 字符数组2后面的字符串结束标志也复制到字符数组1中。 例:char str1[30],str2[30]; strcpy(str1,”how are you”); /*将”how are you.”存放到str1*/
(1)将字符数组中的字符串逐个字符输入输出。
A、在标准输入输出函数printf和scanf中使用%c格式说明符。
例:
main( )
{ char c[10];
int k;
for (k=0;k<10;k++)
scanf(“%c”,c[k]);
字符数组
字符数组概念的引入 C语言中没有字符串类型的变量,字符串
的存储有两种方式。
将字符串存储在一个字符数组中(本节内容)
字符数组
1、字符数组的定义 Βιβλιοθήκη Baidu符数组的每个元素存放一个字符。
定义字符数组的一般格式如: char 数组名[整型常量表达式],… 如:char a[10]; 该语句(1)定义了一个名为a的字符数组。
char s[6]={“hello”}; 用字符串常量给字符数组赋初值时,系统在最 后自动补上字符串标志‘\0’,另外花括号也 可以省略。可写成:
char s[]=“hello”;
字符数组
例:char a[5]=“hello”;(错误)
注意: 1、字符数组要有足够的存储单元存储字符串。 2、上面的语句定义了一个有5个元素的字符数组,但 字符串常量中还包含一个字符串结束标志‘\0’,要占用 6个存储单元,5个单元空间不够用。
字符数组
(3)给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,若是逐个字符赋 值给数组元素,要在最后一个字符之后加上字符串结束 标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
(2)方括号中的10规定该数组最多容纳10个元 素
字符数组
2、数组元素的初始化 (1)字符数组逐个元素赋初值。
char s[ ]={‘H’,’e’,’l’,’l’,’o’,’\0’};
字符数组
(2)在赋初值时直接赋字符串常量。
char s[]={“hello”}; 说明:赋初值时,若没给数组元素的个数,系 统将按字符串中实际的字符个数来定义数组的 大小。上述语句等价于:
一维数组
注意: 1、如果初值的数据个数比数组元素少,则系统自动给后面的 元素补赋初值0。 2、如果初值的数据个数比数组元素多,则在编译时提示出错 信息:
too many initializers. 5、初始化时不指定数组长度。 C语言中,可以在初始化时,不指定数组长度的个数。 例:int a[ ]={1,2,3,4,5}; 这里,花括号里列出了5个初始化数据,它隐含地定义了该数 组共有5个元素。等价于:
strcpy(str1,str2); /*将str2存放到str1中*/
字符数组
注意:
1、不能用赋值语句把字符串整体赋给字符数组。 s1=“hello”;(错误)
2、使用strcpy函数给字符数组赋值时,字符数组1必须定 义得足够大,以便可以容纳得下被复制的字符串。
字符数组
5、字符数组的输入输出。
一维数组
1、数组概念的引入(必要性)
如用以解决从键盘输入任意100个数,输出这些的半值 这样的问题。
概念:数组由若干个类型相同的元素组成, 每个元素就是一个变量,每个数组都有一个 名称,称为数组名。
一个可以输入10个数的例子
main() { int i,a[10]; printf("Please input 10 numbers:"); for (i=0;i<10;i++)
一维数组
3、一维数组元素的使用 数组定义后,就可以在程序中使用数组元
素。 格式如下:
数组名[下标表达式] 如:int a[10];
a[0]=0; a[1]=1; a[2]=a[0]+a[1];
一维数组
使用数组元素应注意: (1)系统在内存中为数组分配一块连续的存储单元,
最低的地址对应于第一个数组元素,最高的地址对 应于最后一个数组元素。每个数组元素等同于一个 变量。 (2)C语言中,不能对一个数组整体赋值。 如: int a[10], b[10], k;
scanf(" %d",&a[i]); printf(" \nyou input is :"); for (i=0;i<10;i++) printf(" %d, ",&a[i]); }
一维数组
a[0] a[1] a[2] a[3] a[4]
2、一维数组的定义 一维数组是指数组元素只有一个下标的数组。 定义一维数组的一般格式如: 类型名 数组名[整型常量表达式],… 如:int a[5]; 该语句 (1)定义了一个名为a的一维数组。 (2)方括号中的5规定该数组最多容纳5个元素。 (3)类型名int规定了这5个元素均为整型变量。 (4)C语言规定数组第一个元素的下标(数组下标的 下界)为0;因此最后一个元素的下标(数组下标的上界) 为数组元素个数减1
一维数组
4、数组元素的初始化 一般形式为:
类型名 数组名[整型常量表达式]={常量1,常量2,…}
例:int a[10]={1,2,3,4,5,6,7,8,9,10}; 该语句定义了一个动态数组,并对该动态数组进行了初始化。
注意: 1、所赋初值的类型必须与说明的类型一致。 2、在指定初值时,第一个值赋给下标为0的元素。 3、不可能跳过前面的元素给后面的元素赋初值。
for (k=0;k<10;k++) scanf(“%d”,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
一维数组
(3) 在使用数组元素时,数组元素中的下标表 达式的值必须是整型。 下标表达式值的下限为0,值的上限为该数 组元素的个数减1。 使用数组时注意其下标不要越界。如果下 标越界,程序无法得到正确的结果。
字符数组
(4)利用库函数strcpy给字符数组赋值。
形式:strcpy(字符数组1,字符数组2); 作用是将字符数组2的内容复制到字符数组1中,复制时将 字符数组2后面的字符串结束标志也复制到字符数组1中。 例:char str1[30],str2[30]; strcpy(str1,”how are you”); /*将”how are you.”存放到str1*/
(1)将字符数组中的字符串逐个字符输入输出。
A、在标准输入输出函数printf和scanf中使用%c格式说明符。
例:
main( )
{ char c[10];
int k;
for (k=0;k<10;k++)
scanf(“%c”,c[k]);