第7章 一维数组应用
一维数组应用 c语言 精品教案
一维数组应用 c语言精品教案下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一维数组应用 C语言精品教案一维数组是 C语言中非常重要且常用的数据结构。
C_C++语言程序设计基础-7-1一维数组
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
掌握一维和二维数组的定义和数组元素的引用方法(精)
static int arr[3][2]={{1, 2},{3}}; /*采用第①种赋初值方式*/ static int arr[3][2]={ 1, 2, 3}; /*采用第②种赋初值方式*/ 上面二种对数组arr部分元素赋初值的结果是相同的, 都是对数组arr的前面3个元素赋初值,后面叁个元素未 赋初值,系统自动化赋以0值。
12
§7.2 二维数组的定义和引用
在计算机中多维数组其实只是一个逻辑上的概念,在内 存中,多维数组只按元素的排列顺序存放,形成一个序 列,就好似一维数组一样。 §7.2.1 二维数组的概念
二维数组的应用很广,例如平面上的一组点的集合就可 用二维数组表示,平面上的点可用二维数组来表示:
08:47
13
⑦元素个数代表着数组的长度。
08:47 5
§7.1.2 一维数组使用
数组一经定义后,就可在程序中使用,使用格式如下: 数组名[下标] 例如 : var[3]=28; var[4]=var[2]; str[3]= ‘d’; str[2]=str[4]; printf(“%d”, a[0]); 说明: ①下标可以是整数或整型表 达式 。如:var[i+j]=2; ②C编译不检查下标是否 “出界”。
下标的值不应超过数组的长度,如var数组的长度为5, 则下标的取值在0~4的范围内。
08:47 6
【例7-1】 一维数组在程序中的使用
/*exam7_1.c 一维数组在程序中的使用*/ #include <stdio.h> main() { int i,a[5]={1,2,3,4,5}; /*初始化数组*/ printf("输出数组元素的正确值: \n"); for(i=0;i<5;i++) printf("%d\t",a[i]); printf("\n输出超出下标的元素的值:\n"); for(i=5;i<10;i++) /*使用超出下标的元素*/ printf("%d\t",a[i]); printf("\n改变数组元素的值:\n");
一维数组应用的原理
一维数组应用的原理什么是一维数组一维数组是计算机科学中的一种基本数据结构,它是由相同类型的数据元素组成的有序集合。
一维数组中的每个元素都可以通过一个索引值来访问,这个索引值是一个非负整数,表示元素在数组中的位置。
一维数组的定义与声明在大多数编程语言中,一维数组可以通过以下方式来定义和声明:类型名数组名[数组长度];其中类型名表示数组中元素的类型,数组名是为数组分配的内存空间的标识符,数组长度表示数组的容量。
一维数组的使用场景一维数组在计算机科学中有广泛的应用场景,以下是一些常见的场景: - 存储一组数据:一维数组可以用来存储一组相关的数据,例如存储学生成绩、存储员工工资等。
- 索引和遍历:通过使用索引值,可以方便地访问和操作数组中的元素。
同时,利用循环结构可以对一维数组进行遍历操作。
- 参数传递:一维数组可以作为函数的参数进行传递,通过传递数组的指针可以避免复制整个数组的开销。
- 逻辑处理:一维数组可以方便地进行各种逻辑处理,例如排序、查找最大值、求和等。
一维数组的访问和操作访问数组元素一维数组中的每个元素都可以通过索引值来访问,索引值的范围通常是从0到数组长度减1。
例如,对于一个长度为10的数组,索引值的范围是0到9。
通过以下方式可以访问数组元素:数组名[索引值]修改数组元素的值一维数组中的元素可以通过赋值操作来修改其值。
例如,要将数组中的某个元素修改为新的值,可以使用以下表达式:数组名[索引值] = 新值增加和删除数组元素一维数组的长度是固定的,一旦定义了数组的长度,就不能再改变。
因此,一维数组的长度不支持增加和删除元素的操作。
但是,可以通过重新定义一个新的数组,将原来的数组元素复制到新数组中来实现增删元素的效果。
一维数组的常见应用示例存储学生成绩一维数组可以用来存储学生成绩,例如,定义一个长度为5的一维数组,可以存储5个学生的成绩。
通过遍历数组可以计算平均成绩、找到最高分等。
```markdown float scores[5]; // 定义长度为5的一维数组// 输入学生成绩 for (int i = 0; i < 5; i++) { cout <<。
实验7 一维数组的应用
实验7 一维数组的应用一、实验目的(1)掌握一维数组的定义及初始化方法。
(2)掌握利用一维数组解决问题的常用编程方法。
二、实验内容1.把一个一维数组中所有的奇数放在另一个数组中并输出,一维数组的数据由初始化方式提供。
在编写源程序前请思考如下问题:算法描述:(1)先定义两个大小相同的数组a和b,并将第一个数组初始化(2)分别用两个变量i和j控制两个数组的下标值的变化,初始值都为0 (3)用循环对a数组的每个元素依次进行处理,如果a[i]是奇数,则将a[i]赋给b[j],同时让i加1、j也加1,否则只让i加1,继续对下一个元素进行处理。
#include<iostream>using namespace std;int main(){int a[10],b[10],i,j;cout<<"请输入十个数:"<<endl;for(i=0,j=0;i<10;i++,j++){cin>>a[i];if(a[i]%2==1){b[j]=a[i];cout<<"输入的奇数是:"<<b[j]<<endl;}elsecout<<"没有输入奇数"<<endl;return 0;}}2.将一维数组中的每一个元素向后移动一个位置,最后的元素移到第一个位置。
数组大小由一个符号常量N决定,数组元素的值由随机函数产生。
Rand算法描述:先数组最后一个元素保存在一个临时变量中,然后将倒数第二的元素移到最后一个位置上,再将倒数第三的元素移到倒数第二的位置上,依此类推,最后保存在临时变量中最后元素移到第一的位置。
3.使用键盘为一维数组输入10个整数,然后输出数组的所有元素、并输出最大值、最小值和平均值。
算法描述:找最大数的算法类似于打擂台,先定义一个变量max用来在放最大数(充当擂台),开始假设第一个数就是最大数,然后其后的数依次和max中的数进行比较,如果比max中的数大则取代它,否则max中的数不变,最后留在max中的数就是最大数。
第7章 一维数组应用 1
第七章 数组
4、程序设计 、 功能:求小于lim的所有素数并放在 数组中, 的所有素数并放在aa数组中 功能:求小于 的所有素数并放在 数组中,该函数返回 所求出素数的个数。 所求出素数的个数。 # include <stdio.h> # inculde <conio.h> # define MAX 100 int fun (int lim,int aa[MAX]) { int n=0,i,j; /***************program**************/
第七章 数组
一维数组的应用: 一维数组的应用:
1、读程序写结果: 、读程序写结果:
一维数组的应用即对元素的引用有哪些? 一维数组的应用即对元素的引用有哪些? void main () 1、通常与 循环结合使用。 循环结合使用。 、通常与for循环结合使用 {、一维数组的输出。 int x,y,z; 2、一维数组的输出。 int ( ]={-4,0,10,2,7,-1,19,-22,33,0}; a[ 正序、逆序) 正序、逆序) 3、数组元素赋值。 、数组元素赋值。 x=y=z=0; 通过键盘赋值, for通过键盘赋值, (i=0;i<10;i++) 通过程序运行中获取值 { if (a[i]<0) 利用rand()函数获取值,等办法。 ()函数获取值 利用 ()函数获取值,等办法。
第七章 数组
3、程序 、 题目:函数main()首先从键盘接受 个整数,依次放在数组 首先从键盘接受10个整数 题目:函数 首先从键盘接受 个整数, a中;其次,调用 函数在这10个整数中找出第一个奇数 中 其次,调用fun()函数在这 个整数中找出第一个奇数, 函数在这 个整数中找出第一个奇数, 并返回该数的下标值,如果在这10个数中无奇数 则返回-1 个数中无奇数, 并返回该数的下标值,如果在这 个数中无奇数,则返回 第三,如果fun()函数返回值不等于 ,则把找到的数与第 函数返回值不等于-1, ;第三,如果 函数返回值不等于 一个数交换。 一个数交换。 # include <stdio.h> # define N 20 int fun (int a[20]) { int i; for (i=0;i<10;i++) {/*************FOUND***************/ (a[i]%2==1)或(a[i]%2) 或 if (a[i]&1==0) break;} /***************FOUND***************/ i if (i<10) return 1; else return -1; }
一维数组的定义和引用
• unsigned int *p; p=sing; while (*p) { sound(*p++); delay(*p++);
nosound(); } }
§7.2 二维数组的定义和引用
• 7.2.1 二维数组的定义与引用
类型说明符 数组名[常量表达式][常量表
达式]
说明:元素的排列顺序是
按行存放的,这在数组初始化和指针表
9 8 8 8 8 8 8 5 55 5
8 9 5 5 5 5 5 8 44 4
5 5 9 4 4 4 4 4 82 2
4 4 4 9 2 2 2 2 28 0
2 2 2 2 9 0 0 0 00 8
0 0 0 0 09
输入n个数给a[1]到a[n] For j=1 to n-1
For i=1 to n-j
• 表示形式: 数组名[下标] • 下标可以是整型常量或表达式。例如: • a[0]=a[5]+a[7]-a[2*3]
• EG: main( ) {
• int i, a[10] ; • for (i=0;i<=9;i++) • a[i]=i ; • for (i=9;i>=0;i– –) • printf(“%d”,a[i]); •} • 运行结果: • 9876543210
1 000 5600 0000
•int a[3[4]={{1},{},{6}};
1000 0000 6000
4.若对全部元素赋值,第一维的长度可省略, 但第二维的长度不可省.
static int a[2][2]={1,2,3,4}; 等同于 static int a[ ][2]={1,2,3,4};
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
《一维数组的应用》授课课件
数组的下标都有一个范围,即“0~[数组长度-1]”
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
array[0]=1;
int[] array={1,1,2,……};
教学过程 ON 案例导入 任务1 任务二:计票
任务一:写票
☺ 介绍候选人
任务2
任务3 评价总结 布置作业
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
10个 变量
int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
一维数组的定义
int[] array=new int[10];
教学过程 ON 案例导入 任务1 任务2 任务三:找最高票
比较a1,a2,a3的大小
任务3 评价总结 布置作业
1
比较a1和 a2,找出
较大值
2
用较大值 与a3比较
3
找到最大 值
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
任2
任务3 评价总结 布置作业
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
遍历
如果有人投1 1号候选人的票数+1
for(i=0;i<10;i++) {}
if(a[i]==1) a1++;
数组的基本概念一维数组二维数组字符数组数组的应用举例
但变量间不存在确定的相互关系。
数组的概念引入
用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序。
3 名?
30 名?
数组的基本概念
数组:一种常用的构造型数据类型。 由具有固定数目 相同类型 的元素按一定顺序排列。
特点: 1、数组元素的个数是确定,不可改变,元素值可变 2、数组元素的类型必须相同,不允许混合。
判断
错误: int n=5; int a[n]; 正确: #define N 5 int a[N];
正确: int a[10], b[5][4]; char name[8], ch[2][3]; float x[8*2+1], table[2][3][4]; #define NUM 40; int a[NUM], b[NUM+2];
比较n-2次
这种排序方法之所以叫“冒泡法”,是因为在排序过程 中,较小的数象气泡一样逐渐往前冒(向上冒),大的 数逐渐向后沉,最终完成排序。
起泡排序
对具有n个元素的序列按升序进行起泡排序的步骤: • 首先将第一个元素与第二个元素进行比较,若为 逆序,则将两元素交换。然后比较第二、第三个 元素,依次类推,直到第n-1和第n个元素进行了 比较和交换。此过程称为第一趟起泡排序。 经过第一趟,最大的元素便被交换到第n个位置。 • 对前n-1个元素进行第二趟起泡排序,将其中最大 元素交换到第n-1个位置。 • 如此继续,直到某一趟排序未发生任何交换时, 排序完毕。对n个元素的序列,起泡排序最多需要 进行n-1趟。
定义时赋值
1、对数组的全部元素赋初值。 int a[3]={3,6,9}; a[0]=3; a[1]=6; a[2]=9; 2、对数组的部分元素赋初值。 int a[4]={3,6,9} ; a[0]=3; a[1]=6; a[2]=9; a[3]=0; 3、对全部数组元素赋初值时,可以不指定数组长度。但若提供 初值的个数与定义的数组长度不一样,则数组长度不能省略。 int a[]={3,6,9}; int a[3]; a[0]=3; a[1]=6; a[2]=9;
一维数组应用
一维数组的相关应用1.数组的定义:定义格式:数据类型数组名[数组的长度]其中:数据类型就是前面讲到的int、float、long、double、char等基本类型,当然也可以是我们后面还要介绍的其他类型(此处暂不考虑)。
数组名与普通变量的起名规则是一样的。
但不能与同一函数中的其他任何变量起一样的名字。
数组的长度定义是数组的长度只能是常量或常量表达式,否则就会出现编译错误。
例如:我们要定义一个整型数组,它里面能够存放10个元素,则应该定义成如下形式:int a[10];其他类型的数组与此类似,如:float f1[5], f2[10];long long1[10], long2[50];char ch1[30], ch2[10];也可以采用常量表达式来定义:如#define N 100main() {float num[N]; //定义了具有N个浮点型数据元素的数组,其中N为常量…}以下列举一些关于数组的应用,记住一点,数组的操作跟循环是息息相关的。
一维数组对应单重循环,后面要讲的二维数组对应的是二重循环。
2.给一维数组元素赋值:程序如下#include <stdio.h>main() { myfunc( ); }myfunc( ) {int a[10], i;printf(“input ten int number:\n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i<10; i++)scanf(“%d”, &a[i]);}3.一维数组元素的输出:程序如下#include <stdio.h>main() { myfunc( ); }myfunc( ){int a[10], i;printf(“input ten int number:\n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/ for (i=0; i<10; i++)scanf(“%d”, &a[i]);/*下面的代码,将已经赋值的数组各元素输出到屏幕上*/for (i=0; i<10; i++)printf(“%d “, a[i]);}4.对一维数组元素进行相应处理后再输出。
02-一维数组的应用(上)
C语言程序设计第7章数组——一维数组的应用(上)主讲人:王燕C 语言程序设计例1: 从键盘输入一批正整数,求它们的累加和及平均值。
例2: 对整型数组进行逆置,并输出逆置后的结果。
第7章 数组——一维数组典型案例 一维数组的定义: 元素类型名 数组名[常量表达式]例:int a[5];例1:从键盘上输入一批正整数,求它们的累加和,及平均值。
⏹问题分析:☐1)定义长度为N(大于实际个数)的整型数组。
☐2)循环读入一批整数并存于数组中。
☐3)遍历数组,求出累加和。
☐3)输出累加和及平均值⏹代码实现:main(){ int i, a[N],n,sum=0;printf("please input the data:");for(i=0; ;i++){ scanf("%d",&a[i]);if(a[i]<0)break;}n=i;for(i=0; i<n; i++)sum+=a[i];printf("the sum is %d\n",sum);printf("the average is %.2f\n",1.0*sum/n);例2:将数组中的n个整数逆置。
逆置是指将数组中的元素按照与原来位置顺序相反的顺序重新存放。
例如:若原来序列为: 3,1,5,2,7逆置后序列为:7,2,5,1,3例2:将数组中的n个整数逆置。
⏹问题分析:☐1)定义长度为N(大于实际个数)的整型数组。
☐2)读入个数n。
☐3)循环读入n个整数并存于数组中。
☐4)遍历数组的一半元素,首尾依次交换。
☐5)输出逆置后的结果。
⏹代码实现:C 语言程序设计 第7章 数组——一维数组典型案例 main() { int i, n, arr[50], t;printf("Please input the size of array:\n"); scanf("%d", &n);printf("\nPlease input %d integers:\n",n); for(i=0; i<n; i++)scanf("%d", &arr[i] );for(i=0; i<n/2; i++) /*从前到后逆置的数组*/ { t=arr[i];arr[i]=arr[n-i-1];arr[n-i-1]=t;}for(i=0; i<n; i++) /*输出逆置后的数组*/ printf("%d ", arr[i] );C语言程序设计谢谢大家!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章 数组
例如:一维数组: 例如:一维数组: mark[100]; float mark[100]; 低地址 每个数据元素占用 的字节数,就是基 的字节数,就是基 类型的字节数 类型的字节数 一个元素占4个 一个元素占 个字节
高地址
86.5 92.0 77.5 52.0
. . . 94.0
mark[0] mark[1] mark[2] mark[3]
第七章 数组
第7章 数组
7.1 一维数组
7.1 一维数组 数组是一组有序数据的集合 有序数据的集合, 数组是一组有序数据的集合,数组中每一个元 素的类型相同 类型相同。 数组名和下标来唯一确定数 素的类型相同。用数组名和下标来唯一确定数 组中的元素。 组中的元素。 7.1.1 一维数组的定义(先定义后使用)全部元素均指定初值,定义中可以省略元素的个数, 如果全部元素均指定初值,定义中可以省略元素的个数, 可以省略元素的个数 例: static int a[5] = {1,2,3,4,5}; 可以写为: 可以写为: static int a[ ] = {1,2,3,4,5}; 两种写法一样效果, 两种写法一样效果,系统会自动根据元素的个数来确定数组的 大小,但是如果是局部制定元素值则不能省略长度值。例如: 大小,但是如果是局部制定元素值则不能省略长度值。例如: {1,2,3};不可以写为 不可以写为: static int a[5] = {1,2,3};不可以写为: {1,2,3};这样系统会自动根据初始值 static int a[ ] = {1,2,3};这样系统会自动根据初始值 个数来认为数组只含有三个元素,即默认其长度为3 个数来认为数组只含有三个元素,即默认其长度为3。 5、与给变量初始化不同的是给数组初始化只能在定义时进行, 与给变量初始化不同的是给数组初始化只能在定义时进行, {1,2,3};不能写成 不能写成: 如: static int a[5] = {1,2,3};不能写成: static int a[5]; a[5] = {1,2,3};(因为a[5]指单个元素) {1,2,3};(因为a[5]指单个元素) a[5]指单个元素
第七章 数组
特别强调:
1.
2.
3. 4.
在运行C语言程序过程中,系统并不自动检验 并不自动检验数组元 在运行 C 语言程序过程中,系统 并不自动检验数组元 素的下标是否越界 因此在编写程序时, 越界。 素的下标是否越界。因此在编写程序时,保证数组下 标不越界是十分重要的。 标不越界是十分重要的。 个数组元素,实质上就是1个变量, 1 个数组元素 , 实质上就是1 个变量 ,它具有 和相同 类型简单变量一样的属性, 类型简单变量一样的属性,可以对它进行赋值和参与 各种运算。 各种运算。 语言中,数组作为1个整体,不能参加数据运算, 在C语言中,数组作为1个整体,不能参加数据运算, 单个的元素进行处理 只能对单个的元素进行处理。 只能对单个的元素进行处理。 通常用数组和循环配合使用,来引用数组元素。 通常用数组和循环配合使用,来引用数组元素。
第七章 数组
5) C编译程序为数组分配了一片 连续 的空间 。 ) 编译程序为数组分配了一片 连续的空间 编译程序为数组分配了一片连续 的空间。 每个元素占用一个类型长度的空间, 每个元素占用一个类型长度的空间,空间的大 类型长度*数组长度 小=类型长度 数组长度。例 int a[10];在内存 类型长度 数组长度。 在内存 开辟的空间大小为20B( int的类型长度 ) *10 的类型长度) 开辟的空间大小为 ( 的类型长度 数组长度) 其中每个元素占2B (数组长度),其中每个元素占 6) 类型说明 : 指的是 数据元素 的类型 , 可以是 数据元素的类型 ) 类型说明: 指的是数据元素 的类型, 基本数据类型,也可以是构造数据类型。 基本数据类型,也可以是构造数据类型。类型 说明确定了每个数据占用的内存字节数,系统 说明确定了每个数据占用的内存字节数, 将根据数组类型和数组长度值的乘积来给数组 分配连续长度的内存空间。 分配连续长度的内存空间。 如下例: 如下例:
数组定义的一般形式: 数组定义的一般形式:
数组名[整型常量表达式 整型常量表达式] 类型说明符 数组名 整型常量表达式 例: int a[10]
第七章 数组
表示以下信息: int a[10] 表示以下信息: 定义一个数组,数组名a 10个元素 个元素, 定义一个数组,数组名a,有10个元素,每个元素的类型均为 int。 int。 10个元素分别是 a[0]、a[1]、....、a[8]、a[9]。 个元素分别是: 这10个元素分别是:a[0]、a[1]、....、a[8]、a[9]。 各个数组元素是排成一行 的一组下标变量, 排成一行的一组下标变量 各个数组元素是 排成一行 的一组下标变量 , 用一个统一的 数组名来标识,用一个下标来指示其在数组中的位置。 数组名来标识,用一个下标来指示其在数组中的位置。 说明: 说明: 数组下标从0开始。 数组a的第1个元素是a[0] a[0], 1)数组下标从0开始。如:数组a的第1个元素是a[0],数组 的第8个元素是a[7]数组a[n] 中的元素从a[0]到 a[n-1]共 的第8个元素是a[7]数组a[n] 中的元素从a[0]到 a[n-1]共 a[7]数组 a[0] n个。 2)C语言不允许对数组的大小做动态定义,如: 语言不允许对数组的大小做动态定义, int n; scanf("%d",&n); int a[n]; 因为在编译时, 编译器根据已知数组大小分配内存 编译器根据已知数组大小分配内存, 因为在编译时,C编译器根据已知数组大小分配内存,以后 不再动态调整。 不再动态调整。
x++; else if (a[i]==0) y++; else z++; } printf (“%d\t%d\t%d”,x,y,z); }
运行结果: 运行结果: 3 2 5
第七章 数组
2、下列程序是对一维数组的10个元素的前五个与后五个首尾对换即 、下列程序是对一维数组的 个元素的前五个与后五个首尾对换即 a[0]与a[9] 、a[1]与a[8]……a[4]与a[5],请阅读程序并补充程序。 与 与 与 ,请阅读程序并补充程序。 void main ( ) { int i, t,a[10]={3,5,7,9,11,18,16,14,12,10}; for (i=0;i<10;1++) printf (“a[%d]=%-4d”,i,a[i]); printf (“\n”); for ( i=0 ; i<4 ; i++ ) { ; t=a[i]; ; a[i]=a[9-i]; a[9-i]=t; ; } for (i=0;i<10;1++) printf (“a[%d]=%-4d”,i,a[i]); }
. . . mark[99]
第七章 数组
7.1.2 一维数组的初始化 .1.2 初始化:在定义时指定初始值 指定初始值, 初始化:在定义时指定初始值,编译器把初值 赋给数组元素变量。例如: 赋给数组元素变量。例如: a[10]={0,1,2,3,4,5,6,7,8,9}; int a[10]={0,1,2,3,4,5,6,7,8,9}; 赋值:使用赋值语句, 赋值:使用赋值语句,在程序运行时把值赋给 数组元素变量。例如: 数组元素变量。例如: int a[10];a[0] = 2; 初始化格式: 初始化格式: 数组名[常量表达式] 初值表} 数据类型 数组名[常量表达式]={初值表}; 初始值有多个时,值之间用逗号分隔。 初始值有多个时,值之间用逗号分隔。
第七章 数组
3) 数组名 : 数组名也是标识符 , 所以对数组名 ) 数组名: 数组名也是标识符, 标识符规则。 的命名也应该按标识符规则 的命名也应该按标识符规则。 4) 整型常量表达式 : 表示数组元素 个数 ( 数组 个数( ) 整型常量表达式: 表示数组元素个数 长度) 可以是整型常量或符号常量 符号常量, 的长度)。可以是整型常量或符号常量,不允 许用变量。 许用变量。整型常量表达式在说明数组元素个 数的同时也确定了数组元素下标的范围, 同时也确定了数组元素下标的范围 数的同时也确定了数组元素下标的范围,下标 开始~ 从0开始~整型常量表达式的值 开始 整型常量表达式的值-1 提醒: 提醒: C语言 不检查数组下标越界 , 但是使用时 , 一 语言不检查数组下标越界 语言 不检查数组下标越界, 但是使用时, 不能越界使用 否则结果难以预料, 使用, 般不能越界使用,否则结果难以预料,轻则影 响程序运行结果,重则导致系统无法运行。 响程序运行结果,重则导致系统无法运行。本 例数组元素个数是10个 下标从0-9。 例数组元素个数是 个,下标从 。
第七章 数组
一维数组的应用: 一维数组的应用:
1、读程序写结果: 、读程序写结果:
一维数组的应用即对元素的引用有哪些? 一维数组的应用即对元素的引用有哪些? void main () 1、通常与 循环结合使用。 循环结合使用。 、通常与for循环结合使用 {、一维数组的输出。 int x,y,z; 2、一维数组的输出。 int ( ]={-4,0,10,2,7,-1,19,-22,33,0}; a[ 正序、逆序) 正序、逆序) 3、数组元素赋值。 、数组元素赋值。 x=y=z=0; 通过键盘赋值, for通过键盘赋值, (i=0;i<10;i++) 通过程序运行中获取值 { if (a[i]<0) 利用rand()函数获取值,等办法。 ()函数获取值 利用 ()函数获取值,等办法。
第七章 数组
1、一般初始化,把全体元素在定义时初始化,例: 一般初始化,把全体元素在定义时初始化, static int a[10]= { 0,1,2,3,4,5,6,7,8,9} {1,2,3,4,5,6,7,8,9,10}; 和int array[10] = {1,2,3,4,5,6,7,8,9,10};但 {}中元素个数不能超出数组长度 中元素个数不能超出数组长度。 是{}中元素个数不能超出数组长度。 部分元素初始化,其余元素均为零。 2、部分元素初始化,其余元素均为零。 {0,1,2,3,4}; 例:static int a[10] = {0,1,2,3,4}; 仅前5个元素赋初值, 个元素自动赋为0 仅前5个元素赋初值,后5个元素自动赋为0。 全部元素均初始化为0 例如: 3、全部元素均初始化为0。例如: static int a[10] = {0,0,0,0,0,0,0,0,0,0}; 可以简写成: 可以简写成:int a[10]={0}; [ ]