C语言一维数组的定义和引用

合集下载

C语言第六章_数组_2

C语言第六章_数组_2

if (a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;14}
#include <stdio.h> main(){ /*对10个整数排序*/
int a[10]={9, 8, 5, 4, 2, 0, 6, 1, 3, 7}, i, k; for (k=1;k<10;k++)
f0=1 (n=0m) ain(){
f1=1
(n=1) int i; long f [20]={1,1};
0 f1n=fn-1f+[0f]n-2 (nfo2r) (i=2;i<20;i++)
1
1
f[1]
2
2
f[2]
f[i]=f[i-2]+f[i-1];
3
3
f[3]
for(i=0;i<20;i++)
4
数组是具有一定顺序的若干同数据类型变 量的集合体。数组要有名称,要有规模。
一.一维数组定义
类型说明符 数组名[常量];
例如:int a[6]; a = = &a[0]
a
内存映象:编译时分配一片连续的内 存空间,数组名为该空间的首地址— —常量地址。
0 a[0]
1 a[1]
2 a[2]
3 a[3]
1
4 a[4]
4
一行一行地存储所有的数组 5
a[0][1] a[0][2] a[0][3] a[1][0] a[1][1]
元素,数组名为该空间的首 6 a[1][2]
地址——地址常量。
7 a[1][3]
8

C_C++语言程序设计基础-7-1一维数组

C_C++语言程序设计基础-7-1一维数组
(2)部分元素赋初值,未赋初始值的数组元素初值为0: int a[5]={5,4};
a[0]=5,a[1]=4,a[2]=0, a[3]=0, a[4]=0
(3)对全部元素赋初值时,可以不指定数组长度,系统自 动根据初值个数来决定数组长度。例如:
int a[ ]={0,1,2,3,4};等价 int a[5]={0,1,2,3,4};
今天教大家一个新的数据类型: 一个变量名称可以代表成百上千个 同种类型的数据,即数组。
源程序:从键盘输入3个整数,顺序(反序)输出。
#include<stdio.h> main() { int x1,x2,x3;
scanf("%d%d%d",&x1,&x2,&x3); pprriinnttff((""%%dd %%dd %%dd \\nn"",,xx13,,xx22,,xx31));; }
但不能省略[] int a={0,1,2,3,4}; 是错误的 (4)对数组进行初始化时,不允许初始化的元素个数超过 数组的长度,如: int a[5]={0,1,2,3,4,5}; 是错误的
数组课堂练习2:
14.若有定义语句:int m[5]={5,4,3,2,1},i=4;,则下面对m数组元素
long num[N]; short w[2*N]; 5. inintt ppeerrssoonn((1100));; 错误 6. int n=10, a[n]; 错误 7. float a[10.5]; 错误
7.1.2 一维数组元素的引用
数组必须先定义再引用
int a[5];
数组元素引用形式为: 数组名 [下标];
3/50

第八章 数组

第八章  数组

例: int a[2][3]; 它在内存情况:
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
8.2 二维数组的引用与初始化
一、引用形式:数组名[下标][下标]
(1)下标可以是整型表达式或符号常量 例如:a[2][3],a[2-1][2*2-1]
(2)数组元素可以出现在表达式中,也可以被赋值。
例如: 有定义 int a[10]; 数组元素引用举例 /*可以引用元素的从a[0]到a[9]*/
a[5]=6; a[7]=a[5]++;
a[6]=3; a[0]=a[5]+a[7]-a[2*3];
8.1.3 一维数组的初始化
1.初始化--在定义数组时对数组元素赋初值; 2.初始化方法:
[static] 数组类型 数组名[数组长度]={数组元素值};
运行结果: I am happy
例8-stdio.h>
void main( )
{
char c[5][5]={{‘ ‘,’ ‘,’* ‘},{‘ ‘,’*’,’ ‘,’*’},{‘*’,’ ‘,’ ‘,’ ‘,’*’}, {‘ ‘,’*’,’ ‘,’*’},{‘ ‘,’ ‘,’*’}};
举例:
(1)给数组a各元素赋以初值: [static] int a[10]={0,1,2,3,4,5,6,7,8,9}; (2)可以只给一部分元素赋初值,后几个元素值为 0 [static] int a[10]={0,1,2,3,4}; (3)如果想使一个数组中全部元素值为0,可以写成: static int a[10]={0,0,0,0,0,0,0,0,0,0} 或static int a[10]; (4)在全部数组元素赋初值时,可以不指定数组长度: int a[5]={1,2,3,4,5}; 可以写成: int a[ ]={1,2,3,4,5};

C语言一维数组

C语言一维数组

6
例题巩固
在C 语言中,引用数组元素时,其数组下标的 数据类型允许是 。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
C语言中,数组名代表 A.数组全部元素的值 B.数组首地址 C.数组第一个元素的值 D.数组元素的个数
合法的数组定义是 A.int a[ ]=”string”; B.int a[5]={0,1,2,3,4,5}; C.char a=”string”; D.char a[ ]={0,1,2,3,4,5};
以下程序的输出结果是________。 main( ) { int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++) if(a[i]<a[p]) p=i; printf("%d,%d\n",a[p],p); } A) -3,4 B) 0,1 C) 9,2 D) 2,9
35
35
int a[5]
a[0] a[1] 第一轮 21 13 13 13 21 21
a[2] 90 90 90
a[3] a[4] 32 32 32 -1 -1 -1
13 13
21 21
32 32
90 -1
-1 90
第一轮的结果: 将最大的数移到了最后一个位置(n-1)。
int a[5]
a[0] a[1]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 0 1 2 3 4 5 6 7 8 a[9] 9
数组a
max = a[0];
32
32
定义
main()
{ int i, max, x[10];

C语言 数组

C语言 数组
} for(i=0;i<N;i++){ //计算每门课的平均分
sAverage[i]=0.0; for(j=0;j<M;j++)
sAverage[i]+=score[j][i]; sAverage[i]=sAverage[i]/M; }
C语言程序设计
二维数组的初始化
第4章 数组
(1)按行对二维数组进行初始化: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
C语言程序设计
一维数组的定义
第4章 数组
➢ 要想使用一维数组,必须对一维数组进行定义。定义时,
需要说明两点: (1)数组中元素的类型; (2)数组中元素的个数。
类型标识符 数组名[整型常量表达式];
int x[10]; char name[20]; float score[20];
//定义一个包含10个整数的数组x //定义一个包含20个字符的数组name //定义一个包含20个浮点数的数组score
int arr[Num]={10,8,56,45,31,49,47,50,89,100}; printf("请输入要查找的数据: "); scanf("%d",&a); for(i=0;i<Num;i++){
if (arr[i]==a){ printf("元素%d在数组中的位置是:%d\n", a, i+1); break;
#define N 20 int a[N]={1,1}; //用一维数组表示Fibonacci数列,并对其赋初值 int i, sum=0; for(i=2;i<N;i++)

高中信息技术 信息学奥赛C语言第八章 数组课件

高中信息技术 信息学奥赛C语言第八章 数组课件
• 一维数组初始化的定义形式为: 类型名 数组名[常量表达式或省略]={值0,值 1,……}; 其中,{}中各值是对应的数组元素初值,各值 之间用逗号隔开。例如:
int a[5]={0,1,2,3,4}; 也可以省略为:
int a[ ]={0,1,2,3,4};
说明:
1.可以只给部分数组元素赋初值。当{}中 值的个数少于数组元素个数时,则表示初 值只赋于数组开始的若干个元素,余下部 分元素为相应类型的缺省值,int为整型数0, 字符型为空格等。
二维数组存储结构是“按行存放,先行后列”,
说明:
(1)数组名是用户定义标识符
(2)数组名后面的两对方括号必不可少, 之间不能有空格。方括号中必须是常量表 达式,表达式1表示数组的行数,表达式2 表示数组的列数。其中必须是正的整型常 量,绝对不能是变量。
(3)定义后,a数组在内存中占用6个连续 的存储单元,按照行的顺序依次存储各个 元素。 见书p75图8-2、图8-3.
8.数组定义中,数组长度除多数情况下作显式说明 外,有两种情况下不必或不能用长度说明,而用[] 代替。
(1)给数组全体元素赋初值时,可省去数组长度说 明。
(2)数组名作为函数的参数,在函数的参数说明部 分,当指出参数是数组时,不能用长度说明。
二、一维数组的初始化
• 当系统为所定义的数组在内存中开辟一串连续的 存储单元时,这些存储单元中并没有确定的值,数 组的初始化就是指在定义数组时给数组元素赋初值。
为一维数组。 • 一维数组的定义方式为:
类型名 数组名[常量表达式]; 例如: int array[10];
它表示定义了一个名为array的数组, 此数组有10个元素,每个元素的数据类型 为整型。
一维数组定义的说明:

C语言学习入门笔记之数组

C语言学习入门笔记之数组

数组笔记在程序设计中,把具有相同类型的若干变量按有序的形式组织起来。

这些按序排列的同类数据元素的集合称为数组。

在C语言中,数组属于构造数据类型。

一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。

因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

1.一维数组的定义和引用1.一维数组的定义方式在C语言中使用数组必须先进行定义。

一维数组的定义方式为:类型说明符数组名[常量表达式];其中:类型说明符是任一种基本数据类型或构造数据类型。

数组名是用户定义的数组标识符。

方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

例如:int a[10]; 说明整型数组a,有10 个元素。

float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。

char ch[20]; 说明字符数组ch有20 个元素。

对于数组类型说明应注意以下几点:1)数组的类型实际上是指数组元素的取值类型。

对于同一个数组,其所有元素的数据类型都是相同的。

2)数组名的书写规则应遵循标识符命名规则。

3)数组名不能与其它变量名相同。

例如:main(){int a; float a[10];……}是错误的。

4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。

但是其下标从0 开始计算。

因此5 个元素分别为a[0],a[1],a[2],a[3],a[4]。

5)常量表达式中可以包括常量和符号常量,不能用变量来表示元素的个数,也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。

例如:#define FD 5 main(){int a[3+2],b[7+FD];……}是合法的。

但是下述说明方式是错误的。

main(){int n=5; int a[n];……}6)允许在同一个类型说明中,说明多个数组和多个变量。

中职C语言教案:一维数组的定义和使用

中职C语言教案:一维数组的定义和使用
二、讲授:
1、数组概述:
数组:是数目固定,类型相同的若干个变量的有序集合,用数组名标识。
序:是数组元素之间的位置关系,不是元素值的大小顺序。
数组名:是用于区别其它数组及变量的。
数组元素:集合中的变量,属同一数据类型,用数组名和下标确定。
下标:是数组元素在数组中的位置。
数组的维数:数组名后所跟下标的个数。
教法
讲授法、案例教学法、讨论法
教学设备
黑板 计算机 网络机房
教学
环节
教学活动内容及组织过程
个案补充




一、导入:
提问:保存一个班50位同学的一门功课的成绩,并且找出最高分和最低分,应如何实现?
解题思路:定义50个变量,从键盘中输入值,然后再相互比较。处理起来很复杂,是否有更简便的方法?引出本节课的知识点-----数组。
中等专业学校2024-2025-1教案编号:
备课组别
计算机
课程
名称
C语言
所在
年级
主备
教师
授课教师
授课
系部
授课
班级
授课
日期
课题
一维数组的定义和使用
教学
目标
1、掌握一维数组的定义和引用
2、掌握一维数组的初始化方法
3、了解与一维数组有关的应用编程方法
重点
一维数组的定义和引用、初始化方法
难点
与一维数组有关的应用编程方法
int t,a[10],i=2;
则以下都是正确的表达式:
t=a [6];
a[0]= a[i]+a[i+1];
引用说明:
(1)必须像使用变量那样,先定义,再使用,如以下操作是错误的:

C语言数组的定义及引用

C语言数组的定义及引用

引导语:数组是在程序设计中,为了处理⽅便,把具有相同类型的若⼲变量按有序的形式组织起来的⼀种形式。

以下是百分⽹店铺分享给⼤家的数组,希望⼤家喜欢! 1.1 ⼀维数组的定义、初始化和引⽤ 1.⼀维数组的定义⽅式为: 类型说明符数组名[常量表达式] (1)数组名的命名⽅法与变量名相同,遵循标识符命名规则; (2)数组是⽤⽅括号括起来的常量表达式,不能⽤圆括号; (3)常量表达式表⽰数组元素的个数,即数组的长度,数组的下标从0开始,下标的最⼤值为:常量表达式-1; (4)常量表达式中可以包括常量和符号常量,不能包括变量。

可以⽤赋值语句或输⼊语句使数组中的元素得到值,但要占⽤运⾏时间。

可以使数组在运⾏之前初始化,即在编译阶段使之得到初值。

2.对数组初始化可以⽤以下⽅法实现: (1)在定义数组时对数组元素赋以初值。

如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上⾯的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。

(2)初始化时可以只对⼀部分元素赋初值。

例如: static int a[10]={0,1,2,3,4}; 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。

(3)如果想使⼀个数组的元素值全部为0,可以⽤下⾯的⽅法: static int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能⽤: static int a[10]={0*10}; 如果对static型数组不赋初值,系统会对定义的所有数组元素⾃动赋以0值。

(4)在对全部数组元素赋初值时,可以不指定数组长度。

3.⼀维数组的引⽤⽅法是: C语⾔规定不能⼀次引⽤整个数组,引⽤时只能逐个元素引⽤,数组元素的表⽰形式为: 数组名[下标] 下标可以是整型常量或整型表达式。

如: a[0]=a[5]+a[7]-a[2*3]; 1.2 ⼆维数组的定义、初始化和引⽤ 1.⼆维数组定义的⼀般形式为 类型说明符数组名[常量表达式][常量表达式] C语⾔采⽤上述定义⽅法,我们可以把⼆维数组看做是⼀种特殊的⼀维数组:它的元素⼜是⼀维数组。

C与数据结构 第9次课--一维数组和二维数组的定义和使用

C与数据结构 第9次课--一维数组和二维数组的定义和使用
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组元素的引用
引用形式 数组名[整型表达式] 下标的取值 0≤ 整型表达式 ≤元素个数-1 例如 int a[10]; 表示有10个整型元素,分别为: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
第4章
二维数组的初始化
二维数组定义时赋值,可以按行分段赋值,也可以 按行连续赋值。 例如 按行分段赋值: int a[3][3]={ {80,75,92}, {61,65,71}, {59,63,70} }; 按行连续赋值: int a[3][3]={ 80,75,92,61,65,71,59,63,70 };
在全部元素赋值的情况下,这两种 赋初值的结果是完全相同的。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组的初始化
例如 (1)int a[3][3]={ {80,75}, {61}, {59,63} }; (2)int a[3][3]={ 80,75,61,59,63 }; (3)int a[3][3]; 问题:这三行的结果如何? (1)
第4章
一维数组的定义
定义形式 类型标识符 数组名[整型常量表达式]; 本质 声明数组元素的类型和个数之后,编译器才能为 该数组分配合适的内存。 举例 #define M 20 int a[10]; 定义a是有10个整型元素的数组 float b[5]; 定义b是有5个浮点型元素的数组 char ch[M+6];定义ch是有M+6即26个元素的字符 型数组
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用

C语言一维数组的定义和引用数组

C语言一维数组的定义和引用数组

printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,然后是第二维,第 一维最慢。
7.2.2 二维数组的引用 形式:数组名[下标][下标] 其中:下标是整型或字符型的常量,变量或表 达式。(定义时不能使用变量)
运行:input 6 numbers: 输入:9 8 5 4 2 0 输出:0 2 4 5 8 9
7.2 二维数组的定义和引用 7.2.1 二维数组的定义 1.一般形式:类型说明符 数组名[常量表达式][常量 表达式]
如:float a[3][4] 定义数组a具有三行四列 在C中,可将二维数组看着是特殊形式的一维数组。
int a[5] a[0], a[1], a[2], a[3], a[4] 5个元素 ,下标从0 ~ 4
注意:
在Turbo C 中超过定义的数组下标元素是可以引用的,系 统不作检查。
例T7-0-1.c
main( )
{int i, a[5];
for(i=0;i<=4;i++)
printf (a[%d]=%d\ n,i,a[i]=i+1);
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
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]; r=i;c=j}
1 2 34 a= 9 8 7 5

C语言第七章

C语言第七章

4、strcpy(字符数组1,字符数组2):
例:main()
把“字符串2”的值拷贝到“字符串1”中。
{char str1[10]; char str2[ ]="Chinese"; strcpy(str1,str2); puts(str1); } 输出: Chinese 说明: (1)字符数组1的长度不应小于字符串2的长度。 (2)“字符数组1”必须写成数组名形式,“串2”可以是字符数 组名,也可以是一个字符串常量。如:strcpy(str1,“China”); (3)拷贝是‘\0‟一起拷贝。 (4)不能用赋值语句将一个字符常量或字符数组直接赋给一个 字符数组。 (5)可以用strcpy函数将字符串2中前面若干个字符拷贝到字符 数组1中去。 例如:strcpy(str1,str2,2);
3、部分元素赋值: int a[3][4] = {{1},{5},{9}}; 1 0 0 0 5 0 0 0 9 0 0 0
仅对a[0][0]、a[1][0]、a[2][0]赋值,编译器自动为未赋
值元素指定初值0。
4、如果对全部元素赋初值,则第一维的长度可以 不指定,但必须指定第二维的长度。 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 与下面定义等价: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
[例6.6]: main() { int i; char c1[ ] = {"How are you?"}; char c2[15]; scanf("%s", c2 ); for(i=0;i<12;i++) printf("%c", c2[i] ); printf("%s", c1 ); } 程序运行时:输入:abcdefghijklmno 结果:abcdefghijklHow are you?

语言程序设计 一维数组的定义和初始化

语言程序设计 一维数组的定义和初始化

数组元素类型 数组名
定义了100个元素,分别为a[0]、a[1]、a[2]、……、a[99],相当于100个int类型 的变量,每一个称为数组中的一个元素,这些元素在内存中的存储示意如下。
a[0]
a[1]
a[2]
……
a[99]
C语言 一维数组定义
# include <stdio.h>
int main( )
C语 言 程 序 设 计
一维数组的定义和 初始化
C语言 数组类型的引入
例:设计程序实现,输入100个整数,反序输出。
01
分析:
02
因为要反序输出,所以直到最后一个数输入前我们无法输出,必须保存这100个整数的值。 应用前面所学的知识,我们进行如下的数据定义和输入函数调用。
a1
a2
a3
……
a100
int main( )
//下标值由大到小遍历 // 输出a[i]的值
C语言 一维数组元素的引用
如何使两个数组的值相等?
main()
{
int a[5] = {1,2,3,4,5}, b[5];
b = a; }
×
原因:数组名表示数组的首地址,其 值不可改变!
解决方法:
方法1:逐个元素赋值
b[0]=a[0];
b[1]=a[1]; b[2]=a[2];
C语言 一维数组的初始化
定义数组后,数组元素的初值是随机数,可以在定义数组的同 时对数组元素进行初始化。
int a[5] = { 12, 34 }; √ int a[5] = { 12, 34, 0, 0, 0 }; √ int a[5] = { 0 }; √ int a[ ] = { 12, 34, 56 ,78 ,9 }; √ int a[5] = { 12, 34, 56 ,78 ,9,18,20 }; ×

《c语言程序设计教学资料》第8章---数组

《c语言程序设计教学资料》第8章---数组
printf(“%d”, a[i]);
一维数组的初始化
不为自动数组初始化,数组中的元素值是不确定的 不为静态或外部数组初始化,则对数值型数组元素, 初值为0,而对字符型数组元素,初值为空字符 ‘\0’ 对数组元素初始化的实现方法:
1.在定义数组时对数组元素赋以初值。
例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值依次放在一对花括弧内。经过上 面的定义和初始化之后,a[0]=0,a[1]=1,a[2]=2, a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8, a[9]=9。
0
30
b1]
1
34
b[2]
2
38
b[3]
3

3c
b[4]
4
40
c
52
44
a
61
48
i
14678910235
4c
b[8]
8
50
b[9]
9
54
b[10]
10
58
c和a的值因数组越界编辑p而pt 被破坏了 b[11]
11
5c
二维数组程序举例
例: 将一个二维数组行和列元素互换,存到另一个二维数 组中。
数组名 [下标] 下标可以是整型常量或整型表达式。例如: a[0]=a[5]+a[7]-a[2*3]
注意
定义数组时用到的“数组名[常量表达式]” 和引用数 组元素时用到的“数组名[下标]” 是有区别的。 例如∶ int a[10]; // 定义数组长度为10
t=a[6]; //引用a数组中序号为6的元素
sizeof(数组名)
编辑ppt

《C语言程序设计》课件 第五章 数组

《C语言程序设计》课件 第五章 数组
若二维数组名a代表的起始地址为5948,则它的三个元 素a[0]、a[1]和a[2]分别对应了起始地址5948、5956和 5964。
a(5948)
a[2](5964) a[1](5956) a[0](5948) 图 5-10
a[2][1] (5968) a[2][0] (5964) a[1][1] (5960) a[1][0] (5956) a[0][1] (5952) a[0][0](5948)
return 0;
}
5.1.4一维数组程序举例
3.用选择法对输入的n个学生的单科成绩进行 从小到大排序。
编程思路: 直接选择排序的过程是:首先在所有数据中找出值 最小(最大)的数据,把它与第1个数据交换,然后 在其余的数据中找出值最小(最大)的数据,与第2 个数据交换......依次类推,这样,n个数据经过n-1轮 交换后可得到有序结果。
printf("%3d ",a[i]); printf("\n"); return 0; }
5.1.3 一维数组的初始化 5.1.3 一维数组的初始化
数组初始化常见的格式:
1.用大括号括起来的常量表达式列表,常量表达式 之间用逗号进行分隔: int a[10]={1,2,3,4,5,6,7,8,9,10};
注意:
不要将a[i][j]写成a[i,j],否则编译系统会将逗号分隔 符作为逗号运算符处理,即将a[i,j]视为a[j]。
5.2.2二维数组元素的引用
可以将二维数组看成是特殊的一维数组。
例如,二维数组a[3][2]可以看成是长度为3的一维数组, 所含的3个数组元素分别为:a[0]、a[1]、a[2]
for(i=0;i<3;i++) for(j=0;j<5;j++)

一维数组(C语言)

一维数组(C语言)

strlen(str)
main( )
{
insert(str)
char str[10];
char str[ ];
scanf(“请输入
{
数字字符串:%s\n”,&str);
int i1;
insert(str);
for(i1=strlen(str[10]);i1>0; i1--)
}
{
Str[2*i1-1]=‘ ‘;
实用文档
字符数组
(3)给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,若是逐个字符赋 值给数组元素,要在最后一个字符之后加上字符串结束 标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
实用文档
字符数组
(4)利用库函数strcpy给字符数组赋值。
形式:strcpy(字符数组1,字符数组2); 作用是将字符数组2的内容复制到字符数组1中,复制时将 字符数组2后面的字符串结束标志也复制到字符数组1中。 例:char str1[30],str2[30]; strcpy(str1,”how are you”); /*将”how are you.”存放到str1*/
实用文档
字符数组
6、其他字符串处理串处理函数
(2)strcmp(字符串1,字符串2) 作用是比较字符串1和字符串2。比较时对两个字符串自左向右逐个
字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’ 为止。如果全部字符相同,则认为两个字符串相等,返回值0;若出现 不相同的字符,则以第一个不相同的字符的比较结果为准。

C语言 数组1

C语言 数组1

程序编写过程: #include <stdio.h> main( ) { int i, x, a[5],flag=0 ; for ( i=0; i<5; i++ )输入数据, 赋给数组元素 scanf("%4d",a[i]); printf("Input x:"); scanf("%d",&x); 输入需查找的数 printf("\n"); for( i=0; i<5; i++ ) 逐个查找数 if ( x==a[i] ) {printf("下标值=%d\n", i); flag=1; 若找到,输出下标 break;}
fib[0]=fib[1]=1
fib 1 1 2 3 5 8 13 21 34 55
+ + + + + + + +
fib[i]=fib[i-1]+ fib[i-2]
程序编写过程: #include <stdio.h> main( ) { int i;
运行结果:
1 1 2 3 5 8 13 21 32 55
第7章

数组


常用于处理大批量数据 数据特点:存在内在联系 数组——具有相同数据类型的变量集合 这些变量都有相同名字,但下标不同 称这些变量为数组元素 数组元素在内存中连续存放 只有一个下标——一维数组 有两个下标——二维数组
本章将介绍的内容

一维数组


二维数组
字符串
一维数组
数组名 [ 下标 ]
例如: a[2],b[i],b[i+1]是合法引用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}
}
本例程序中用了两个并列的for循环语句,在第二个for语句中又嵌套了一个循环语句。第一个for语句用于输入10个元素的初值。第二个for语句用于排序。本程序的排序采用逐个比较的方法进行。在i次循环时,把第一个元素的下标i赋于p,而把该下标变量值a[i]赋于q。然后进入小循环,从a[i+1]起到最后一个元素止逐个与a[i]作比较,有比a[i]大者则将其下标送p,元素值送q。一次循环结束后,p即为最大元素的下标,q则为该元素值。若此时i≠p,说明p,q值均已不是进入小循环之前所赋之值,则交换a[i]和a[p]之值。此时a[i]为已排序完毕的元素。输出该值之后转入下一次循环。对i+1以后各个元素排序。
7.1.4一维数组程序举例
可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
【例7.4】
main()
{
int i,max,a[10];
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
7.1.3一维数组的初始化
给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。
数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。初始化赋值的一般形式为:类型说明符数组名[常量表达式]={值,值……值};
其中在{ }中的各数据值即为各元素的初值,各值之间用逗号间隔。
for(i=0; i<10; i++)
printf("%d",a[i]);
而不能用一个语句输出整个数组。
下面的写法是错误的:
printf("%d",a);
【例7.1】
main()
{
int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d ",a[i]);
C
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。
max=a[0];
for(i=1;i<10;i++)
if(a[i]>max) max=a[i];
printf("maxmum=%d\n",max);
}
本例程序中第一个for语句逐个输入10个数到数组a中。然后把a[0]送入max中。在第二个for语句中,从a[1]到a[9]逐个与max中的内容比较,若比max的值大,则把该下标变量送入max中,因此max总是在已比较过的下标变量中为最大者。比较结束,输出max的值。
float b[10],c[20];说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20];说明字符数组ch,有20个元素。
对于数组类型说明应注意以下几点:
数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
数组名的书写规则应符合标识符的书写规定。
例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 };
相当于
a[0]=0;a[1]=1...a[9]=9;
C语言对数组的初始化赋值还有以下几点规定:
可以只给部分元素赋初值。
当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:
int a[10]={0,1,2,3,4};
表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
只能给元素逐个赋值,不能给数组整体赋值。
例如给十个元素全部赋1值,只能写为:
int a[10]={1,1,1,1,1,1,1,1,1,1};
而不能写为:
int a[10]=1;
如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。
例如:
int a[5]={1,2,3,4,5};
可写为:
int a[]={1,2,3,4,5};
printf("%d ",a[i]);
printf("\n%d %d\n",a[5.2],a[5.8]);
}
本例中用一个循环语句给a数组各元素送入奇数值,然后用第二个循环语句输出各个奇数。在第一个for语句中,表达式3省略了。在下标变量中使用了表达式i++,用以修改循环变量。当然第二个for语句也可以这样作,C语言允许用表达式表示下标。程序中最后一个printf语句输出了两次a[5]的值,可以看出当下标不为整数时将自动取整。
数组名不能与其它变量名相同。
例如:
main()
{
int a;
float a[10];
……
}
是错误的。
方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。
不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。
例如:
#define FD 5
main()
{
int a[3+2],b[7+FD];
……
}
是合法的。但是下述说明方式是错误的。
main()
{
int n=5;
int a[n];
……
}
允许在同一个类型说明中,说明多个数组和多个变量。
例如:
int a,b,c,d,k1[10],k2[20];
7.1.2一维数组元素的引用
}
【例7.2】
main()
{
int i,a[10];
for(i=0;i<10;)
a[i++]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
}
【例7.3】
main()
{
int i,a[10];
for(i=0;i<10;)
a[i++]=2*i+1;
for(i=0;i<=9;i++)
数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标]
其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如:
a[5]
a[i+j]
a[i++]
都是合法的数组元素。
数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。例如,输出有10个元素的数组必须使用循环语句逐个输出各{
int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) { p=j;q=a[j]; }
7.1一维数组的定义和引用
7.1.1一维数组的定义方式
在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符数组名[常量表达式];
其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:
int a[10];说明整型数组a,有10个元素。
相关文档
最新文档