第7章 数组

合集下载

JAVA 07 数组

JAVA 07 数组

Arrays as Objects (cont’d)
As with other objects, the declaration creates only a reference, initially set to null. An array must be created before it can be used. One way to create an array:
In Java, an array is an object. If the type of its elements is anyType, the type of the array object is anyType[ ]. Array declaration:
• anyType [ ] arrName;
1.39 c[0]
1.69 ቤተ መጻሕፍቲ ባይዱ[1]
1.74 c[2]
0.0 c[3]
c is array’s name
下标 (Subscripts)
In Java, an index is written within square brackets following array’s name (for example, a[k]). Indices start from 0; the first element of an array a is referred to as a[0] and the n-th element as a[n-1]. An index can have any int value from 0 to array’s length - 1.
• 例:
int [ ] scores = new int [10] ; private double [ ] gasPrices = { 3.05, 3.17, 3.59 }; String [ ] words = new String [10000]; String [ ] cities = {"Atlanta", "Boston", "Cincinnati" };

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

C语言程序设计(第3版)何钦铭 颜 晖 第7章  数组

第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。

当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。

【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。

解答:#include<stdio。

h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。

《C语言程序设计基础与实训教程》第7章:数组

《C语言程序设计基础与实训教程》第7章:数组

/webnew/
7.1.4 一维数组的应用举例
例7.5 将数组中的数按颠倒的顺序重新存放。要求,在操 作时只能借助一个临时存储单元而不能另外开辟数组。 分析:题目要求是按颠倒的顺序重新存放数据,而不是按 逆序输出。 可以使用两个变量i和j,i和j的初值分别为0和9,将a[i] 与a[j]对调,然后i++,j--,接着再将a[i]与a[j]对调。如些 重复操作,直到i>=j时,对调完成。 程序
分析:该数组元素的值是有规律的序列, ( 从 开始算起 开始算起) 分析 : 该数组元素的值是有规律的序列 , 第 i(i从0开始算起) 个 元素的值为: 元素的值为:10+2*i。 。 输出该数组时,由于该数组有30个元素,在一行中输出不太美观, 输出该数组时,由于该数组有 个元素,在一行中输出不太美观, 个元素 所以,这里我们选择每行输出6个元素。 所以,这里我们选择每行输出 个元素。 个元素
/webnew/
7.1.3 一维数组元素的引用
2.一维数组的输入与输出 一维数组的输入与输出 如何给数组元素赋值以及如何将数组元素的值输出是数 组最基本的操作。下面将讨论一维数组元素的输入与输出。 例7.1 定义一个五个元素的字符型数组,通过键盘给每 个元素赋值,并以相反的顺序的输出。 程序1 程序2 从上面的例子可以看出,一个数组中往往往包含较多的 数组元素,相同的赋值或输出操作将被重复多次进行,所以, 一维数组元素的输入与输出一般通过一重循环来实现。
/webnew/
7.1.3 一维数组元素的引用
注意: (1)数组元素的引用方式与数组说明符的形式非常相近,都是 “数组名[表达式]”形式,但两者的意义完全不同。 出现的位置不同。定义数组时,“数组名[表达式]”出现在 定义语句中,表示的是定义了一个名为“数组名”的数组,表达式的值 表示该数组中所包含元素的个数。作为数组元素的引用方式时,“数组 名[表达式]”出现在其它执行语句中,表示是数组中的下标为“表达式” 值的那个元素。 表达式的格式不同。定义数组时,“表达式”必须为常量表 达式。作为数组元素的引用方式时,表达式可以变量、常量或函数构成 的合法C表达式。 (2)在C语言中,起始下标规定为0,最大值应为:数组长度-1。 如果发生了下标越界的现象,可能破坏了其它存储单元的数据,甚至破 坏程序代码。 (3)下标必须是整型表达式,若为小数,则自动取整。如a[2.6] 系统自动默认为a[2]。

第七章 数组

第七章  数组

例题1:求10名同学的平均分。7_2.c
main( ) { int a[10]; int i ,sum=0,ave; for (i=0;i<10;i++) scanf("%d",&a[i]); /*类型说明符 数组名[常量表达式]
数组名为a,此数组有10个整型元素*/
/* a[0], a[1], a[2], a[3], a[4]
3. 如果输入多个字符串,则可用空格隔开
char str1[20],str2[20],str3[20]; scanf(“%s%s%s”,str1,str2,str3); 输入为 How are you str1中为“How”, str2 中为“are”, str3中为 “you”。
7.3.3字符数组举例: 从键盘输入一行字符串(<20),求字符串中 小写字母的个数。7-6.c main() {char str[20],len=0,i; 求这个字符串 scanf ("%s",str); 的长度? for (i=0; str[i]!='\0';i++) if (str[i]>='a'&&str[i]<='z') len++; printf ("\n%d",len); }
1 2 3 4 5 6 7 8 9 a[8] 10 a[9]
a[0] a[1] a[2] a[3] a[4]
a[5] a[6] a[7]
2. 不允许对数组的大小作动态定义,即数组的大 小不能是变量。 例如:下面是不合法的: int n; float a[n]; 3. 数组元素的使用与变量是一样的。可以赋值, 也可作各种运算,还可以输入和输出。 例如:a [0]=1 ; a[1]=a[0]型_char、实 型_float)的数据外, C语言还提供了构造类型 的数据,它们有:数组类型、结构体类型、共用 体类型。构造类型数据是由基本类型数据按一定 规则组成的。

C语言基础 第7章 数组

C语言基础 第7章 数组

一维数组: float mark[100];
低地址
每个数据元素占用 的字节数,就是基
类型的字节数 一个元素占4个字节
高地址
86.5 mark[0]
92.0 mark[1]
77.5 mark[2]
52.0 mark[3]
.
.
.
.
.
.
94.0
mark[99]
第7章 数组
7.1.2 一维数组的初始化 ❖ 初始化:在定义时指定初始值,编译器把初值
例:int a[10] = {0,1,2,3,4}; 仅前5个元素赋初值,后5个元素自动赋为0。 3、全部元素均初始化为0,不允许简写。 int a[10] = {0,0,0,0,0,0,0,0,0,0}; 不能写成:int a[10]={0*10};
第7章 数组
❖ 不能简写为:
❖ static int a[10] = {0*10};
第7章 数组
❖ 注意: 2)C语言不允许对数组的大小做动态定义, 如:
❖ int n;
❖ scanf("%d",&n);
❖ int a[n]; ❖ 因为在编译时,C编译器根据已知数组大
小分配内存。//只针对全局变量
❖ 说明:
1)数组名:按标识符规则。本例a就是数 组名。
2)整型常量表达式:表示数组元素个数 (数组的长度)。可以是整型常量或符 号常量,不允许用变量。整型常量表达 式在说明数组元素个数的同时也确定了 数组元素下标的范围,下标从0开始~整 型常量表达式-1(注意不是1~整型常量 表达式)。
7.1.3 数组元素的引用
❖ C语言规定,不能引用整个数组,只能逐 个引用元素,元素引用方式:

南昌大学第七章数组答案

南昌大学第七章数组答案

A.int a[]="string";B.int a[5]={0,1,2,3,4,5};C.char a="string";D.char a[]={0,1,2,3,4,5};A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. B.C. D.A. B.C. D.A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1) 确定A. a[0][2*1]B. a[l][3]C. a[4-2][0]D. a[0][4]A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+1 确定A. B.C. D.A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. if(s1>s2)B. if(strcmp(s1,s2))C. if(strcmp(s2,s1)>O)D. if(strcmp(s1A. B.C. D.A. int a[3][ ];B. float a(3C. double a[1][4];D. float a(3)(4);A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1)A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A BC DA BC DA BC DA BC DA BD C整体赋值A BC DA BC DA BC DA BC DA BC DA BCD 值A B C DA B C DA B C DA B C DA) abcdefA) abcdA) abcdA) abcdef确定[C] 教师批改:36、给出以下定义:char x[ ]="abcdefg";char y[ ]={…a…,…b…,…c…,…d…,…e…,…f…,…g…};则正确的叙述为A)数组X和数组Y等价B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度确定[C] 教师批改:37、设有static char str[ ]="Beijing";则执行printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为A) 5 B) 7C) 12 D) 14确定[A] 教师批改:38、请选出以下程序段的输出结果#include<stdio.h>main(){ char sl[10], s2[10], s3[10], s4[10];scanf("%s%s",s1,s2); gets(s3); gets(s4);puts(s1); puts(s2); puts(s3); puts(s4);}输入数据如下:(此处<CR>代表回车符)aaaa bbbb<CR>A bbbbB bbbbC) aaaa bbbbD ccccA BC DA不可以直接用数组名对数组进行整体输入或输出BC数组元素的下标超出所定义的下标范围时,系统将给出DA BC DA B C DA B C DA B C DA BC DA B C D。

大学课件C语言数组

大学课件C语言数组
第3趟排序后成为:37, 48, 12, 26, 49, 64, 75, 97 第4趟排序后成为:37, 12, 26, 48, 49, 64, 75, 97 第5趟排序后成为:12, 26, 37, 4 8, 49, 64, 75, 97
第6趟排序后成为:12, 26, 37, 4 8, 49, 64, 75, 97
printf("ENTER 10 REAL NUMBERS\n"); for(i=0;i<10;i++) { scanf("%f",&value); x[i]=value; } total=0.0; for(i=0;i<10;i++) total=total+x[i]*x[i];
/*.....PRINTING OF x[i] VALUES AND TOTAL......*/
number[0] number[1] number[2] number[3] number[4]
C语言中,数组元素的序号(下标)从0开始。
对数组的引用超过了所声明的范围,会导致不可预知的结果.
9
数组的作用
数组元素的作用相当于简单变量 数组名代表的是数组在内存中的首地址 同一个数组中的元素在内存中是按顺 序连续存放的
/*.....PRINTING OF x[i] VALUES AND TOTAL......*/
printf("ENTER 10 REAL NUMBERS\n"); for(i=0;i<10;i++) { scanf("%f", &x[i]); total=total+x[i]*x[i]; } printf("\n"); for(i=0;i<10;i++) printf("x[%2d]=%5.2f\n", i, x[i]); printf("\ntotal=%.2f\n", total);

C语言(第七章数组)

C语言(第七章数组)

对部分元素赋初值(前面的连续元素)。如: int b[10]={0,1,2,3,4};
表示数组元素的值为:
b[0]=0; b[1]=1; b[2]=2; b[3]=3; b[4]=4; 后5个元素的初值为0。
注意:不能只对不连续部分元素或后面的连续
元素赋初值。 语句: int a[10]={, , , , ,1,2,3,4,5};
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"); } }
运行结果如下:
1
1
2
3
5
8
89
13
144
21
133
34
377
55
610
987
1597
1584
4181
6765
四、简单预处理指令
1. 指令格式:
#define 符号常量
2. 指令作用
文本串
用整型表达式替换程序中所有的符号常量。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

14. 在上题中利用数组的排序函数ASORT()进行 排序。 15. 编写竞赛用评分程序:去掉一个最高分, 去掉一个最低分,选手的得分最后为余下分数的 平均分。如图7-18所示。
三、编程题 1. 某数组有10个元素,值由计算机随机产生。要求将前5个元素与后5个元 素对换。即第1个元素与第10个元素互换,第2个元素与第9个元素互换,…, 第5个元素与第6个元素互换。输出数组对换后各元素的值。 2. 编写程序,建立并输出一个10×10的矩阵,该矩阵两条对角线元素为1, 其余元素均为0。 3. 有一个8×6的矩阵,各元素的值由由计算机随机产生,求全部元素的平 均值,并输出高于平均值的元素以及它们的行、列号。
7.1.2 数组的维数 如果一个数组的元素只有一个下标,则 称这个数组为一维数组。例如:A(5) 一维数组中的下标又称为索引(Index) 有两个下标的数组称为二维数组,其中的数 组元素称为双下标变量。例如:A(5,5)
7.2 使用数组
7.2.1 数组的定义 1. 数组的声明 数组在使用前必须先声明。声明的语法格式为
13. 某校召开运动会。有10人参加男子100米短跑决赛,运动员号码和成绩见表76,试设计一程序,按成绩排名次。
运动员号码 011 号 095 号 233 号 246 号 008 号 成绩 12.4 s 12.9 s 13.8 s 14.1 s 12.6 s 运动员号码 476 号 201 号 171 号 101 号 138 号 成绩 14.9 s 13.2 s 11.9 s 13.1 s 15.1 s
2. 与数据表记录进行数据交换的命令 用于数组与数据表记录之间进行数据交换的命令有: ① SCATTER——将数据从当前记录复制到数组中去。复制一条记录 ② GATHER——用来自数组的数据替换当前表中的数据。 ③ COPY TO ARRAY——从当前表向一个数组复制数据。 ④ APPEND FROM ARRAY——用来自数组的数据给当前表追加新记录。
USE RSDA SCATTER TO A FIELDS 职称 LIST MEMO LIKE A GO 3
&&当前记录职称的内容写到变量A
GATHER FROM A FIELDS 职称 REPL 职称 WITH A
&&变量A的数据替换职称字段数据
对象变量
对象数组是指引用对象的数组,即数组中保存的是对象。
声明数组f()
f(1) ← 1 : f(2) ← 1
i 从3 到n f(i) ← f(i-1) + f(i-2) 输出f(i)
3. 二维数组表示为一维数组 假如建立了一个二维数组,其下标也可以使用一维数组表示法 来表示。如: 二维数组表示法转换成一维数组表示法: 序号(一维数组)=(行数 – 1)*数组列数 + 列数 使用AELEMENT( )函数取得一维数组表示法的元素位置,即: 序号(一维数组)= AELEMENT(数组名,行数,列数)
例: Dime c(5,5) LIST MEMORY LIKE C
【例7-1】随机产生14个两位整数,找出其最大值、最小值和平均值。 分析:问题可以分为两部分,一个是产生14个随机整数,一个是对这14个整数求 最大、最小以及平均值。为此,需要使用数组。 根据以上分析画出流程图如图7-1、图7-2所示。
4. 矩阵转置。即将矩阵行、列互换:
2 6 1 5 1 5
3 7 2 6 2 6
4 8 3 7 3 7
5 9 4 转置 8 4 8
2 3 4 5
6 7 8 9
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
5. 求方阵的两个对角线元素和。 6. 找出二维数组n×m中的“鞍点”。所谓鞍点是指它在本行中值最大,在本 列中值最。输出鞍点的行、列号,有可能在一个数组中找不到鞍点,如无鞍点则 输出“无”。 7. 矩阵的加法运算。两个相同阶数的矩阵A和B相加,是将相应位置上的元素 相加后放到同阶矩阵C的相应位置。 2 41 25 12 24 7 14 65 32 43 24 3 23 4 34 66 28 37 + = 81 1 12 1 51 32 82 52 44 4 43 37 34 3 13 38 46 50 8. 矩阵的乘法运算。设A = (aij)为n×k矩阵,B = (bij)为k×m矩阵,则有C = AB 为n×m矩阵,C中元素:
min ← a(i)
输出max, min, s
2. 数组变量的释放 使用RELEASE命令可以从内存中释放变量和数组。其语法是: RELEASE {〈变量列表〉|〈数组名列表〉} 其中各变量或数组名用逗号分隔。
【例7-2】斐波纳契(Fibonacci)数列问题。 (一种整数数列, 其中每数等于前面两数之和) 其中第n项的计算公式为: Fib(n) = Fib(n–1) + Fib(n–2)
p ← "" i 从1 到14 a(i) ← INT(RAND() * (99-10+1)) + 10 P ← p + a(i) 输出p max ← 10,min ← 100,s ← 0 i 从1到14 如果 a(i) > max

如果 a(i) < min 真 s ← s + a(i)
max ← a(i)
Байду номын сангаас第7章 数

在许多场合,使用数组可以缩短和简化程序,因为可 以利用下标设计一个循环,高效地处理多种情况。
7.1 数组的概念
7.2 使用数组
7.3 对象数组 习题7
7.1 数组的概念 7.1.1 数组与数组元素 数组是用一个统一的名称表示的、顺序排列的 一组变量。数组中的变量称为数组元素,用数字 (下标或称索引)来标识它们,因此数组元素又 称为下标变量。 在使用数组时要注意以下几点: ① 数组的命名与简单变量的命名规则相同。 ② 下标必须用括号括起来 ③ 下标可以是常数、变量或表达式。 ④ 下标必须是整数 注意:数组使用前必须声明
把 thisform.pageframe1.page1.text2.value= thisform.pageframe1.page1.text1.value 改写为: AB= thisform.pageframe1.page1 AB.text2.value=AB.text1.value 或: WITH thisform.pageframe1.page1 .text2.value = .text1.value ENDWITH
• 【例7-3】设有一个5×5的方阵, 其中元素是由计算机随机生成 的小于100的整数。求出: • ① 主对角线上元素之和。 • ② 方阵中最大的元素,如图 7-6所示。 • 分析:方阵中的元素可以用一 个二维的数组表示。赋值时转 换成一维数组,计算时则利用 二维数组的性质。
7.2.3 数组数据的处理 1. 处理数组元素的函数 数组提供了一种快速排序数据的方法。 可以使用如下函数来处理数组元素: ① 数组元素的排序——ASORT()。 ② 数组元素的搜索——ASCAN()。 ③ 数组元素的删除——ADEL()。 ④ 数组元素的插入——AINS()。 ⑤ 数组元素的个数——ALEN()。 【例7-4】由计算机随机生成10个互不相 同的数,然后将这些数按由小到大的顺序 显示出来。如图7-7所示。 例题:数组排序 分析:这是一个“排序”问题,使用排序 函数可以轻而易举地对数组元素进行排序。
习题7
一、选择题 1. 下列关于VFP数组的叙述中,错误的是: A) 用DIMENSION和DECLARE都可以定义数组 B) VFP只支持一维数组和二维数组 C) 一个数组中各个数组元素必须是同一种数据类型 D) 新定义数组的各个数组元素初值为.F. 2. 使用命令DECLARE mm(2, 3)定义的数组,包含的数组元素的个数为: A) 2 B) 3 C) 5 D) 6 3. 在VFP中,要使用数组: A) 必须先定义 B) 必须先赋值 C) 赋值前必须定义 D) 有时可以不必先定义 二、填空题 1. 数组的最小下标是_________,数组元素的初值为____________。 2. 执行语句DIMENSION M(3), N(2,3)后,数组M和N的元素个数分别为____ 和____。 3. 执行语句DIMENSION N(4, 5)后,元素N(3, 4)的一维数组表示为 ____________。
7.3 对象数组
【例7-6】在例4-7中使用对象变量。 在例4-7的基础上改写代码。 编写表单的Init事件代码: PUBLIC txt1,txt2 txt1 = THIS.Container1.Text1 txt2 = THIS.Container2.Text1 改写表单的Activate事件代码: txt1.SetFocus 编写表单的Destroy事件代码: txt1 = 0 txt2 = 0 RELEASE txt1, txt2
cij ait btj
t
k
i 1,2, , n j 1,2, , m
9. 设某班共10名学生,为了评定某门课程的奖学金,按规定超过全班平均成绩 10%者发给一等奖,超过全班成绩5%者发给二等奖。试编制程序,输出应获奖学 金的学生名单(包括姓名、学号、成绩、奖学金等级)。 10. 为上题增加一个命令按钮,统计一个班学生0~9、10~19、20~29、…、 90~99及100各分数段的人数。 11. 利用随机函数,模拟投币结果。设共投币100次,求“两个正面”、“两个 反面”、“一正一反”3种情况各出现多少次。 12. 设计一个“通讯录”程序。当用户在下拉列表框中选择某一人名后,在“电 话号码”文本框中显示出对应的电话号码。当用户选择或取消“单位”和“住址” 复选框后,将打开或关闭“工作单位”或“家庭住址”文本框,如图7-17所示。
相关文档
最新文档