c语言程序设计数组
C语言程序设计第06章 数组
1 4 2 3 思考: 0 0 0 0 0 注意:在定义数组时,如果没有为数组变量 1、如果想使一个数组中全部10个元 赋初值,那么就不能省略数组的大小。而且 素值为0,可以怎样写? a数组不初始化,其数组元素为随机值。 1 4 0 2 3 0 0 0 0 100 2、如果想使一个数组中全部 个元 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 素值为1,又该怎样写? 例当对全部数组元素赋初值时,可以省略数组变量的大 char str[ ] = {'a', 'b', 'c', 'd', 'e' }; (5) 则数组str的实际大小为5。 小,此时数组变量的实际大小就是初值列表中表达式的个数。
//超出了数组的大小
(3) 表达式1是第1个数组元素的值,表达式2是第2个 数组元素的值,依此类推; 例 int a[5] = {0, 1, 2, 3, 4}; 经过以上定义和初始化后, a[0] = 0,a[1] = 1,a[2] = 2,a[3] = 3,a[4] = 4。
9
(4) 如果表达式的个数小于数组的大小,则未指定值的 数组元素被赋值为0; 例 int a[10] = {0, 1, 2, 3, 4};
7
<6>C语言中规定数组元素的下标总是从0开始, 例如int a[10];说明整型数组a,有10个元素。这10个
元素是: a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8], a
[9]; 注意最后一个元素是a[9],而不是a[10],该数 组不存在数组元素a[10]。 并且特别值得注意的是,C编译器对数组下标越 界不作检查。
C语言程序设计PPT课件 第5章 数组程序设计
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}
[工学]《C语言程序设计》第5章___数组、字符串、指针
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
说明: ① int a[10]={0,1,2,3,4};
给前5个元素赋 值,其余赋0值 不能给数组整体 赋值,改成{1} 静态存储类型, 初值为0 可以省略数组元 素个数。 初值的个数不能 超过元素个数
② int a[10]=1;
③ static int a[3]; ④ int a[ ]={1,2,3,4,5}; ⑤ int a[5]={1,2,3,4,5,1 };
代码: for(i=0; i<N-1; i<5; i++) { p=i; for(j=i+1; i<N; j<6; j++) if(a[j]<a[p]) p=j; t=a[i]; a[i]=a[p]; a[p]=t; } 5-5.c
《C语言程序设计课件》第四章-数组
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]
C语言程序设计数组
课程名称:C语言程序设计 课型与教法:讲授,经过程序扩展,进行对比学习 课时:2课时 讲课题目:
第7章 数组 基本教材:C语言程序设计(高等教育出版社)廖雷主编 教学目旳与要求:经过本章旳学习使学生了解数组旳意义和 基本概念,掌握数组旳定义和元素旳引用,掌握数组在实际 问题处理中旳应用。 教学难点:二维数组概念旳了解 教学要点:数组旳定义和元素旳引用、数据旳排序
例 int data[5a][;1]=7p8r.0in; tf(“%d”,a);
()
data[5]必=1p须0ri;nt/f/f(没o“r%p有(jrl=fi错n\n0t”;f误(j,<a“提[%120]醒d);;\j,t+使”,+a用)[j]时);要注意 () 5
第七章 数组
一维数组
一维数组旳初始化
int a[N]={7,3,2,5,9,1,6,10,4,8}; for(i=0;i<N-1;i++)
for(j=N-1;j>i;j--) if(a[j-1]>a[j]) { k=a[j-1]; a[j-1]=a[j]; a[j]=k; }
printf(“\n”); for(i=0;i<N;i++)
❖数组元素旳存储顺序
原二因维:数内组存例:是按i一nt行维a[序3旳]优[4]先; float b[2][5];
元素个数=行数*列数
例:int a[3]i[n2t]a[3,4];
a[0][0] a[0][1]
0 () a[0][0]
1
a[0][1]
2
a[1][0]
a[1][0] a[1][1] a[2][0] a[2][1]
一维数组旳引用
c语言课程设计数组版
c语言课程设计数组版一、教学目标本课程的教学目标是使学生掌握C语言中数组的基本概念、操作方法和应用技巧。
通过本课程的学习,学生应能理解数组的定义、初始化、遍历、排序等基本操作,并能够运用数组解决实际问题。
具体目标如下:1.知识目标:–理解数组的概念和性质,包括一维数组、多维数组等。
–掌握数组的声明、初始化和访问方法。
–了解数组的应用场景,如排序、查找等。
2.技能目标:–能够使用C语言编写数组的声明和初始化代码。
–能够使用循环结构遍历数组,并进行相应的操作。
–能够运用数组解决实际问题,如排序、查找等。
3.情感态度价值观目标:–培养学生的逻辑思维能力和问题解决能力。
–激发学生对计算机编程的兴趣,培养学生的创新意识。
二、教学内容本课程的教学内容主要包括数组的基本概念、操作方法和应用技巧。
具体安排如下:1.数组的基本概念:介绍数组的定义、性质和分类,如一维数组、多维数组等。
2.数组的声明和初始化:讲解如何声明数组、初始化数组以及数组的访问方法。
3.数组的遍历和操作:通过循环结构遍历数组,并进行相应的操作,如排序、查找等。
4.数组的应用:结合实际问题,展示如何运用数组解决实际问题。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、案例分析法和实验法等。
1.讲授法:通过讲解数组的基本概念、操作方法和应用技巧,使学生掌握数组的相关知识。
2.案例分析法:通过分析实际问题,引导学生运用数组解决实际问题,培养学生的问题解决能力。
3.实验法:通过编写代码和运行实验,使学生熟悉数组的操作方法和应用技巧。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》2.参考书:《C语言编程实例解析》3.多媒体资料:PPT课件、教学视频等4.实验设备:计算机、编程环境等通过以上教学资源的支持,学生将能够更好地学习和掌握数组的相关知识和技能。
C语言程序设计ppt数组
达数组中打头元素旳地址
2024/10/10
6
8.2.1 一维数组旳申明
例8.1 具有基本数据类型旳一维数组旳申明
#define SIZE 10 int array[5]; double d[5],e[SIZE]; char name[SIZE*5];
13. double even;
21. course_even[i]=course_su
/*分别为全部课程旳总分、平均分 m[i]/5.0;
*/
22. sum+=course_sum[i];
14. int i;
23.
} /* 计算各门课平总分 */
24. even=sum/(3.0*SIZE);
2024/10/10
2024/10/10
17
例8.10
8. int course_sum[3]={0,0,0}; 15. for(i=0;i<5;i++){
9. double course_even[3];
16. course_sum[0]+=math[i];
/组**分/ 别为各门课程总分、平均分数17. course_sum[1]+=physics[i];
用若干个数字序号(下标)来区别各数组元素
例如定义float score[30],可表述30位学生成绩 用数组具有什么好处?
2024/10/10
3
8.1 数组概述
问题
计算全班30位同学某门课程旳平均成绩
处理措施
设置30个float型变量来统计成绩 设置一种有30个float型元素旳数组来统计成绩
c语言课程设计数组
c语言课程设计数组一、教学目标本章节的教学目标是使学生掌握C语言中数组的概念、声明、初始化、访问以及数组排序等基本操作。
1.理解数组的概念和作用。
2.掌握数组的声明和初始化。
3.学会使用循环语句访问数组元素。
4.掌握数组的排序算法。
5.能够正确声明和使用一维数组。
6.能够对一维数组进行排序。
7.能够使用循环语句遍历数组并打印元素。
情感态度价值观目标:1.培养学生的逻辑思维能力。
2.培养学生的问题解决能力。
3.培养学生的团队合作意识。
二、教学内容本章节的教学内容主要包括数组的概念、声明、初始化、访问以及数组排序。
1.数组的概念和作用。
2.数组的声明和初始化,包括一维数组和多维数组。
3.数组的访问,包括使用循环语句遍历数组并打印元素。
4.数组的排序算法,包括冒泡排序和选择排序。
三、教学方法为了达到本章节的教学目标,将采用以下教学方法:1.讲授法:用于讲解数组的概念、声明、初始化、访问以及数组排序的基本原理。
2.案例分析法:通过分析实际案例,让学生更好地理解数组的应用。
3.实验法:让学生通过编写程序实践数组的操作,提高学生的实际编程能力。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C语言编程思想》。
3.多媒体资料:PPT课件、视频教程。
4.实验设备:计算机、编程环境。
五、教学评估为了全面、公正地评估学生在数组学习方面的掌握情况,将采用以下评估方式:1.平时表现:通过课堂提问、讨论和实验操作等环节,评估学生的参与度和理解程度。
2.作业:布置与数组相关的编程作业,评估学生对数组操作的掌握情况。
3.考试:包括期中考试和期末考试,题目将涵盖数组的概念、声明、初始化、访问以及数组排序等知识点。
4.平时表现:积极参与课堂活动,回答问题准确,讨论中能提出自己的见解。
5.作业:编程作业要求正确实现数组相关功能,代码规范,注释清晰。
6.考试:满分100分,60分为及格。
C语言程序设计第5章数组.ppt
2019/3/19
F
冒泡法排序 (续)
程序如下:
#define N 6 #include "stdio.h" void main( ) {int a[N]; int i,j,t; printf("请输入%d个成绩,用空格隔开:\n",N); for (i=0; i<N; i++) scanf("%d",&a[i]);
2019/3/19
5.2.2 数组元素的引用(续)
2.说明
① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10],i; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查。
2019/3/19
5.2.2 数组元素的引用(续)
【例5-4】用冒泡法(也称起泡法)对输入的一组 成绩按从低分到高分的顺序排序并输出。
例如将6个数:4、7、5、6、8、1按从小到大顺序用冒泡 法排序,方法如下: 在第一趟排序中, 6个数比较了5次,把6个数中 第一趟排序情况如下: 的最大数8排在最后。 4 7 5 6 8 1 第一次 4和7比较,不交换 4 7 5 6 8 1 第二次 7和5比较,交换 457681 第三次 7和6比较,交换 456781 第四次 7和8比较,不交换 4 5 6 7 8 1 第五次 8和1比较,交换 456718
2019/3/19
5.1概述(续)
2.数组与数组元素的概念
数组:是用一个名字表示的一组相同类型的数据的集合, 这个名字就称为数组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的数据分别存储在用下 标区分的变量中,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
电大C语言程序设计 第4章 数组和字符串
Байду номын сангаас
第4章 数组和字符串 4.4 使用typedef语句定义数组类型 2. 二维数组类型的定义语句 格式: typedef <元素类型关键字> <数组类型名> [<常量表达式1>] [<常 量表达式2>]; 格式举例: (1) typedef int Matrix[5][5]; (2) typedef char nameTable[10][NN]; (3) typedef double DataType[M+1][N+1]; 定义对象: (1) Matrix mx={{0}}; (2) nameTable nt={""}; (3) DataType dd={{0.0}};
第4章 数组和字符串 4.2 一维数组 3. 数组元素访问 数组元素可以象普通变量一样使用。如: (1) int a[5]={0,1,2,3,8}; (2) a[0]=4; (3) a[1]+=a[0]; (4) a[3]=3*a[2]+1; (5) printf("%d",a[a[0]]);
第4章 数组和字符串 4.1 数组的概念 一维数组可以表示和存储和一维相关的数据。 二维数组可以表示和存储和二维相关的数据。 三维数组可以表示和存储和三维相关的数据。 假定一个数列为a1,a2,…,an,可以用一维数组来 存储。一个矩阵可以用二维数组来存储。
第4章 数组和字符串 4.2 一维数组 1. 定义格式 <类型关键字><数组名>[<常量表达式>][={<初 值表>}] <类型关键字>:已存在的一种数据类型。 <数组名>:用户定义的标识符。 <常量表达式>只能含有通过#define命令定义的 符号常量,不能含有通过const语句定义的符号 常量,初值表为用逗号分开的一组表达式。
C语言讲义第04章-数组
数组
《C语言程序设计》
主要内容
• • • • • 数组的概念 一维数组 多维数组 字符数组 小结
4.1
• •
数组的概念
4.1.1 数组的一般概念: 数组是有序数据的集合,数组中的每一个数据都具有 相同的数据类型。每个数组都用一个统一的标识符来 标识,称为数组名。数组中的每一个数据称为数组元 素,数组元素由数组名和下标(数组元素在数组中的 序号)唯一确定。数组元素也可称为下标变量。
4.3 多维数组
• 实现在一维存储器中存放二维数组,可有两种方式: 一种是按行优先存储,另一种是按列优先存储。 • 在C语言中,二维数组是按行存储的。 • 上面的二维数组的存储情况如图所示 :
4.3 多维数组
• 多维数组的定义:
类型说明符 数组名[常量表达式1][常量表达式2] …
• 多维数组在内存中的存放顺序为:按第一维的下标变 化最慢,最后一维的下标变化最快的规则存储
•
注意:
两个字符串比较大小时,只能用strcmp函数,而不能用条件 语句。
4.4 字符数组
6. 测字符串长度函数strlen(strlen为STRing LENgth 的缩写)
1. “下标”可以是非负的整型常量或其值为非负整型数据 的表达式,取值范围是0~(元素个数 - 1)。 2. 一个数组元素,实质上就是一个变量,它具有和相同类 型单个变量一样的属性,可以对它进行赋值和参与各种 运算 3. 在C语言中,数组不能作为一个整体参加数据运算,只 能对单个的元素进行处理
4.2
4.2
一维数组
– 对全部数组元素赋初值。例如:
float fscore [10] = { 85 , 76.5 , 92 , 65 , 82.5 , 76 , 58 , 46 , 69 , 83 } ;
《c语言程序设计教学资料》第8章---数组
一维数组的初始化
不为自动数组初始化,数组中的元素值是不确定的 不为静态或外部数组初始化,则对数值型数组元素, 初值为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语言程序设计》课件 第五章 数组
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语言程序设计实验七 数组的应用
‘\n’,
‘/’,
‘*’,
‘\n’,
/* (213 lines deleted)*/
0
};
/* The string is a representation of the body of this program from ‘0’to the end */
printf(“%d”,num[i]);
}
3、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
4、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下:
}
(3)#include <stdio.h>
main()
{int a[2+2*4];
}
通过这一实验,可以说明什么问题?
2、运行下面的C程序,根据运行结果,可以说明什么?
#include <stdio.h>
main( )
{int num[5]={1,2,3,4,5};
int i;
for(i=0;i<=5;i++)
main( )
{ int i;
printf(“char \ts[]={\” };
for (i=0;s[i];i++)
C语言程序设计——字符数组
3.字符串连接函数(strcat)
一般形式为:strcat(字符数组名1,字符数组名2);
功能:把字符数组2中的字符串连接到字符数组1中字符
串的后面,并删去字符串1后的’ \0’。函数调用
后得到一个函数值——字符数组1的地址。
例如:#include<string.h>
c[7]=′p′;c[8]=′p′;c[9]=′y′;
字符数组类型说明的形式与前面介绍的数值数组相同。 一般形式:类型说明符 数组名(常量表达式);
例如:char c[10]; (每个数组元素占1个字节的内存单元)
由于字符型和整型是互相通用的,因此也可定义一个 整型数组,用它存放字符数组。 例如:int c[10];
(每个数组元素占2个字节的内存单元, 合法,但浪费存储空间)
二、字符数组的初始化(两种方法)
1.逐个给数组中的各元素赋初值。 如:char c[10]={′I′, ′ ′, ′a′, ′m′,′ ′ ,
′h′,′a′,′p′,′p′,′y′}; 把10个字符分别赋给c[0]—c[9]10个元素。
当对全体元素赋初值时也可以省去长度说明。
2.用字符串直接给字符数组赋初值。 C语言中,没有专门的字符串变量,通常用一个字符数组 来存放一个字符串。 如:char c[10]={“I am happy”};
或char c[10]=“I am happy”; (花括号可省略)
上例也可把长度省略,此时编译系统通过计算初值个数 自动确定该数组长度为11,其中字符串有效长度为10, 另外加上以’ \0’作为字符串的结束符。
scanf(“%s%s%s”,str1,str2,str3); 输入字符:How_are_you?,系统分别将三个字符 串送到三个数组中。
C语言程序设计知识点—第6章 数组
[练习]以下叙述中错误的是( ) A.对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出 B.数组名代表的是数组所占存储区的首地址,其值不可改变 C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出”下标越界”
[练习]以下程序的输出结果是( )
main()
{
int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for (i=0;i<3;i++)
s+=a[i][j]+a[i][3-i-1];
printf(“%d\n”,s);
}
答案:30
[练习]有以下程序:
#include <stdio.h>
puts 函数完全可以由 printf 函数取代。 当需要按一定格式输出时,通常使用 printf
~ 10 ~
C 语言程序设计知识点
主讲教师:杨剑
函数。 字符串示例
#include <stdio.h> void main() {
char line[30]; int i,count = 0; printf("\n 请输入一行字符:\n "); gets(line); i=0; while(line[i] != '\0') { if(line[i] == ' ') count++; i++;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char c[6],d[3][6],C1;
(6)常量表达式表示元素的个数,即数组长度。 例: a[5]中5表示a数组有5个元素,下标从0开始, 该数组有5个数组元素( a[0] ,a[1], a[2],a[3] , a[4] ),注意不能使用数组元素a[5] 。
5.1 1维数组的定义和引用
5.1.1 1维数组的定义 5.1.2 1维数组元素的引用 5.1.3 1维数组元素的初始化 5.1.4 1维数组应用举例
数组同变量一样,也必须先定义、后使用。
1维数组是只有1个下标的数组,定义形式如下:
数据类型 数组名[常量表达式], 数组名2[常量表达式 2]……;
例:int a[5];
表示一个整型数组a,该数组有5个数组元素( a[0] , a[1], a[2],a[3] ,a[4] ),他们的数据类型为整型。
(1)“数据类型”是指数组元素的数据类型。
(2)数组名,与变量名一样,必须遵循标识符命名规 则。
(3)“常量表达式”必须用方括号括起来,指的是数 组的元素个数(又称数组长度),它是一个整型值,其中可 以包含常数和符号常量,但不能包含变量。
例: int a(5);
(4)C语言中不允许动态定义数组。即常量表达式 中不能包括变量。
例:int i; scanf(“%d”,&i);
不允许的
ห้องสมุดไป่ตู้
int a[i];
常量表达式中可以包括符号常量。例:
#define N 5
int a[N]
是允许的
(5)数据类型相同的数组,变量可以用一个类型 表示符同时说明,数组和变量间用逗号分隔。例:
} 思考:若是要求输入100个人的年纪,程序又该如 何编写?
通常,处理大批同类型的数据时,我们不再使用 变量,而是采用新的数据类型——数组。
数组是一组同类型的数据的集合。前面所学的整型,实 型,字符型数据,称为基本类型数据。
5.1 1维数组的定义和引用
5.2 2维数组的定义和引用
5.3 字符数组与字符串
6.1.4 1维数组应用举例
[案例]定义长度都为10的整型数组a和b,完成以下各功能: (1)从键盘上任意输入10个整数,分别存放到a数组的10个数组元素中。 (2)求出a数组中各相邻两个元素的和,并将这些和存在b数组中。 (3)按每行3个元素的形式输出b数组各元素的值。 #define N 10 main() {int a[N],b[N],i; for(i=0;i<N;i++) scanf(“%d”,&a[i]); for(i=1;i<N;i++)b[i]=a[i]+a[i-1]; for(i=1;i<N;i++) { printf(“%4d”,b[i]); If(I%3= =0) printf(“\n”); } }
9876543210 说明:先使a[0]到a[9]的值分别为0—9,然后逆 序输出。
6.1.3 1维数组元素的初始化
数组的初始化就是在定义数组时给数组元素赋值。 初始化格式:
数据类型 数组名[常量表达式]={初值表} 初始化可以有以下方法实现: 1.给全部数组元素赋值。 例:int a[5]={8,10,1,1,2} 数据是依次包括在{}中,数据中间用逗号间隔,初始 化结果为:
2.1个数组元素,实质上就是1个变量,它具有和相 同类型单个变量一样的属性,可以对它进行赋值和参与各 种运算。
3.当数组的长度为N时,下标的取值范围为0,1, 2,……N-2,N-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]); } 运行结果:
5.1.2 数组元素的引用
c规定只能引用数组元素而不能一次引用整个数组。引 用数组中的任意一个元素的形式:
数组名[下标表达式]
1.“下标表达式”可以是任何整型常量或整型表达式。
例:a[0]=a[5]+a[7]-a[2*3]
特别强调:在运行C语言程序过程中,系统并不自动
检验数组元素的下标是否越界。因此在编写程序时,保证 数组下标不越界是十分重要的。
a[0] a[1] a[2] a[3] a[4] 8 10 1 1 2 给全部数组元素赋值时,可不制定数组长度。 例:int a[ ]={8,10,1,1,2}
2.给部分数组元素赋值 例:int a[5]={8,10,1} 初始化结果为:
a[0] a[1] a[2] a[3] a[4]
8 10 1 0 0 对部分数组元素赋值时,由于数组长度与提供的初值 不相等,所以数组长度不能省略。若int a[ ]={8,10,1} ,编译时系统会认为a数组的长度为3而不是5。 如果要使一个数组中全部元素为0,可以写成: int a[5]={0,0,0,0,0};或int a[5]={0}; 注意:如果对int型数组不赋初值,不要错误的以为每 个数组元素的值都自动为0。而是为随机值。但若在定 义数组时,前面加static保留字(为静态数值)则数组 元素被系统自动置初值0。 注意:不能先定义,后赋值。必须定义,赋值同步。
第5章 数 组
为了解决比较复杂的问题,本章介绍C语言提供的 一种最简单的构造类型──数组。
main()
{int a0,a1,a2,a3,a4;
scanf(“%d, %d, %d, %d, %d”, &a0, &a1, &a2, &a3, &a4);
printf(“%d, %d, %d, %d, %d\n”, a0, a1, a2, a3, a4);
运行时输入1 4 7 8 2 5 6 3 9 10,结果如下: 5 11 15 10 7 11 9 12 19
特别说明:在数组定义时,“常量表达式”
外的方括号;以及元素引用时,“下标表达式” 外的方括号,都是C语言语法规则所要求的,不 是本书所约定的可选项的描述符号!
(4)数组元素的下标,是元素相对于数组起 始地址的偏移量,所以从0开始顺序编号。
(5)数组名中存放的是一个地址常量,它代 表整个数组的首地址。同一数组中的所有元素, 按其下标的顺序占用一段连续的存储单元。