一维数组元素输入输出.ppt

合集下载

C语言程序设计PPT课件 第5章 数组程序设计

C语言程序设计PPT课件 第5章 数组程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
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}

03一维数组元素输入输出

03一维数组元素输入输出

03一维数组元素输入输出一维数组是一种线性数据结构,它由相同类型的元素组成,并按照一定的顺序存储在连续的内存空间中。

数组的大小是固定的,一旦创建后,就无法再改变其大小。

在许多编程语言中,输入和输出数组的操作都十分简单。

下面我将以Python语言为例,介绍一维数组的输入和输出方法。

首先,让我们来看一下如何输入一维数组。

1.手动输入数组元素可以通过for循环来逐个输入数组元素。

例如,我们要输入一个长度为5的整型数组:```array = [] # 创建一个空数组for i in range(5):element = int(input("请输入第{}个元素:".format(i+1)))array.append(element)```在上述代码中,我们使用了一个for循环来逐个输入数组的元素,并使用append(方法将元素添加到数组中。

注意,由于用户输入的是字符串类型,需要使用int(函数将其转换为整型。

2.使用列表生成式输入数组元素如果数组的元素比较简单,可以使用Python中的列表生成式来输入数组元素。

例如,我们要输入一个长度为5的整数数组:```array = [int(input("请输入第{}个元素:".format(i+1))) for i in range(5)]```在上述代码中,通过列表生成式,我们可以一行代码实现数组元素的输入。

接下来,我们来讨论如何输出一维数组。

1.手动输出数组元素可以通过for循环来逐个输出数组元素。

例如,我们有一个长度为5的整数数组:```array = [1, 2, 3, 4, 5]for element in array:print(element, end=" ")```在上述代码中,我们使用了一个for循环遍历数组,并使用print(函数逐个输出数组的元素。

通过设置end参数为" ",我们可以在每个元素之间添加空格。

JAVA语言程序设计数组ppt课件

JAVA语言程序设计数组ppt课件

二维数组的初始化
int a[][]=new int[3][4];
❖ 数组中各元素通过两个下标来区分 ❖ 每个下标的最小值为0,最大值分别比行数或列数少1。 ❖ 系统为该数组a的12个元素分配存储空间,形式如表所示:
a[0][ 0]
a[0][ 1]
a[0][ 2]
a[0][3]

a[1 ][0]
a[1][ 1]
gd [2][0] 56
gd [2][1] 87
gd [2][2] 90
gd [3][0] 92
gd [3][1] 69
gd [3][2] 75
注意:二维数组元素的赋值和输出可以通过双重循环语句完

5.3 数组的基本操作
❖ 数组的引用
对数组的应用通常是对其元素的引用 数组元素可以被赋值、被输出或参加表达式运算
Demo1
int c[][],d[][], e[][],i, j;
c=new int[3][3];
d=new int[3][3]; e=new int[3][3]; for(i=0;i<3; i++)
c、d、e数组各元素 012 123
for (j=0; j<3; j++) 2 3 4
{
d[i][j]=i+j;
System.out.println();
}
“雪亮工程"是以区(县)、乡(镇) 、村( 社区) 三级综 治中心 为指挥 平台、 以综治 信息化 为支撑 、以网 格化管 理为基 础、以 公共安 全视频 监控联 网应用 为重点 的“群 众性治 安防控 工程” 。
5.4 数组应用举例-排序
【5-4】排序

2020-2021学年信息学奥赛资料 第十一课 一维 数组(适用于高中)课件

2020-2021学年信息学奥赛资料 第十一课 一维 数组(适用于高中)课件
一个正整数 n 是否能被一个“幸运数”整除。幸运数是指一个只包含 4 或 7 的 正整数,如 7、47、477 等都是幸运数,17、42 则不是幸运数。 【输入格式】 一行一个正整数 n,1≤n≤1000。 【输出格式】 一行一个字符串,如果能被幸运数整除输出“YES”;否则,输出“NO”。 【输入样例】 47 【输出样例】 YES
(1)memset 函数
memset 函数是给数组“按字节”进行赋值,一般用在 char 国内外研究状况
型数组中,如果是 int 类型的数组,一般赋值为 0 和 -1。使 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
luctus nibh sit amet sem vulputate venenatis bibendum orci
2. 一维数组的元素引用
数组定义好后,就可以引用(调用)其中的任意一个元 素。引用格式为:
数组名[下标] 如:h[5]、h[i*2+1]等。其中,下标只能为整型常量或 整型表达式,值必须在数组定义的下标范围内,否则会出现 “下标越界错误”。 需要注意的是,不能一次引用整个数组,只能逐个引用 数组的单个元素。
例2、走楼梯
【问题描述】 一个楼梯有 n 级,小苏同学从下往上走,一步可以跨一级, 也可以跨两级。问:他走到第 n 级楼梯有多少种走法? 【输入格式】 一行一个整数 n,0<n≤30。 【输出格式】 一行 n 个整数,之间用一个空格隔开,表示走到第 1 级、第 2 级、……第 n 级分别有多少种走法。 【输入样例】
国内外研究状况
一维数组的输入、输出等操作,都是采用循环语句结合 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci

第6章数组(一维数组)

第6章数组(一维数组)

9
31
1
for ( i=0; i<n-1; i++ ) for (( j=0; j<n-1-i; j++ ) for j=0; j<n-1; j++ ) 相邻两数比较, ) if ( a[j]>a[j+1] 前小后大 a[j]a[j+1]
• • • • • 其他不变,改变声明项为:int 其他不变,改变声明项为:int 其他不变,改变声明项为:int 其他不变,改变声明项为:int 其他不变,改变声明项为: int n; a[n]={0,1,2,3}; a[4]={0,1,2,3}; a[4]={2,8}; a[4]={2,4,6,8,10}; a[4]={2,4,6,d};
注意: 不能写成 b=a;
•例:(P159)
16
[例] N盏灯排成一排,从1到N按顺序依次编号。有N 个人也从1到N依次编号。第一个人(1号)将灯全部 关闭。第二个人(2号)将凡是2和2的倍数的灯打开。 第三个人将凡是3和3的倍数的灯做相反处理(该灯如 为打开的,将它关闭;如为关闭的,将它打开)。以 后的人都和3号一样,将凡是与自己相同的灯和是自 己编号倍数的灯做相反处理。请问:当第N个人操作 之后,哪几盏灯是点亮的。
17
#include <stdio.h> #define N 10 void main(void) { int lamp[N+1]; int i,j,k; for(i=1;i<=N;i++) /*将灯全部关闭*/ lamp[i]=0; for(i=2;i<=N;i=i+2) /*将凡是2和2的倍数的灯打开*/ lamp[i]=1; for(j=3;j<=N;j++) /*将3和3的倍数的灯做相反处理*/ for(i=j;i<=N;i=i+j) for(i=1,k=j;k<=N;k=i*j,i++) lamp[i]=!lamp[i]; for(i=1;i<=N;i++) if(lamp[i]) printf("%2d", i); }

C语言数组学习课件

C语言数组学习课件

选择法排序(由小到大)
基本思想:先选择要参加排序的数和要存放的位置。 具体做法:每一次在某个范围内先找到最小元素,再放到 相应位置。
for ( i = 0 ; i < n – 1 ; i ++ ) 在 a[i] ~ a[n-1] 范围内找 最小元素 a[mini] , 与 a[i] 互换 注意:要记下最小值 的位置mini。 1 a[0] a[1] a[2] a[3] a[4] 4 3 4
插入法排序
上网查资料,了解排序思想 写出程序 还有其他的排序法吗?上网查资料
一维数组编程举例
用“折半查找法”在有序数组中找某数。可能找得到,也可能找 不到。(sz_4End.c)
思路:与中间的数比较,决定是向上找还是向下找。 向上找就修改下限,向下找就修改上限。 算法 上下限赋初值: low=0; high=n-1; while(low<high) { 求出中间的位置mid = (low + high )/2; 与中间的数比较: if( n < a[mid] ) 向上找 else if ( n > a[mid] ) 向下找 else break ; (找到了,mid 就是对应的位置) } 输出信息
存放10个学生的成绩 int score[10]; 存放 n 个数,n 不多于10
int a[10]; scanf("%d",&n); int a[n]; scanf(“%d”, &n);
一维数组的引用
一维数组的引用
数组名[下标] 特别说明: 必须先定义,才能使用数组元素。 数组元素要一个一个地引用。(除字符串) 下标必须为整数,可以是常量,也可以是变量。 下标不许超出数组的长度!! 数组定义后,数组名代表数组的首地址,其中的元素 按照下标依次存放。

VB数组讲解ppt

VB数组讲解ppt
A(2,0) A(2,1) A(2,2) A(2,3)
8
(二)动态数组的声明
动态数组是在数组声明时未指定数组的大小,需要使用时 才用Redim语句指定大小。
定义动态数组需要分以下两步进行:
1) 定义一个没有下标的数组。 Dim<数组名>( ) [As <数据类型],…
2) 用ReDim语句分配数组的实际元素个数。 ReDim <数组名>(<维数定义>) [As <类型>],…
12
三、 数组的基本操作
数组声明后,方可使用。可以对数组元素进行各种操作: • 对数组元素赋值 • 进行各种表达式运算、排序、统计、输出
使用数组可以缩短和简化程序。
13
(一)数组元素的输入
对数组元素的输入可以有多种方法:
• 可以使用文本框 • InputBox函数 • 赋值语句 • Array函数
如有二维数组定义: Dim A(-1 to 2,0 to 3) As Integer 第一维的大小为4,表示4行,第二维的大小为4,表示4列,则A数组中共 有4×4=16个元素
A(-1,0) A(-1,1) A(-1,2) A(-1,3)
A(0,0) A(0,1) A(0,2) A(0,3)
A(1,0) A(1,1) A(1,2) A(1,3)
Option Base n
其中n为设定的下标下界,该语句应放置在模块的通用声明部分 如有:Option Base 1
则在该模块中使用的数组下界均为1,若有个别数组下界不是1,可以使用 “下界 to 上界”的格式重设它的下界
Dim S(2) As Integer 等价于:Dim S(1 to 2) As Integer,共有2个元素

C语言 数组ppt

C语言 数组ppt
imin = i; for (j=i+1; j<10; j++) {
if (a[j] < a[imin]) imin = j;
} if (imin != i) {
temp = a[i]; a[i] = a[imin]; a[imin] = temp; } }
for (i=0; i<10; i++) printf("%3d",a[i]);
第6章 数组
内容提要
数组定义和基本操作; 常用算法:求最大最小值、排序、查找等; 用字符数组存取字符串; 使用字符串处理函数处理字符串
2023/10/17
2
一维数组(Array)的定义
类型 数组名[长度]; – 长度为常量表达式,不可以是变量(但C99提供了动态数组)
例:int a[10]; – 定义一个有10个元素的数组,每个元素的类型均为int – 系统会在内存分配连续的10个int空间给此数组 – a 是数组名,同时也代表着此数组的首地址
31
int a[10]={1,3,5,7,9,12,14,16,18,20}, number; int low = 0, high= 9 ,mid,pos = -1, find = 0
printf("请输入要查找的数:"); scanf("%d",&number);
while (low <= high) {
9
20
#include <stdio.h> int main() {
Bubble sort
int a[10]={93,84,52,46,25,0,66,18,39,70}, i, j, temp;

第5章 数组

第5章  数组
第15页 共49页
说明
► “类型说明符”、“数组名”及“常量表达
式”的含义与一维数组中的相关定义相同。 ► 二维数组中有两个下标,每一维的下标都 是从0算起。
第16页
共49页
5-2-2 二维数组元素的引用
► 二维数组元素的引用格式为: ► 数组名[行下标表达式][列下标表达式]
第17页
共49页
说明
► 字符数组的定义 ► 字符数组的初始化 ► 字符数组的引用
► 字符串和字符串结束标志
► 字符数组的输入输出
► 字符串处理函数
► 字符数组的应用
第23页 共49页
5-3-1 字符数组的定义
► 字符数组的定义与前面介绍的数值数组的
定义类似。
第24页
共49页
5-3-2 字符数组的初始化
► 逐个字符赋值 ► 用字符串对字符数组赋初值
第42页 共49页
5-4 程序案例
► 筛选完成后,筛子中剩下的即为素数。 ► #include <stdio.h> ► main() ►{
► ►
int i,a[100]; /*筛子数组*/ int i,n=0; /*n为素数个数,用于输出格 式控制*/ ► int minp,doub; /* minp为筛选种 子,doub为倍数*/ ► for(i=0;i<100;i++) /*建立筛子*/
第27页
共49页
5-3-3 字符数组的引用
► 字符数组的引用和前面几节数组的引用没
有什么区别,也是通过对数组元素的引用 实现的,每次得到一个字符,只是要注意 数据元素的类型现在是字符型。
第28页
共49页
5-3-4 字符串和字符串结束标志

第5章-数组ppt课件(全)

第5章-数组ppt课件(全)
②执行复制命令(Ctrl+C),将该控件复制;
③执行粘贴命令(Ctrl+V),将显示一个对话框,询 问“已经有一个控件为’Shape1’,是否创建控 件数组?”
④选择“是”,窗体左上角将出现一个控件,它就 是控件数组的第二个元素。
⑤执行粘切命令(Ctrl+V),建立控件数组的其它元 素。将其放在合适的位置并可用菜单栏的“格式”
外,还用到列表框(Llistbox)控件,这个控件及其 相关的内容将在本章作详细的讲解。 (2)编写代码时出现的 Dim Name(n) as string属于 数组的定义,具体相关数组的使用及有关概念是本 章的主要内容之一。 (3)排序交换数据时,应让姓名和成绩同时交换,若 只交换成绩,则最终结果会张冠李戴。
对其进行设置。
(2)编写代码
在窗体中只放置控件数组,而要输入对应的 标号需通过print方法来实现,对于Shape1控件 数组中各元素的形状由Shape控件的Shape属性 来完成,形状的填充由Shape控件的FillStyle属 性实现,具体的过程如下:
Private Sub Form_Click()
(2)编写代码使用了控件数组Shape1,注意掌握 创建数组控件的方法的使用,对于建立控件数组 的另一方法将在后面介绍。
5.2 数组
VB中将具有相同名字、不同下标值的一组变量称为 数组。数组中的每个变量称为数组元素或下标变量。可用 数组名和下标唯一地标识一个数组元素,如Score(5)就表 示数组名为Score的数组中下标为5的数组元素。一个数 组如果只用一个下标就能确定一个数组元素在数组中的位 置,则称为一维数组,而由两个或多个下标所组成的数组 称为二维数组或多维数组。在其它语言中数组用来存储相 同类型的数据,但是在VB中数组可用来存放不同类型的 数据。

《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;若出现 不相同的字符,则以第一个不相同的字符的比较结果为准。

第七章数组1、一维数组1、整形数组的说明例如inta[10]

第七章数组1、一维数组1、整形数组的说明例如inta[10]
2
例 int i=15; 例 int data[5]; int data[i]; (不能用变量定义数组维数) data[5]=10; //C语言对数组不作越界检查,使用时要 注意
一维数组的引用
数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名[下标] 其中:下标可以是常量或整型表达式 例 int a[10]; printf(“%d”,a); ( ) 必须 for(j=0;j<10;j++) printf(“%d\t”,a[j]);
()
3
一维数组的初始化
初始化方式
int a[5]={1,2,3,4,5}; 在定义数组时,为数组元素赋初值 等价于:a[0]=1; (在编译阶段使之得到初值) a[1]=2; a[2]=3; a[3]=4; a[4]=5;
说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值 只给部分数组元素赋初值 当全部数组元素赋初值时,可不指定数组长度
23
4、常用的字符串处理函数
1、 include <stdio.h> char *gets(char s[ ]); 功能:从键盘上读一行字符串,并以’\0’取代换行符。 注意:与scanf( )的区别? gets()可以读取空字符 #include <stdio.h> main( ) { char string[80]; printf(“请输入一个字符串:"); gets(string); printf(“您输入的字符串是: %s\n", string); }
元素个数=行数*列数
数组元素的存放顺序 例 int a[3][4]; float b[2][5]; 原因:内存是一维的 int c[2][3][4]; 二维数组:按行序优先 int a[3,4]; ( ) 多维数组:最右下标变化最快

一维数组元素的输入输出方法总结

一维数组元素的输入输出方法总结

⼀维数组元素的输⼊输出⽅法总结1、数组的下标法:直观且容易理解如:int a[5],i;printf("Input five numbers:");for(i=0;i<5;i++){scanf("%d",&a[i]);}for(i=0;i<5;i++){printf("%4d",a[i]);}2、数组名⾸地址法(指针法):指针增1运算的执⾏效率很⾼,利⽤指针的增1运算实现指针的移动,省去了每寻找⼀个数组元素都要进⾏的指针算术运算,执⾏效率最⾼。

说明:数组名有特殊含义,他代表存放数组元素的连续存储空间的⾸地址,即指向数组中第⼀个元素的常量指针,如"a+i"代表数组中下标为i的元素a[i]的地址(&a[i]),⽽"*(a+i)"表⽰取出⾸地址元素后第i个元素的内容,即下标为i的元素"a[i]"。

int a[5],i;printf("Input five numbers:");for(i=0;i<5;i++){scanf("%d",a+i);}for(i=0;i<5;i++){printf("%4d",*(a+i));}3、移动指针变量法:说明:指向同⼀数组中不同元素的指针的关系运算⽤于⽐较他们所指元素在数组中的前后位置关系。

指针的算术运算(如增1和减1)⽤于移动指针的指向,使其指向数组中的其他元素。

注意:p++和p+1是本质不同的两个操作。

同:都对指针变量p进⾏加1运算异:p+1不改变当前指针的指向,p仍指向原来指向的元素,p++讲指针变量p向前移动⼀个元素的位置,指向下⼀元素,p++是加上1*sizeof(基类型)个字节。

int a[5],*p;printf("Input five numbers:");for(p=a;p<a+5;p++) 注意:p是指针变量,可以通过赋值操作改变他的值,使p指向数组中其他元素,⽽数组名a是⼀个常量指针,代表⼀个地址常{ 量,其值是不能被改变的。

C++ 一维数组的使用

C++ 一维数组的使用

概念
数组的维数
这批类型相同的数据在排列上会有各种形式,比如排成一行 ,排成一片(矩阵),或者一堆(立方体),数组不仅要通过 下标区分它们,还要描述出位置信息,这可以通过定义数组 的维数来进行。 一维数组用于描述一行或者一列数据
数列 75 一维数组 a[0] a[1] a[2] a[3] a[4] a[5] 78 83 72 69 63
当采用定义时就赋值这种初始化形式时,数组长度应不小于初始化数据个数 ,否则编译出错。 比如 int a[2]={1,2,3,4}; 是错误的
一维数组
数组元素的输入输出
只能通过对每个元素进行操作来完成数据的输入、访问和输出 通常用循环结构来完成对每个元素的操作,循环控制变量既控制循环,又作 为数组元素的下标来使用。 int a[5]; 下面三种方式都可以实现对每个元素的访问 输入: for(int i=0;i<=4;i++) cin>>a[i]; 访问: for(int i=0;i<5;i++) sum+=a[i]; 输出: for(int i=1;i<=5;i++) cout<<a[i-1]; 循环控制变量 i 既控制循 环次数,也代表当前操作 元素的下标,所以习惯从0 开始,到最后一个元素的 下标结束。
一维数组
一维数组的应用
逆序 求最大(小)值 排序 比较互换法、选择法、冒泡法 插入(删除) 查找 一般查找、对分查找
一维数组的应用
将一个整数序列的数据对半交换并输出
对半交换,即第一个和最后一个呼唤,第二个和倒数第二个呼唤,依次类推,直到所有数据都完 成位置移动。 关键: 如果数据为n个,则只要执行 n/2 次交换过程即可,否则就又被换回来了。 int a[10]={1,2,3,4,5,6,7,8,9,10}; cout << "原始序列:"; for(int i=0;i<=9;i++) { cout << a[i]<<" "; } for(i=0;i<=10/2-1;i++) { int t=a[i]; a[i]=a[10-1-i]; a[10-1-i]=t; } cout << "交换后序列:"; for(i=0;i<=9;i++) { cout << a[i]<<" "; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

提问:用什么样的方法可以实现象 输入输出学生成绩那样,让一批同 类型的相关数据共用一个标识符, 而不必为每个数据选定一个名称?
引出数组概念。
东软信息学院计算机系 2020年2月19日星期三
分析与讲解
输入学生成绩到数组中(用函数实现) 输出学生成绩(用函数实现)
东软信息学院计算机系 2020年2月19日星期三
数组的概念
数组是一组变量,满足下列条件: (1)具有相同的名字 (2)具有相同的数据类型 (3)在存储器中连续存放
每个变量名字相同下标不同,称为“数组元素”
“数组名”代表整个数组,其值是这组变量在内存 中所占连续存储空间的首地址。
数组要先定义后使用。
数组名不能与相同作用域的其他变量名重名
东软信息学院计算机系 2020年2月19日星期三
例:a={1,3,5,7,9}; 错误,应单独为每个元素赋值 例:a=1; 错误,应单独为每个元素赋值 对数组的整体赋值只能在初始化时进行
东软信息学院计算机系 2020年2月19日星期三
一维数组的遍历
东软信息学院计算机系 2020年2月19日星期三
从键盘输入5个整数,保存到数组a中; 再逆序输出。
if(a[]>a[max_id]) max_id=i;
printf(“最大数是%d\n",a[max_id]);
}
东软信息学院计算机系 2020年2月19日星期三
课堂练习
1、完成学生成绩输入的功能。
在主菜单中增加“输入成绩”一项; 在程序中增加ssmsV1.0_04模块的函数,函数原型为:int
对应的中文意义 数组 引用 元素 地址 应用 下标
东软信息学院计算机系 2020年2月19日星期三
回顾与提问
1. 回顾上次课主要内容 2. 检查学生课后实训与作业完成
情况(包括小组评价) 3. 讲解ssmsv1.0案例主要功能
东软信息学院计算机系 2020年2月19日星期三
演示程序
演示学生成绩管理案例中 输入、 输出成绩函数。
printf(“%d\n”,a[3]);
printf(“%d\n”,a[2]);
printf(“%d\n”,a[1]);
printf(“%d\n”,a[0]);
} 东软信息学院计算机系 2020年2月19日星期三
从键盘输入5个整数,保存到数组a中; 再逆序输出。
main()
{
int a[5];
scanf(“%d”,&a[0]);
if(a[i]>max) max=a[i];
printf(“最大数是%d\n", max);
}
解法2:记下最大数相应的下标 main() {
int i, max_id,a[10]; printf("enter data:\n"); for(i=0;i<10;i++) scanf("%d", &a[i]); max_id=0; //假定下标为0的元素最大 for(i=1;i<10;i++)
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
scanf(“%d”,&a[4]);
printf(“%d\n”,a[4]);
printf(“%d\n”,a[3]);
printf(“%d\n”,a[2]);
printf(“%d\n”,a[1]);
main()
{
int a0,a1,a2,a3,a4;
scanf(“%d”,&a0);
scanf(“%d”,&a1);
scanf(“%d”,&a2);
scanf(“%d”,&a3);
scanf(“%d”,&a4);
printf(“%d\n”,a4);
printf(“%d\n”,a3);
printf(“%d\n”,a2);
printf(“%d\n”,a1);
printf(“%d\n”,a0);
}
main()
{
int a[5];
scanf(“%d”,&a[0]);
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
scanf(“%d”,&a[4]);
printf(“%d\n”,a[4]);
一维数组的初始化和赋值
东软信息学院计算机系 2020年2月19日星期三
一维数组的初始化
定义数组之后,与普通变量一样,数组是沒有 初始值的,各存储单元的值都是不定的
初始化:定义数组的同时赋初值
语法:
数据类型说明符 数组名[长度]={数值1,数值2,…}; 如 : int data[5]={1,2,3,4,5};
东软信息学院计算机系 2020年2月19日星期三
一维数组的初始化
初始化注意事项:
(1) 允许初始化一部分元素,其他没有赋初值的元素初值为0; int a[5]={1,2}; 相当于 int a[5]={1,2,0,0,0};
(2)允许初始化时省略数组的长度,数组的长度为赋初值的个数; int a[]={1,2,3,4,5}; 相当于 int a[5]={1,2,3,4,5};
译系统对下标的越界不做检查)
东软信息学院计算机系 2020年2月19日星期三
例题:从键盘输入10个整数存放在数组中,找出其
中最大的一个数,输出该最大数。
解法1:记下最大数其值 main() {
int i, max,a[10]; printf("enter data:\n"); for(i=0;i<10;i++) scanf("%d", &a[i]); max=a[0]; //假定a[0]的元素最大 for(i=1;i<10;i++)
数组下标从0开始 数组名代表数组首地址,是一个常量 C语言不允许动态定义数组,即定义数组时数
组长度表达式不能含有变量 数组元素与普通变量具有相同属性,可以进行
算术运算和比较大小等操作
东软信息学院计算机系 2020年2月19日星期三
作业
1、从键盘输入10个整数保存到数组中,求和、平均 值并输出。
2、从键盘输入10个整数保存到数组中,求值最小的 元素,将这个值最小的元素与数组的第一个元素交换。 最后输出整个数组。
3、从键盘输入10个浮点数保存到数组中,将这10个 数逆序存放后输出。
注意用watch调试工具跟踪下标变 量的值的变化情况。
东软信息学院计算机系 2020年2月19日星期三
进行调用,调试程序。
东软信息学院计算机系 2020年2月19日星期三
课堂练习
3、新建一个项目,建立一个能存放N(N是一 个常量)个数据的数组,数组元素值为此数组元 素下标的10倍,然后按正序和逆序输出
定义输入函数:int input(int a[], int len); 定义正序输出函数:int outz(int a[], int len); 定义逆序输出函数:int outn(int a[], int len); 编写main函数调用上述函数,实现输入和输出
更进一步
3) 想一想(或讨论),对数组元素初始化时
有什么要求,对数组元素赋值采用初始化和从 键盘输入两种方式各有什么利弊?对数组元素 的下标有什么要求?
东软信息学院计算机系 2020年2月19日星期三
更进一步
4) 总结与评价
东软信息学院计算机系 2020年2月19日星期三
本次课小结
数组的定义、初始化、引用、输入、输出概念、 操作必须掌握
a[0], a[1],a[2], a[3], a[4] int a[N]; 下标的取值范围:0~N-1 ,其中N为数组的大小 下标是整型值,可以是整型常量、整型变量或整型表达式
如:a[i] a[3+1] a[2*i-1] 注意:下标不能越界,否则可能覆盖其他数据,造成严重后果
东软信息学院计算机系 2020年2月19日星期三
ssmsV1.0__输入输出功能
程序演示 程序分析
数组的概念 一维数组的定义和引用 一维数组的初始化和赋值 数组元素的遍历
课堂练习 课程小结
东软信息学院计算机系 2020年2月19日星期三
专业英语词汇
英文词汇 array reference element adress application Subscript
(3)不能对整个数组初始化; int data[5]=1; 错误,应为: int data[5]={1,1,1,1,1};
东软信息学院计算机系 2020年2月19日星期三
一维数组的赋值
数组的赋值只能对数组元素单独操作, 不能对数组整体操作。
赋值的两种方式:int a[5]; 1. 赋值运算符 如:a[3]=8; 2. 输入函数 如:scanf(“%d”,&a[3]);
inputScore(int score[],int length) 在程序开头处声明该函数,并在main函数的switch语句中
进行调用,调试程序。
2、完成学生成绩输出的功能。
在主菜单中增加“输出成绩”一项; 在程序中增加ssmsV1.0_05模块的函数,函数原型为:int
outputScore(int score[],int length) 在程序开头处声明该函数,并在main函数的switch语句中
printf(“%d\n”,a[0]);
相关文档
最新文档