全国计算机二级C语言程序设计讲义一维数组和二维数组

合集下载

数组(一维与二维)

数组(一维与二维)

• 例 有一个3×4的矩阵,求出其中最大值,以及它所在的行和列。 main() { int i,j,r=0,c=0,max; static int a[3][4]={{1,5,3,4},{9,8,7,6},{-8,20,1,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; } printf(″max=%d,r=%d,c=%d\n″,max,r,c); }
注意:数组元素的下标(行 static 数据类型 二维数组名[常量][常量]={{常量列
表},…};
功能: 定义一个二维数组,并给每个数组元素赋初值。
(1)分行给二维数组赋初值。
static int a[3][4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (2)将所有数据写在一个花括弧内,按数组排列的顺序对各元素 赋初值。 static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)可以对部分元素赋初值。


一维数组的定义和引用
二维数组的定义和引用
字符数组
一维数组的定义和引用
1.1 一维数组的定义 格式: [存储类型] 数据类型 数组名[常量表达式]; 功能: 定义一个一维数组,常量表达式的值,就是数组元素的个 数。 例如:int a[10]; 表明数组名为a,此数组有10个元素.
说明:
(1)数组名规定和变量名相同,遵守标识符命名规则。 (2)数组名后是用方括弧括起来的常量表达式,不能为圆括弧。
2.4 二维数组应用举例 • 例 求一个3×3矩阵的主对角线之和。 main() { static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum=sum+a[i][j]; printf(“sum=%d”,sum); } 运行结果: sum=15

计算机二级(8)

计算机二级(8)

第八课数组一、数组的概念一组具有同一类型的变量,这些变量在内存中占有连续的存储单元。

在程序中这些变量具有相同的名字,但具有不同的下标。

二、一维数组的定义,引用,赋值1、定义类型名数组名[常量表达],……;int a[8];2、引用数组名[下标表达式]3、初始化int a[8]={0,1,2,3,4,5,6,7,};int a[10]={0};char c[5]={@};int a[ ]={0,0,0,0,0,0,0,0,0};三、一维数组和指针在C中,数组名可以认为是一个存放地址值的指针变量,其值是数组第一个元素的地址,这个指针变量中的值不可变引用数组可通过首地址,和指针来进行例:已知存放在a数组中的数不相重,在a数组中查找和x值相同的元素的位置。

若找到输出该值和该值在a数组中的位置,若没找到,输出相应的信息。

#include <stdio.h>#define Num 30main(){int a[Num],x,n,p;n=arrin(a);printf(“Enter the number to search:x=”);scanf(“%d”,&x);p=search(a,x,n);if(p!=-1)printf(“%dindex is:%d\n”,x,p);else printf(“%d don‟t be found!\n”,x);}arrin(int *a){int I,n;do{printf(“Enter number of elements,0<I<%d:”,Num);scanf(“%d”,&n);}while((n<1)||(n>=Num));printf(“Enter %d integer number :\n”,n);for(I=0;I<n;I++)scanf(“%d”,a+I);return n;}seach(int *a,int x,int n){int I,p;I=0;a[n]=x;while(x!=a[I]) I++;if(I= =n) p=-1;else p=I;return p;}例:用选择法对数组中的数进行排序(按由小到大顺序)#include <stdio.h>#define Num 6void arrsort(int [ ] ,int);void arrout(int *,int);main(){int a[Num]={5,7,4,2,8,6};arrout(a,Num);arrsort(a,Num);arrout(a,Num);}void arrsort(int *a,int n){int I,j,p,t;for(j=0;j<n-1;j++){p=j;for(I=j+1;I<n;I++)if(a[p]>a[I]) p=I;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}void arrout(int a[ ],int n){int I;for(I=0;I<n;I++)printf(“%d”,a[I]);putchar(…\n‟);}四,二维数组1、定义类型名数组名[常量表达式1][常量表达式2];2、引用数组名[下标表达式1][下标表达式2]3、初始化int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};int a[4][3]={{1,2},{4,5},{7},{10}};int a[4][3]={{1,2},{4,5}};int a[4][3]={1,2,4,5};int a[ ][3]={{1,2,3},{4,5},{6},{8}};4、二维数组和指针a、二维数组a由若干个一维数组组成a[I]b、二维数组名也是一个地址常量例:编写程序,打印出以下形式的杨辉三角形11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#include<stdio.h>#define N 10main(){int y[N][N],n=7;setdata(y,n);outdata(y,n);}setdata(int (*s)[n], int n){int I,j;for(I=0;I<n;I++){s[I][I]=1; s[I][0]=1;}for(I=2;I<n;I++)for(j=1;j<I;j++)s[I][j]=s[I-1][j-1]+s[I-1][j];}outdata(int s[ ] [n], int n){int I, j;printf(“杨辉三角形:\n”);for( I=0; I<n; I++){for(j=0; j< =I; j++)printf(“%6d”,s[I][j]);Printf(“ \n”);}}作业:1、编写函数对具有10个整数的数组进行如下操作:从第1个元素直到最后一个元素,依次向前移动一个位置,输出移动后的结果2、求两个矩阵的和3、九九乘法表。

《二级C语言程序设计》第7章 数组

《二级C语言程序设计》第7章 数组
在定义数组时,允许对静态(数组定义前加有 在定义数组时,允许对静态 数组定义前加有 静态 数组定义前加有static保留 保留 字)数组、外部数组(定义于所有函数以及复合语句之外 数组、外部数组 定义于所有函数以及复合语句之外) 数组 定义于所有函数以及复合语句之外 定义的auto型数组进行初始化。 型数组进行初始化。 及main()定义的 定义的 型数组进行初始化
3
7 16 28 36 41
2
7 16 28 36 41
1
语言描述: 语言描述: for(i=0;i<n-1;i++) 要求学生写出完整程序 { k=i; for(j=i+1;j<n;j++) 指示当前比较的最小值下标*/ if(a[j]<a[k]) k=j; /*k指示当前比较的最小值下标 指示当前比较的最小值下标 if(k!=i) {t=a[i];a[i]=a[k];a[k]=t;} }
7.2.3 应用举例
例7.5:输入一个三行四列的矩阵 ,计算其转 :输入一个三行四列的矩阵A, 置矩阵B,输出矩阵B。 置矩阵 ,输出矩阵 。
1 4
A 2 3 5 6
B
b[j][i]=a[i][j]
1 4 2 5 3 6
7.2.3 应用举例
程序:
#include<stdio.h> main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf("array a:\n"); for (i=0;i<=1;i++) { for (j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for (i=0;i<=2;i++) { for (j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } }

计算机二级C语言程序设计第6讲数组PPT课件

计算机二级C语言程序设计第6讲数组PPT课件
思考:如何从键盘给数组赋值, 如何输出?
循环
8
求数组元素的最大值
a[0]
a[1]
a[2]
a[3]
a[4]
12
29
96
45
17
max=a[0]=12max=a[1]=m29ax=a[2]=96
9
示例1(max.c):求数组元素的最大值 #include<stdio.h> main() {
int i,a[10],max; for(i=0;i<10;i++)
i=j=x[0]; p0=p1=0;
for(m=0;m<n; m++)
{ if(x[m]>i) {i=x[m]; p0=m;}
else if(x[m]<j) {j=x[m]; p1=m; }
}
t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;
t=x[p1];x[p1]= _______; ________=t; }
3 7 15
21
2008年4月
1、执行以下程序的输出结果是: #include <stdio.h> main() {int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++) c[s[i]]++; for (i=1;i<5;i++) printf(“%d”,c[i]); printf(“\n”); }
3.在C语言中,数组作为1个整体,不能参加数据运算,只能 对单个的元素进行处理。
示例:数组元素的输入、输出
6
[Return]

c语言二级考试重点第9章-数组

c语言二级考试重点第9章-数组
int b[3][2],i,j; printf(“array a:\n”); for(i=0;i<=1;i++) { for(j=0;j<=2;j++)
{ printf(“%5d”,a[i][j]); b[j][i]=a[i][j];
} printf(“\n”); }
a= 1 2 3 456
14 b= 2 5
的地址)
第9页,共49页。
考点1
• 首先让p指向数组a的首地址,那么:
• p+0就指向a[0]单元 • p+1就指向a[1]单元 •…
• p+i就指向a[i]单元 • i范围是0—9 • 现在,我们要引用指针所指向的存储单元,就可以用*(p+i)。 • *(p+0)就可以表示a[0]元素 • *(p+1)就可以表示a[1]元素
• 。。 • *(p+i)就可以表示a[i]元素
第10页,共49页。
考点1
• #include <stdio.h>
• void main()
•{

int a[10],i,*p;

p=a;

for (i=0;i<10;i++)

{

scanf("%d",p+i);


}//将数据存放到a[0]---a[9]
第25页,共49页。
考点4 二维数组元素的引用
• 2.通过地址来引用二维数组元素 • ①*(&a[i][j])//等价于a[i][j] • ②*(a[i]+j) • ③*(*(a+i)+j) • ④*(&a[0][0]+4*i+j) • ⑤*(a[0] +4*i+j)

全国计算机二级C语言数组知识点归纳

全国计算机二级C语言数组知识点归纳

全国计算机二级C语言数组知识点归纳全国计算机二级C语言数组知识点归纳【考点1】数组的定义数组是一组具有相同类型的数据的集合,这些数据称为数组元素。

格式为:类型名数组名[常量表达式]。

数组的所占字节数为元素个数与基类型所占字节数的乘积。

【考点2】数组的初始化第一维长度可以不写,其它维必须写。

int a[]={1,2};合法,int a[][3]={2,3,4};合法,int a[2][]={2,3,4};非法。

数组初始化元素值默认为0,没有初始化元素值为随机。

如在int a[5]={0,1,2};中,元素a[4]值为0;而在int a[5];中,元素a[4]值为一个不确定的`随机数。

【考点3】元素的引用数组元素的下标从0开始,到数组长度减1结束。

所以int a[5];中数组最后一个元素是a[4]。

要把数组元素看作一个整体,可以把a[4]当作一个整型变量。

【考点4】二维数组数组a[2][3]={1,2,3,4,5,6};中含6个元素,有2行3列。

第一行为a[0]行,第2行为a[1]行,a[0]、a[1]叫行首地址,是地址常量。

*(a[0]+1)是第一行第一个元素往后跳一列,即元素a[0][1]值为2,*(a[0]+3)是第一行第一个元素往后跳三个,即元素a[1][0]值为4。

【考点5】行指针是一个指针变量,占四个字节,行指针指向一行连续数据,形式为:int(*p)[2];,p只能存放含有两个整型元素的一维数组的首地址。

注意(*p)两边的小括号不能省略,否则就成了指针数组,是若干指针元素的集合。

【考点6】数组名数组名是数组的首地址。

数组名不能单独引用,不能通过一个数组名代表全部元素。

数组名是地址常量,不能对数组名赋值,所以a++是错误的。

但数组名可以作为地址与一个整数相加得到一个新地址。

【考点7】元素形式的转换助记:“脱衣服法则”a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可变成*(*(a+2)+3)。

关于c语言数组(一维二维知识点总结)

关于c语言数组(一维二维知识点总结)

关于c语言数组(一维二维知识点总结)关于数组一、一维数组1)定义:int a[10];2)数组中元素的书写:a[0],…….a[9]3)数组名a是?数组的首地址:&a[0]4)一维数组中所有的元素在地址上是连续的!5)数组元素中数据的获得?1)在定义数组的同时初始化:完全初始化、部分初始化;2)定义后,对数组元素单独赋值:a[2]=120;3)从键盘接收数据:for(i=0;i<10;i++)scanf("%d",&a[i]);6)数组元素的输出for(i=0;i<10;i++)printf("%d",a[i]);7)数组元素的计算for(i=0;i<10;i++)s+=a[i];二、二维数组1.二维数组的定义:int b[3][4];2.行标号和列标号3.数组名b,也是它的首地址:&b[0][0]4.二维数组中数组元素是按行存储的,所有的元素地址是连续的5.每个二维数组可以把它看成多个一维数组(每行是一个一维数组)6.二维数组中数组元素的值的获得?1)在定义数组的同时初始化:完全初始化、部分初始化;2)定义后,对数组元素单独赋值:b[2][0]=120;3)从键盘接收数据:for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);7.二维数组的输出:for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",b[i][j]);printf("\n");}三、。

一维数组,二维数组演示课件

一维数组,二维数组演示课件
int n; scanf(“%d”,&n); int a[n];
12
6.2.2 引用一维数组的元素
➢ 必须先定义数组,才能引用数组中的元素 ➢ t=a[3],将a数组中序号为3的元素的值赋给变量t。 ➢ 只能逐个引用数组元素而不能一次引用整个数组中的
全部元素。 b=a[2];c=a[5]; printf(“%d,%d,%d,%d,%d,%d\n”,a);
16
#include <stdio.h> void main() { int i,a[10];
for(i=0;i<=9;i++) a[i]=i;
for(i=9;i>=0; i--) printf("%d ",a[i]);
printf("\n"); }
使a[0]~a[9]的值 为0~9
先输出a[9],最后输 出a[0]
6.2.1 定义一维数组 6.2.2 引用一维数组的元素 6.2.3 一维数组的初始化 6.2.4 一维数组程序举例
8
6.2.1 定义一维数组
一维数组是最简单的数组。
数组元素只有1个下标—一维数组,s[5],相当于“线”。 数组元素有2个下标—二维数组,s[1][2],相当于 “面”。 数组元素有3个下标—三维数组,s[2][4][3],相当于 “体”。
448 2 2
a[3]
222 8 0
a[4]
000 0 8
a[5]
999 9 9
27
for(i=0;i<3;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }

全国计算机二级C语言程序设计讲义一维数组和二维数组

全国计算机二级C语言程序设计讲义一维数组和二维数组

全国计算机二级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"); //换行```在实际应用中,一维数组和二维数组非常常见。

计算机二级C语言 数组

计算机二级C语言 数组

第九章数组引言:C语言中简单数据类型:int float double char int * int** 构造数据类型:数组数组定义:把类型相同的若干个变量组合到一块,它们有一个的组名,具体表示每一个变量是用组名和该变量在组中排的位置组成。

程序中代码表示:int a[5];a[0]a[1]…..a[4]存储图:111111151119 1123 11271.一维数组的定义和一维数组元素的引用(1)一维数组的定义形式:类型名数组名[整型常量表达式]类型名:数组元素的类型数组名:合法的表示法整型常量表达式:确定组的大小int a,i=3;int a[3]; int a[2+1];flaot a[3];double a[3];char a[3];int *a,*b,*c;int *a[3];int a[i]; 非法int a[3.0];非法(2)一维数组的引用下标:确定每一个具体元素在组中的位置。

下标从0开始且不可越界,下标的类型(整型常量、整型常量表达式、已经定义且赋值的整型变量)形式:组名[下标];举例:int a[3],i=1,j=0;a[0] a[1] a[2]a[1+1]a[i] a[i+j]a[3] 非法a[-1] 非法a[1.5] 非法总结:int a[3],i=1;数组名:a元素及其元素的个数:3 a[0] a[1] a[2] 下标的下界和上界0 1 2存储图:一维数组名:一个数组元素实质就是一个变量,代表内存中的一个存储单元。

一个数组代表了内存中一串连续的存储单元。

C语言中一维数组名中存放的是一串连续存储单元的首地址,它是一个地址常量。

一维数组名可理解为一个指针,它的基类型为数组类型。

不可以对它重新赋值,也不可以用数组名a代表a[0].a[1]…这些数组元素。

理解为指针111111151119 1123 1127int a[5],k,*p=&k;a[0] a[1] a[2]…a[4]11111115 …10 20 30……a:数组名,理解为指针值:1111 &a[0] a 常量a=p; a++; 非法p=a;基类型:int(3)一维数组的初始化(赋值)int a=1;int a[3]={1,2}; 0char a[3]={...0‟,‟1‟ }; 0int a[]={0 ,0,0}; 3(4)一维数组编程例:求所有元素的平均值#include "stdio.h"main(){int a[6]={72,98,87,64,57,77};int sum=0,i;doble ave;for(i=0;i<6;i++)sum=sum+a[i]/6;printf(“%lf”,sum);}2.一维数组和指针a[0] a[1] a[2] a[3] a[4]111111151119 1123 1127(1)一维数组和数组元素的地址数组名代表了一串连续存储单元的首地址(数组中第0个元素的地址)这个地址值是固定的,即数组名为一个地址常量不可以对它重新赋值。

计算机二级C语言第9章 数组(2)

计算机二级C语言第9章 数组(2)

以下定义语句错误的是 ()。 A.int a[3][4]={{1,2,3},{4,5},{6,7},{8,9}}; B.int a[3][4]={1,2,3,4,5,6,7,8,9}; C.int a[3][4]={{1,2,3},{4,5,6,7},8,9}; D.int a[3][4]={{1,2},{3,4,5},6,7,8,9};
a[0]、a[1]、a[2]都是一维数组名,同样也代表一个不可变的地址变量。其值依次为二维数组每行第一个 元素的地址,其基类型就是数组元素的类型。因此对于二维数组,a[0]++这样的表达式是非法的。若有表 达式a[0]+1,表达式中1的单位应当是2个字节。在以上的定义中,指针变量p的基类型与a[i]相同,因此 赋值语句p=a[i];是合法的。因为a[i]也可写成*(a+i),故:p=*(a+i);合法。
2.二维数组名也是一个地址常量
a[0] a[0][0] int a[4][4] a[1] a[1][0]
a[2] a[2][0] a[3] a[3][0]
int *p;
a[0][1] a[1][1] a[2][1] a[3][1]
a[0][2] a[1][2] a[2][2] a[3][2]
a[0][3] a[1][3] a[2][3] a[3][3]
1.二维数组由若干个一维数组组成
a[0] a[0][0] int a[4][4] a[1] a[1][0]
a[2] a[2][0] a[3] a[3][0]
int *p;
a[0][1] a[1][1] a[2][1] a[3][1]
a[0][2] a[1][2] a[2][2] a[3][2]
a[0][3] a[1][3] a[2][3] a[3][3]

全国计算机二级C语言程序设计讲义 一维数组和二维数组

全国计算机二级C语言程序设计讲义  一维数组和二维数组
或写成: int b[3][4]={0,1,2,3,4,5,6 } ;
•给二维数组的全部元素赋初值,可以不指定第一 维的长度,但第二维的长度不能省略。
例 int a[ ][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
或写成: int a[ ][4]={0,1,2,3,4,5,6,7,8,9,10,11};
例 #define N 20
int a[5]; float f1[N+6]; 说明: a[5]:a[0],a[1],a[2],a[3],a[4] f1[N+6]:f1[0],f1[2],·,f1[25] · ·
注意:
引用a[5],f1[26]编译不报错,但不能得到 正确的运行结果。
一维数组元素引用的规定: •数组必须先定义后使用。 •数组元素只能逐个被引用,不能一次引用整 个数组。 •对数组中所有元素逐个引用时,通常可使用 循环结构。
print(“\n”);} }
例: 1)float b[12];
b[1]=1.0; b[3]=7.6;
b[0]=b[1]+b[3];
b[2]=b[1]-b[3];
·· ·· ·· 2)int j, a[10];
for ( j=0; j<10; j++ ) a[j]=j;
3、一维数组的初始化
数组的初始化:指定义数组时对数组元素赋以 初值。 格式:
类型符 数组名[表达式]={初值表};
说明:
• • •
给全部元素赋初值。
给部分元素赋初值。 给全部元素赋初值时可不指定数组的长度。
•给全部元素赋初值。
例 int a[8]={ 0,1,2,3,4,5,6,7 };

全国计算机二级C语言数组PPT课件

全国计算机二级C语言数组PPT课件
第9章 数组
本章要点:
➢ 9.1 一维数组的定义和一维数组元素的引用 ➢ 9.2 一维数组和指针 ➢ 9.3 函数之间对一维数组和数组元素的引用 ➢ 9.4 一维数组应用举例 ➢ 9.5 二维数组的定义和二维数组元素的引用 ➢ 9.6 二维数组和指针 ➢ 9.7 二维数组名和指针数组作为实参
1
9.1 一维数组的定义和一维数组元素 的引用
我们可以通过运算符“*”引用地址所在的存储 单元,所以数组元素a[0]也可以用*(a+0)来引用,即 *a。依次类推,对数组元素a[1]的引用可以是 *(a+1)、…、数组元素a[4]可以用*(a+4)引用。因此 可以通过以下语句逐个输出a数组中的元素的值:
for(i=0; i<4; i++) printf(“%d “, *(a+i));
(1)给数组全体元素赋初值时,可省去数组 长度说明。
(2)数组名作为函数的参数,在函数的参数 说明部分,当指出参数是数组时,不能用长度说 明。
5
9.1.2 一维数组的引用
除了给指针变量赋地址值外,还可以给指针变量赋 NULL值。
例如:p=NULL; NULL是在stdio.h头文件中的预定义符。NULL的代 码值为0,当p=NULL时,称p为空指针。因为NULL的代 码值是0,所以上面语句等价于:
for(pa=a, i=0; i<5; i++) scanf(“%d”, pa++); 或
for(pa=a; pa-a<5; pa++) scanf(“%d”, pa);
13
9.2.2 通过数组的首地址引用数组元素
C语言中,若定义了a[5],则a的值即等于&a[0]; 依次推出a+1、a+2、…、a+4的值分别等于&a[1]、 &a[2]、…、&a[4]。

全国计算机二级C语言考试大纲精品课件第六章

全国计算机二级C语言考试大纲精品课件第六章

}
显示运行结果
6.3 字符数组
6.3.1 字符数组的定义 用来存放字符数据的数组称为字符数组。字符数组类型
说明的形式与前面介绍的数值数组相同。 例如:char c[10];
由于字符型和整型通用,也可以定义为int c[10], 但这时每个数组元素占2个字节的内存单元,浪费空 间。 字符数组也可以是二维或多维数组, 例如:char c[5][10];即为二维字符数组。
a[3][4] 表示a数组三行四列的元素。下标变量和数 组说明在形式中有些相似,但两者具有完全不同的含义。 数组定义的方括号中给出的是某一维的长度,即可取下标 的最大值;而数组元素中的下标是该元素在数组中的位 置标识。前者只能是常量, 后者可以是常量,变量或表 达式。
例3 一个学习小组有5个人,每个人有语文、数学、化学三门课的考试成绩。 求全组分科的平均成绩和各科总平均成绩。
{59,63,70}, {85,87,90}, {76,77,85} }; 2)按行连续赋值可写为 int a[5][3]={ 80, 75, 92, 61, 65, 71, 59, 63,
70, 85, 87, 90, 76, 77, 85 };
这两种赋初值的结果是完全相同的。
3)可以只对部分元素赋初值,未赋初值的元素自动取0值。 例如: int a[3][3]={{1},{2},{3}};是对每一行的第一
例如:
int a[10];
//说明整型数组a,有10个元素
float b[10],c[20]; //说明实型数组b,有10个元素,
实型数组c,有20个元素
char ch[20];
//说明字符数组ch,有20个元素
对于数组类型说明应注意以下几点:

二级考试C语言程序设计3ppt课件

二级考试C语言程序设计3ppt课件

注意:在一维数组引用过程中要防止下标越界问题。如“int a[10]”定
义的数组a,数组a中不包括a[10]元素,下标为10已经越界。对于数组下
标越界问题,C语言编译系统不进行检测,即不进行错误报告,只是会造
成程序运行结果的错误。
精品课件
10
4.2.3 一维数组的初始化
在定义一维数组同时给数组元素赋初始值,称为一维数组的初始化。 一般格式为:
程序名为l4_2.cpp。
#include"stdio.h"
main() { int a[2][3],i,j,sum=0;
/*定义二维整型数组a及整型变量i,j和 sum,数组a有2行3列6个元素*/
for(i=0;i<2;i++)
/*按行向数组a输入6个元素,并将元素 值送入sum进行累加求和*/
类型说明符 数组名[常量表达式]={初始值表};
初始值表中数据与数组元素依次对应,初始值表中的数据用逗号(,)分 隔。如,int a[5]={12,-3,4,0,367};则数组a的5个元素依次取得初始值。
一维数组初始化时,要注意以下两点:
(1)当初始化,初始值表给出全部元素值时,则数组长度可缺省。如,前 例造价于int a[]={12,-3,4,0,367};
第4章 数组
本章主要知识点
(1)一维数组的定义和引用。 Int a[100]; a[0] a[1] a[2] a[99] (2)二维数组的定义和引用。 (3)字符数组与字符串的应用。
精品课件
1
第4章 数组
4.1 数组应用的C程序实例 4.2 一维数组的定义和引用 4.3 二维数组的定义和引用 4.4 字符数组与字符串 4.5 综合实训
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0
1
2
3
4
5
6
7
•给部分元素赋初值。 例 int a[8]={ 0,1,2,3,4 };
a [ 0 ] a [ 1 ] a[2] a [ 3 ] a [ 4 ] a [ 5 ] a [ 6 ] a [ 7 ]
0
1
2
3
4
0
0
0
•给全部元素赋初值时可不指定数组的长度。 例 int a[ ]={ 0,1,2,3,4,5,6,7 };
2)第一轮:6个数,j=1~5;循环5次,找出最大数,放 在最后。
3)第二轮:5个数,j=1~4;循环4次,找出次大数,放 在最大数前。
4)余此类推,经过5轮,将6个数排序输出。 所以:外循环为 i=0~4,内循环为:j=0~5-i;
即:for ( i=0; i<5 ; i++) for (j=0; j<6–i; j++) if ( a[j]>a[j+1]) { a[j]←→a[j+1] }
scanf( "%d",&a[i] );
/ * 给数组元素赋初值 */
for ( sum=0, i=0, max=a[0]; i<32; i++ )
{ sum += a[i];
if ( a[i] > max ) max=a[i];
}
average=(float)sum/32;
printf("Average=%.2f,MAX=%d\n",average,max);
例如 int a[5];
int a[ 0 ]
a[ 1 ]
a[ 2 ]
a[ 3 ]
a[ 4 ]
2字节 2字节 2字节 2字节 2字节
2、一维数组元素的Hale Waihona Puke 用引用方式: 数组名[下标]
说明: 下界 ≤ 下标 ≤ 上界; 下界=0;上界=整常量表达式-1。 下标为整型表达式;
一个数组元素实质是一个变量,代表内存中 的一个存储单元。引用后的数组变量也称下 标变量。
例 #define N 20 int a[5]; float f1[N+6];
说明: a[5]:a[0],a[1],a[2],a[3],a[4] f1[N+6]:f1[0],f1[2],···,f1[25]
注意: 引用a[5],f1[26]编译不报错,但不能得到
正确的运行结果。
一维数组元素引用的规定:
•数组必须先定义后使用。
•数组元素只能逐个被引用,不能一次引用整 个数组。
•对数组中所有元素逐个引用时,通常可使用 循环结构。
例: 1)float b[12]; b[1]=1.0; b[3]=7.6; b[0]=b[1]+b[3]; b[2]=b[1]-b[3]; ······
2)int j, a[10]; for ( j=0; j<10; j++ ) a[j]=j;
[ ]:下标运算符,可通过该运算符的个数反映 出数组的维数。 整常量表达式:为一整常量表达式,表明数组的 大小。
特点:
数组元素的个数必须是确定的
数组元素的类型必须一致
一维数组在内存中的存放方式:
数组定义以后,编译系统(计算机)将在内
存中开辟一块连续的存储单元用于存放数组元素, 数组名表示存储单元的首地址,存储单元的大小 由数组的类型和数组的大小决定。
第8讲 一维数组和二维数组
一、一维数组
1、一维数组的定义 2、一维数组元素的引用 3、一维数组的初始化
二、二维数组
1、二维数组的定义和引用 2、二维数组的初始化
数学中:a1,a2,a3,···,ai,···,an
C程序中:a[0],a[1],a[2],···,a[i-1],···a[n-1]
数组是数目固定,类型相同的若干变量的有 序集合。
a[0] a[1] a [ 2 ] a [ 3 ] a[4] a[5] a[6] a[7]
0
1
2
3
4
5
6
7
例6.1 统计全班32名同学某门功课的平均成绩,找 出最高分,输出。
main( )
{ int i, sum, max, a[32] ;
float average;
for ( i=0; i < 32; i ++ )
3、一维数组的初始化
数组的初始化:指定义数组时对数组元素赋以 初值。
格式: 类型符 数组名[表达式]={初值表};
说明: •给全部元素赋初值。 •给部分元素赋初值。 •给全部元素赋初值时可不指定数组的长度。
•给全部元素赋初值。 例 int a[8]={ 0,1,2,3,4,5,6,7 };
a[0] a [ 1 ] a[2] a[3] a[4] a[5] a[6] a[7]
例6.3 用起泡法排序。 将任意十个数按由小到大的方式排序。
思路:将相邻两个数进行比较,使小数在前,大 数在后。
例:
6
6
62
2
2
1
8
82
26
3
1
2
2
28
83
1
3
3
9
93
381
6
6
6
3
391
18
8
8
8
1
19
9
9
9
9
原数 第一轮 第二轮 第三轮 第四轮 第五轮
分析说明:
1)相邻两数比较: a[j]>a[j+1]
数组中的每一个数称为数组元素,数组中的 每一个元素都属于同一个数据类型。
在内存中数组占有一段连续的存储空间。
一、一维数组
1、一维数组的定义
定义的格式: 类型说明符 数组名[整常量表达式],···;
说明: 类型说明符:表明该数组所属类型,即数组元 素的类型。 数组名:即数组的名称,其命名方法同变量名。
}
例6.2 将一个数组中的值按逆序重新存放,并输出它。 这里数组长度为N。
分析:N-S图如下
显示初始数组元素 for(i=0;i<N/2;i++)
第i个元素与第N-i-1个元素互换
显示逆序数组元素
程序:
#define N 5 main( ) {char a[N], temp; int i; printf(“Enter array a:\n”); for(i=0;i<N;i++) scanf(“%c”,&a[i]); for(i=0;i<N;i++) printf(“%4c”, a[i]); for(i=0;i<N/2;i++) { temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;} printf(“\n Now,array a:\n”); for(i=0;i<N;i++) printf(“%4c”, a[i]); }
程序:
main( ) { int a[10], i, j, k; printf("请任意输入10个整数:\n"); for ( i=0 ; i<10 ; i++) scanf("%d", &a[i]) ; printf("\n") ; for ( i=0; i<=8; i++)
相关文档
最新文档