C语言程序设计教程一维数组应用
- 格式:pptx
- 大小:211.90 KB
- 文档页数:50
23.一维数组数组用于解决大批量数据的处理,本节课要求学生掌握一维数组的定义和应用,通过这些知识的学习,掌握成批数据的处理的一般方法,进一步提高应用程序编写的基本能力。
一、数组的概念在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
二、一维数组的定义在C语言中使用数组必须先进行类型说明。
数组说明的一般形式为:类型说明符数组名[常量表达式],……;其中,类型说明符是任一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:int a[10]; 说明整型数组a,有10个元素。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch,有20个元素。
对于数组类型说明应注意以下几点:1.数组的类型实际上是指数组元素的取值类型。
对于同一个数组,其所有元素的数据类型都是相同的。
2.数组名的书写规则应符合标识符的书写规定。
3.数组名不能与其它变量名相同,例如因整形变量与数组变量同名,是错误的。
4.方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5个元素。
但是其下标从0开始计算。
因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。
5.不能在方括号中用变量来表示元素的个数, 但是可以是符号常量或常量表达式。
例如:是合法的。
但是下述说明方式是错误的。
6.允许在同一个类型说明中,说明多个数组和多个变量。
例如: int a,b,c,d,k1[10],k2[20];三、一维数组的存储1、从逻辑角度看,一维数组可以认为是一个一行多列的表格。
5.1一维数组5.1.1找最小数【例5-1】输入10个整数,找出其中的最小数,然后输出这10个数和最小数。
参考程序如下:/*程序5-1.c*/#include<stdio.h>int main(){int i,min,a[10];/*定义数组*/printf("Enter data:");/*提示输入*/for(i=0;i<10;i++)scanf("%d",&a[i]);/*输入10个数*/min=a[0];/*假设下标为0的元素最小*/for(i=1;i<10;i++)/*找最小值a[i]*/if(a[i]<min)min=a[i];for(i=0;i<10;i++)printf("%2d",a[i]);printf("\nmin=%d\n",min);return0;}运行结果Enter data:32510941618373251094161837min=1数组的功能很明确,输入10个数,找出最小数,然后输出这10个数和最小数。
这就要求保存输入数据,并对它们进行处理,程序中用了一个整型数组,而不是若干个整型变量来存放它们。
定义一个整型数组a后,在内存中开辟了10个连续的单元,用于存放数组的10个元素a[0]~a[9]的值,这些元素的类型都是整型,有数组名a和下标唯一确定每个元素。
这些元素在内存中连续存放。
在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分。
5.1.2一维数组的定义定义一个数组,需要明确数组变量名,数组元素的类型和数组的大小。
定义一维数组的形式为:类型说明符数组名[常量表达式];例如:int a[5];它表示数组名为a,此数组有5个元素,每个元素都是整型。
编译系统为该数组在内存中分配5个连续的存储单元,这5个数组元素为a[0],a[1],a[2],a[3],a[4]。
学科:运算机科学与技术课程:C语言程序设计课题:一维数组课时:2教学目标:一、把握一维数组的概念和引用二、把握一维数组的初始化方式3、了解与一维数组有关的应用编程方式教学重点:一维数组的概念和引用、初始化方式教学难点:与一维数组有关的应用编程方式教学方式:举例法,引导法教学步骤:一、通过一个例子提出问题来引出本节课的知识点二、教学一维数组的概念和引用、初始化方式3、例如训练4、进行本节课的总结及作业布置教具:黑板运算机投影仪教学进程:一、导入:提问:保留一个班50位同窗的一门作业的成绩,而且找出最高分和最低分,应如何实现?解题思路:概念50个变量,从键盘中输入值,然后再彼此比较。
处置起来很复杂,是不是有更简便的方式?引出本节课的知识点-----数组。
二、教学:一、数组概述:·数组:是数量固定,类型相同的假设干个变量的有序集合,用数组名标识。
序:是数组元素之间的位置关系,不是元素值的大小顺序。
数组名:是用于区别其它数组及变量的。
·数组元素:集合中的变量,属同一数据类型,用数组名和下标确信。
下标:是数组元素在数组中的位置。
·数组的维数:数组名后所跟下标的个数。
二、一维数组的概念一维数组是指由一个下标数组元素组成的数组。
其概念形式为:存储类型数据类型数组名[常量表达式]例如:static int score[50];它表示概念了一个名为score的数组,该数组有50个元素,其存储类型为静态型,数据类型为整型。
说明:(1)存储类型为任选项,能够是auto、static、extern存储类型,可是没有register型。
(2)数据类型是用来讲明数组元素的类型:int , char , float。
(3)数组名的命名应遵守标识符的命名规那么,可是不能与其他变量同名。
(4)数组名后是用方括号[ ]括起来的常量表达式。
常量表达式表示的是数组元素的个数,即数组的长度。
在上例中概念了数组score [50],第一个元素为score [0],最后一个为score [49]。
全国计算机二级C语言程序设计讲义一维数组和二维数组一维数组和二维数组是C语言中非常基础且重要的概念。
通过使用数组,我们可以轻松地存储和处理大量的数据。
本文将详细介绍一维数组和二维数组的基本概念以及它们在C语言中的应用。
一维数组是指由相同类型的元素组成的线性序列,可以通过一个变量名和一个下标来引用其中的元素。
一维数组是在内存中连续存储的,可以按照位置索引访问元素。
例如,我们可以定义一个包含整数的一维数组:```cint numbers[5]; //定义一个包含5个整数的一维数组```对于上面的示例,我们可以通过下标来引用数组中的元素,并赋予它们特定的值:```cnumbers[0] = 10; //给数组中的第一个元素赋值为10numbers[1] = 20; //给数组中的第二个元素赋值为20//以此类推...```除了单个的变量名和下标来访问数组元素外,我们还可以使用循环结构来遍历整个数组,从而更方便地对数组进行操作:```cint i;for(i = 0; i < 5; i++)printf("%d ", numbers[i]); //输出数组中的元素```除了一维数组,C语言还支持多维数组,其中二维数组是最常见的。
二维数组本质上是由一组相同类型的一维数组构成的。
```cint matrix[3][4]; //定义一个3行4列的二维数组```可以通过两个下标来引用二维数组中的元素,第一个下标表示行号,第二个下标表示列号:```cmatrix[0][0] = 1; //给二维数组中的第一个元素赋值为1matrix[1][2] = 5; //给二维数组中的第二行第三列元素赋值为5//以此类推...```和一维数组一样,我们可以使用嵌套的循环结构来遍历整个二维数组:```cint i, j;for(i = 0; i < 3; i++)for(j = 0; j < 4; j++)printf("%d ", matrix[i][j]); //输出二维数组中的元素}printf("\n"); //换行```在实际应用中,一维数组和二维数组非常常见。
一维数组第2讲:应用举例1、读程,写出程序运行后的正确运行结果.main(){int n[2]={0},i,j,k=2;//赋值for(i=0;i<k;i++)for(j=0;j<k;j++){n[j]=n[i]+1;printf("%d,%d\n",j,n[j]);}//输出printf("\n**************\n");for(i=0;i<k;i++)printf("n[%d]=%d\n",i,n[i]);getch();}运行结果:2、程序填空求:100以内的素数。
(11_1.c)#include <stdio.h>#include <math.h>main(){int a[101],i,k,m;for(i=2;i<=100;i++) a[i]=1 ;for(i=2;i<=100;i++)if(a[i]==1){m=sqrt(i);for(k=2;k<=m;k++)if(i%k==0) a[i]=0;}//outputfor(i=1;i<=100;i++)if(a[i]==0) printf("%4d",i);getch();}【提示】素数是指,除了1和本身,没有其它因子的自然数。
最小素数为2.判断一个数是否为素数通常对所有可能的因子进行判断。
我们只须判断整数num,是否能被2~sqrt(num)范围内的整数整除,如果能,则不是,否则为素数。
3、读入10个数,输出偶数项,并打印它们的和,输出奇数项,并打印它们的平均值。
(11_2.c)4、读入10个数,打印其中的最大数和最小数及其位置号。
(11_3.c)5、有N盏灯,放在一排,从1到N依次顺序编号。
有N个人也从1到N依次编号。
第1个人(1号)将灯全部关闭;第2个人(2号)将凡是2的倍数的灯打开;第3个人(3号)将凡是3的倍数的灯做相反处理(该灯如是打开的,则将它关闭;如是关闭的,则将它打开)。
C语言程序设计教案课程:C程序设计制订日期:2015-11-7例如:定义数组int a[10];表示定义了一个整型的数组a,含有10个元素(每个元素都是整型)。
其说明如图6.1所示。
图6.1 数组定义的说明数组一旦定义,各数组元素名就确定了。
数组元素的一般形式为:数组名[下标]数组的第一个元素的下标总是从0开始的。
对于上面所定义的数组a[10],其元素依次为a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]。
其实,数组名代表的是数组的首地址,下标则是数组元素到数组开始的偏移量。
系统为数组在内存分配的是一片连续的存储的单元,如定义了“int a[10];”,则它的10个元素在内存中的排列情况如图6.2所示:图6.2 一维数组元素在内存中的排列情况2.一维数组的初始化数组初始化是指在数组定义时给数组元素赋予初值。
数组初始化是在编译阶段进行的。
这样将减少运行时间,提高效率。
数组初始化赋值的一般形式为:数据类型数组名[常量表达式] = {值,值,……,值};其中在{ }中的各数据值依次为各元素的初值,各值之间用逗号间隔。
例如:int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };相当于a[0] = 0; a[1] = 1; ...; a[9] = 9;数组初始化赋值的几点说明:(1)可以只给部分元素赋初值。
当{ }中数据值的个数少于元素个数时,只给前面部分元素赋值。
例如:int a[10] = {0, 1, 2, 3, 4};表示只给a[0]~a[4]这5个元素赋值,而后5个元素将被编译器自动赋0值。
如图6.3所示。
图6.3 未赋值的元素自动被0填充(2)只能给元素逐个赋值,不能给数组整体赋值。
例如:给十个元素全部赋1值,只能写为:int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};而不能写为:int a[10]=1;(3)如在定义数组时给全部元素赋初值,则在数组定义的说明中,可以不显式的指出数组容量,系统会以给出的数值个数默认为数组容量。
94类型标识符数组名[常量表达式]={值1,值2,…,值n};其中,花括号中的各个值依次赋给数组中对应的各个元素。
各个值之间用逗号隔开。
例如,数组定义及初始化语句为:int x[7]={1,2,3,4,7};则有:x[0]=1; x[1]=2; x[2]=3; x[3]=4; x[4]=7;在初始化一维数组时,有以下3种情况。
(1)若{ }中初值的个数<数组元素个数,则只有数组的前面一部分元素可以获得初值,后部分没有获得初值的元素则会赋相应类型的默认值(如int型置0,char型置空字符'\0',float型置实数0.000000等)。
例如:int a[5]={1,2,3};则有:a[0]=1; a[1]=2; a[2]=3; a[3]=0; a[4]=0。
(2)若{ }中初值的个数=数组元素个数,则在数组定义时可省略[ ]中的常量表达式,此时数组长度由系统根据{ }中值的个数来决定。
例如:int x[ ]={1,2,3,4,5};就相当于int x[5]={1,2,3,4,5}。
(3)若{ }中初值的个数>数组元素个数,则编译时会出现“too many initializers”之类的错误,表示初值个数太多。
例如,定义:int x[5]={1,2,3,4,5,6};是不合法的。
因为初值个数为6,超过了定义的数组长度5。
(4)若一个静态(static)或外部数组不进行初始化,则对数值型数组隐含初值为0,对字符数组,隐含初值为空字符'\0'。
7.1.2 一维数组的使用下面我们来讨论定义数组后如何使用数组。
1.一维数组的引用由于每一个数组元素其实可以看成一个独立变量,所以数组元素可以像普通变量一样参加各种运算,而数组却不能以整体形式参与各种运算,即在程序中不能一次引用整个数组而只能逐个引用数组元素。
一维数组元素的引用形式为:数组名[下标]其中,下标可以是整型常量、整型变量或整型表达式。