数组

合集下载

数组

数组

C语言程序设计
20/60
【例4.4】
编写程序,将一个二维数组中行和列元素互换, 存到另一个二维数组中。设数组
1 a= 2 5 9 6 8
1 2 b= 5 6 9 8
C语言程序设计
21/60
main() { int a[2][3]={{1,5,9},{2,6,8}}; int b[3][2],i,j; printf("Array a:\n"); /* 输入原来数组的数据 */ for(i=0;i<2;i++) { for(j=0;j<3;j++) { printf("%4d",a[i][j]); b[j][i]=a[i][j]; /* 将两个数组元素相互交换 */ } printf("\n"); }
10/60
冒泡法排序
例如:int a[5]={4,7,3,9,1};则对数组 的排序过程如图所示。
第一次遍历 4 7 3 9 1 4 7 3 9 1 4 3 7 9 1 4 3 7 9 1 4 3 7 1 9 第二次遍历 4 3 7 1 3 4 7 1 3 4 7 1 3 4 1 7 第三次遍历 3 4 1 3 4 1 3 1 4 第四次遍历 3 1 1 3
18/60
2.二维数组元素的输入和输出
二维数组元素同以前学习过的普通变量一样,可 以通过格式输入和输出函数来进行输入和输出。 例如: scanf("%d,%d",&a[0][1],&a[2][1]);
/*从键盘上输入值赋给了数组元素a[0][1]和a[2][1]*/
printf("%d,%d",a[0][0],a[2][2-1]); /*输出数组元素a[0][0]和a[2][1]*/

第八章 数组

第八章  数组

例: int a[2][3]; 它在内存情况:
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
8.2 二维数组的引用与初始化
一、引用形式:数组名[下标][下标]
(1)下标可以是整型表达式或符号常量 例如:a[2][3],a[2-1][2*2-1]
(2)数组元素可以出现在表达式中,也可以被赋值。
例如: 有定义 int a[10]; 数组元素引用举例 /*可以引用元素的从a[0]到a[9]*/
a[5]=6; a[7]=a[5]++;
a[6]=3; a[0]=a[5]+a[7]-a[2*3];
8.1.3 一维数组的初始化
1.初始化--在定义数组时对数组元素赋初值; 2.初始化方法:
[static] 数组类型 数组名[数组长度]={数组元素值};
运行结果: I am happy
例8-stdio.h>
void main( )
{
char c[5][5]={{‘ ‘,’ ‘,’* ‘},{‘ ‘,’*’,’ ‘,’*’},{‘*’,’ ‘,’ ‘,’ ‘,’*’}, {‘ ‘,’*’,’ ‘,’*’},{‘ ‘,’ ‘,’*’}};
举例:
(1)给数组a各元素赋以初值: [static] int a[10]={0,1,2,3,4,5,6,7,8,9}; (2)可以只给一部分元素赋初值,后几个元素值为 0 [static] int a[10]={0,1,2,3,4}; (3)如果想使一个数组中全部元素值为0,可以写成: static int a[10]={0,0,0,0,0,0,0,0,0,0} 或static int a[10]; (4)在全部数组元素赋初值时,可以不指定数组长度: int a[5]={1,2,3,4,5}; 可以写成: int a[ ]={1,2,3,4,5};

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语言规定,不能引用整个数组,只能逐 个引用元素,元素引用方式:

数组知识

数组知识

第六章一、数组的概念数组是共享一个名字的一组具有相同类型的连续存放的变量的集合数组是一组有序数据的集合数组中各数据的排列是有一定规律的,下标代表数据在数组中的符号所有的数组元素具有统一的数据类型数组名是数组的首地址,每个元素是连续存放的数组元素是由数组名和下标唯一确定二、一维数组①怎样定义一维数组一维数组的定义方式为类型标识符数组名[常量表达式]其中类型标识符:任一种基本数据类型或者是构造数据类型数组名:自己定义的数组标识符,遵从标识符命名规则常量表达式表示数组的长度,也是元素的个数注意:(1)数组名不能和变量名相同(2)定义的时候要指定数组中的元素个数常量表达式可以包括常量和符号常量比如int[3+5]是合法的但是不可以包括变量int a[n]是不合法的C不允许对于数组的大小进行动态定义不过如果在被调用的函数中(不包括main)中定义数组其长度可以是变量或者非常量的表达式比如Void func(int n){ int a[2*n] //合法的n的值从实参中传来调用func函数时形参n从实参中得到值这种情况叫做“可变长数组”,允许在每次调用func时有不同的n不过每次使用的时候数组的长度是固定的(3)数组的大小不可以是浮点常量(4)定义数组的时候不能没有数组长度int a[] 非法②一维数组元素的引用数组元素是组成数组的基本单元 数组元素也是一种变量 引用的格式数组名[数组下标]其中数组下标只可以是整型常量或者整型表达式 如果是小数的话c 编译的时候会自动取整数组在定义之后数组名代表数组的首地址其中的元素按照下标依次存放而且下标从0开始!数组定义之后系统将给其分配一定的内存单元其所占内存单元的大小和数组元素的类型和数组的长度有关数组所占内存单元字节数=数组大小*sizeof (数组元素类型)其中Int 2字节(TC 中)编译器不同可能不同 Char 1 Short 1 Long 4 Float 4 Double 8比如要引用a[2] 就会先计算2000+2*2=2004 然后再从2004中取出内容占用的字节数为: 10 * sizeof(int) = 10 * 2 = 20内存地址2000 200220042018a……第1个元素 ……第2个元素 第3个元素第10个元素注意事项(1)只可以逐个引用数组的元素,不能一次性引用整个数组(所以常用循环)(2)数组引用要注意越界问题C语言对于数组不作越界检查,但是下标超范围会死机或者程序错误(3)一般对于数组长度会采用宏定义define③一维数组的初始化如果对于一维数组不赋初值,则为随机数对于数组元素的赋值,叫做数组的初始化不赋值不叫初始化数据类型符数组变量名[常量表达式]={表达式1…表达式n}(1)在定义数组时对全部数组元素赋予初值Inta[5]={1,2,3,4,5};数组的元素要放在花括号里边,元素之间用逗号隔开花括号里边的数据叫做“初始化列表”(2)也可以只给数组中的一部分元素赋值Inta[5]={1,2,3};则只给前三个赋值,后边两个自动为0(3)如果想让一个数组中的元素全部都为0,可以写Int a[5]={0,0,0,0,0}; 或者Int a[5]={0};//未赋值的部分自动为0(4)在对全部数组元素赋初值的时候由于元素的个数确定可以不用指定数组的长度Int a[]={1,2,3,4,5};虽然是没有指定长度不过系统会自动默认是5不过不可以int a[];所以如果要定义的长度比赋值的长度长,就要写下标注意:表达式的个数不能超过数组变量的大小如果定义数值型数组的时候未被初始化列表指定初始化的都是0如果定义字符型数组的时候未被初始化列表指定初始化的都是’\0’如果定义指针型数组的时候未被初始化列表指定初始化的都是NULL空指针C语言除了在定义数组变量时可以对数组整体赋值之外无法再全体赋值所以Char a[3]A=,‘1’,’2’,’3’-A*+=,‘1’’2’3’-;A*3+=,‘1’’2’’3’-; 都是错的所以数组定义后只能用赋值语句一一赋值Char str[80];Str*0+=’b’ str*1+=’y’ str*2+=’e’ str*3+=’\0’ //数组str赋值为一字符串bye一般一维数组的赋值使用循环语句④一维数组程序举例冒泡法折半查找法斐波那契数列请见第二章书上出现的算法三、二维数组①怎样定义二维数组类型符数组名[常量表达式][常量表达式];二维数组可以看作特殊的一维数组 它的元素又是一维数组a[0] a[0][0] a[0][1] a[0][2] a[1] a[1][0] a[1][1] a[1][2] a[2] a[2][0] a[2][1] a[2][2]数组元素的存放顺序已行序优先最右下标变化最快 二维数组的a[0]a[1] 不可以当成数组元素变量使用 对于a[0]是数组名 是a[0][0] a[0][1] a[0][2]的地址 二维数组的存贮空间 是先按照行序再列的比如float a[3][4] 一共有12个元素由于是float 类型每个元素占四个字节所以一共是48个字节 存储顺序a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23②怎样引用二维数组数组名[下标][下标]对于int a[4][5]以及a[4][5]有什么差别前者定义了4行五列的二维数组最多引用到a34而a45 说明引用到了第五行和第六列则至少应该为int a[5][6]③二维数组的初始化数据类型数组变量名[行常量表达式][列常量表达式]= {{第0行初值表},{第1行初值表},…{最后1行初值表}}(1) 分行给二维数组赋初值Int a[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};(2) 可以把所有数据都放在一个花括号内,按照数组元素排列顺序依次赋值Int a[3][4]={1,2,3,4,5,6,7,8,9,0,1,2};014523(3)可以对于部分元素赋初值Int a[3][4]={{3},{4},{5}};也可以只对某几行赋值(4)定义的时候第一维长度可以省略第二维不能省略Int a[][4]={{0,0,3},{},{1,2}}④二维数组程序举例对二维数组的每个元素进行操作要用二重循环外层循环控制行下标的变化,内层循环控制列下标变化输出二维数组两条对角线元素值的和Sum1+=a[i][i] //主对角线Sun2+=a[i][2-i] //副对角线矩阵左下半三角元素中的值置为0For(i=0;i<n;i++)For(j=0;j<=I;j++)A[i][j]=0;对二维数组元素的操作,实际上就是先找出对应元素的行下标与列下标,然后进行操作。

数组的定义

数组的定义

二、数组的基本操作
1. 初始化 InitArray(A,n,bound1,…,boundn )
如果维数n和各维长度合法,则构造相应数组A,并 且返回1
2. 销毁
Destroyarray(A)
销毁已存在的数组A
3. 取值
Getarray(A,e,index1,…,indexn)
如果各下标不超界,则e被赋值为所指定的A的元素值, 并且返回1
5.3.1 特殊矩阵的压缩存储
一、对称矩阵 在一个n阶方阵A中,若元素满足下述性质: aij=aji ,0≦i,j≦n-1, 则称A为对称矩阵。 对称矩阵中的元素关于主对角线对称,故只要存储矩阵
中上三角或下三角中的元素,让每两个对称的元素共享一 个存储空间,这样,能节约近一半的存储空间。
不失一般性,我们按“行优先顺序”存储主对角线(包 括对角线)以下的元素。在这个下三角矩阵中,第i行恰 有i+1个元素,元素总数为:n(n+1)/2.
{
int p,q,col;
b->mu=a->nu; b->nu=a->mu; b->tu=a->tu;
if (b->tu)
{ q=0; for (col=0;col<a->nu;++col ) for (p=0;p<a->tu;++p )
//扫描A的所有列 //扫描所有非零元
if (a->data[p].j==col)
for(col=0;col<n;col++)
for(row=0;row<m;row++)
b[col][row]=a[row][col]; //其时间复杂度为0(nu×mu)

第6讲数组

第6讲数组

第6讲数组数组是具有相同类型的一组数据。

数组按照数组名、数据元素的类型和维数来进行描述。

当访问数组中的数据时,可以通过下标来指明。

数组具有以下属性。

(1)数组可以是一维、多维或交错的。

(2)数值数组元素的默认值设置为0或空。

(3)数组的索引从0开始:具有n个元素的数组的索引是0~n-1。

(4)数组元素可以是任何类型,包括数组类型。

一、一维数组1.数组的声明数据类型[] 数组名如:int[] myArray;数组的大小不是其类型的一部分,声明一个数组时,不用管数组长度如何。

2.数组对象的创建声明数组并不实际创建它们。

在C#中,使用new关键字创建数组的对象。

数组名=new 数据类型[数组大小表达式];如:myArray=new int[5];此数组包含myArray[0]~myArray[4]new运算符用于创建数组并将数组元素初始化它们的默认值。

此例初始化为0。

如:String[] myStringArray=new string[6]此数组包含myStringArray[0]~myStringArray[5],数组元素初始化为空。

3.一维数组的初始化数据类型[] 数组名=new 数据类型[] {初值表};例:int[] myArray = new int[]{1,3,5,7,9};或int[] myArray;myArray = new int[]{1,3,5,7,9};或int[] myArray= {1,3,5,7,9};4.一维数组元素的访问数组名[下标](1)用foreach遍历数组:int[] myArray= {1,3,5,7,9};foreach (int i in myArray){Console.WriteLine(i);}(2)用for语句遍历数组int[] myArray= {1,3,5,7,9};for (int i = 0; i < 5; i++){Console.WriteLine(myArray[i]);}或int[] myArray= {1,3,5,7,9};for (int i = 0; i < myArray .Length ; i++){Console.WriteLine(myArray[i]);}冒泡排序:int[] arr = new int[] { 10, 8, 3, 15, 26, 11, 30 };for (int j = 1; j < arr.Length; j++){for (int i = 0; i < arr.Length - j; i++){if (arr[i] < arr[i + 1]){int temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}}for (int i = 0; i < arr.Length; i++){Console.Write(arr[i] + " ");}二、值类型和引用类型值类型在栈(Stack)上分配,而引用类型在堆(Heap)上分配。

数组的定义

数组的定义
第七章 数组
1、概述 、 2、一维数组的定义和引用 、 3、二维数组的定义和引用 、 4、字符数组 、
章节总览
1. 基本类型之外,C语言还提供了构造类型的数据, 它们有:数组类型、结构体类型、共用体类型。构 造类型数据是由基本类型数据按一定规则组成的, 因此也可以称之为“导出类型”。 2. 数组是有序数据的集合 有序数据的集合。 有序数据的集合 (a)数组中的每一个元素都属于同一个数据类型。 (b)用一个统一的数组名和下标,唯一的确定数组 中的元素。
第二轮交换: (1) 8 (2) 5 (3) 5 (4) 5 第二轮结束 5 5 4 4 2 2 2 0 0 0 0 9 9 9 9 /*8>5,交换*/ /*8>4,交换*/ /*8>2交换*/ /*8>0,交换*/
8
4 4 4
8
2 2
ห้องสมุดไป่ตู้
8
0
8
9
那么第二轮进行了 n-2=6-2=4 次比较即循环了4次 总结:第 i 轮进行了 n- i 比较即循环了n- i 次. 一共要n-1轮比较即外围循环n-1次
一维数组的程序举例( ) 一维数组的程序举例(1)
运行结果: 例 7.2 用数组来处理Fibonacci数列问题。(见教材124页) 1 1 2 3 5 程序如下: 8 13 21 34 55 89 144 233 377 610 /*行号1*/ main( ) { 987 1597 2584 4181 6765 /*行号2*/ int i; /*行号3*/ /*行号4*/ /*行号5*/ /*行号6*/ /*行号7*/ /*行号8*/ /*行号9*/ /*行号10*/ /*行号11*/ int f[20]={1,1}; for(i=2,i<=20;i++) f [ i ]=f [ i -1]+f [ i -2]; for(i=0,i<20;i++) { if( i %5= =0) printf(“\n”);/*控制换行,每行输出五个数*/ printf(“%12d”,f [ i ]); } }

第六章 数组.

第六章 数组.

sc(i, j) = InputBox("输入sc(" &i & "," & j & ") 的值") Next j Next I
3、数组在内存中存放的顺序 数组在内存中存放时,首先变化的是最后一维的 下标,然后变化倒数第二维的下标…(按行存放)。 例如,数组A(4,3)在内存中的分配如下:
A(0,0) A(1,0)
其表示形式: A(1),A(6) X(1,1), X1(1,6), X(2,6)
Y(0,0,0), Y(1,2,5)
6.2 一维数组
一、 一维数组的声明 (无隐式声明)
形式:
Dim 数组名([<下界>to]<上界>)[As <数据类型>] 或: Dim 数组名[<数据类型符>]([<下界>to]<上界>) ‘ 声明了a数组有6个元素 数组元数的数据类型
二、 访问整个数组
对于数组中的各个元素,我们可以用数组名称 (索引值)进行访问。然而,是无法只用数组名称就 对所有的元素进行计算。
例如:要把数组中的各元素值都加上1 这是错误的! Dim X(4)
X=X+1 For I=0 to 4 x(i)=x(i) +1 这是正确的!
Next
无法对数组中的所有元素同时进行运算处理。 但是,可以一次“读取”整个数组本身。
6.4 数据排序与查找
数据交换
将A和B两个变量中的数值交换
A=B B=A Temp=A
A=B
B=Temp
一、选择排序
算法思想:
1)对有n个数的序列(存放在数组a(n)中),从中选 出最小(升序)或最大(降序)的数,与第1个数交 换位置;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验6 数组的使用6.1 实验目的(1)掌握一维数组、二维数组的定义存储分配方法;(2)了解如何给数组赋初值;(3)熟悉利用循环实现数组的赋值、输出以及处理编程方法。

(4)了解命令行参数数组的使用(5)熟悉数组方法参数传递的特点。

6.2 知识要点6.2.1 数组的定义与分配空间(1)定义数组方括号的位置可在数组名前,也可在后。

int a[];等价于 int [] a;(2)给数组分配空间的办法:办法1:通过new运算符,例:a=new int[10];办法2:给数组赋初值将自动给数组分配空间;例:int b[]={1,2,3,4,5,3,4,6,7,3};Java规定一维数组的第1个元素的下标为0。

(3)关于数组的默认初值问题基本类型数组元素中存放的是数据本身,而引用类型的数组元素中存放的是对象的引用,基本类型上数组在分配空间后,不论数组在什么位置定义,均按基本类型变量的默认值规定赋初值,而引用类型数组在分配空间后默认初值为null。

(4)二维数组可看作是数组的数组,每个元素包括行列位置。

(5)数组的大小用length属性可求得,一维数组元素的最大下标为其length-1。

6.2.2 数组的访问(1)用一重循环可遍历访问一维数组的所有元素。

例如,以下语句给数组a的所有元素赋值为0。

for (int k=0;k<a.length;k++) a[k]=0;(2)二维数组的遍历可用二重循环来处理。

例如,以下代码给二维数组的所有元素值增1。

for (int i=0;i<x.length;i++)for(int j=0;j<x[i].length;j++)x[i][j]++;6.2.3 命令行参数数组是一个字符串数组(1) 命令行中的输入串可以有双引号,也可以没有,双引号括住的部分为一个串,在双引号外的空格作为串之间的分隔符。

(2) 命令行数组的大小有命令行中输入数据的个数决定。

(3) 程序运行时如果未输入任何参数,而访问命令行参数数组的元素,则将抛出数组访问出界异常。

6.2.4 数组作为方法参数(1)方法的形参定义为一个数组,实际数组由实参传递,方法中对形参数组的操作实际上是访问实参数组。

(2)利用数组作为参数可编写对数组操作的一些通用程序,例如:求所有元素的平均值,将数组排序等。

6.3 样例程序样例1:利用随机函数产生16个随机整数给一个4*4的二维数组赋值。

1)按行列输出数组2)求最外一圈元素之和。

3)求主角线中最大元素的值,及其位置。

【参考程序】public class sum {public static void main(String args[]) {int a[][]=new int[4][4];int s=0; //计算和/* 用随机函数给数组赋值 */for (int i=0;i<a.length;i++)for (int j=0;j<a[i].length;j++)a[i][j]=(int)(Math.random()*10);/* 按行列输出数组 */for (int i=0;i<a.length;i++) {for (int j=0;j<a[i].length;j++)System.out.print("\t"+a[i][j]);System.out.println();}/* 求最外一圈元素之和*/for (int i=0;i<a.length;i++)for (int j=0;j<a[i].length;j++)if (i==0||i==a.length ||j==0||j== a[i].length)s+=a[k][a.length-1];System.out.println("sum="+s);/* 主对角线中最大元值,及其位置 */int pos=0;for (int k=1;k<a.length;k++) {if (a[k][k]>a[pos][pos])pos=k;}System.out.println("主对角线最大元为a["+p+"]["+p+"]="+a[p][p]);}}【编程技巧】(1) 用二重循环访问二维数组的元素,外循环控制行变化,内循环控制列变化;(2) 如何最外一圈元素的特征,从而找出所有最外一圈元素。

(3) 主对角线上元素行、列值相等,所以可用一重循环遍历元素。

样例2 就一维数组问题编写如下方法:1) 求一个数组的最大元素值:public static int maxe(int a[])2) 求一个数组的所有元素的平均值:public static int average(int a[])3) 查找某个数在数组中的位置:public static int search(int a[],int k)注: 从前往后查,返回在数组中第一次出现位置,如果未查到,则返回-1。

利用随机函数产生20个整数给一个数组赋值,分别验证以上方法。

【参考程序】import java.io.*;public class test {/* 求数组的最大元素值 */public static int maxElement(int a[]) {int m=a[0];for ( int k=1;k<a.length;k++)if (m<a[k])m=a[k];return m;}/* 所有元素的平均值 */public static int average(int a[]) {int s=0;int len=a.length;for ( int k=0;k<len;k++)s=s+a[k];return s/len;}/* 查找数b在数组a中的首次出现位置*/public static int search(int a[],int b) {int len=a.length;for ( int k=0;k<len;k++)if (a[k]==b)return k;return -1;}public static void main(String args[]) {int b[]=new int[20]; //定义数组、大小/* 给数组赋值并输出数组 */for (int k=0;k<b.length;k++) {b[k]=(int)(Math.random()*20);System.out.print(b[k]+",");}System.out.println();/* 调用方法求最大元,平均值 */System.out.println("the max value of b is"+maxElement(b)); System.out.println("the average of b is"+average(b));BufferedReader br=new BufferedReader(newInputStreamReader(System.in));try {int x=Integer.parseInt(br.readLine());int p=search(b,x); //调用方法查找在数组中位置if (p!=-1)System.out.println(x+"is at b["+p+"]");elseSystem.out.println("not found "+x+" in b array");}catch(IOException e) { }}}【编程技巧】(1) 用一重循环可实现对一维数组的元素遍历访问,求最大、累加如何实现。

(2) 如何实现元素的查找,根据值查找其出现位置。

从头到尾循环比较,找到返回。

什么情况下给出“未找到”的结论。

样例3:编写一个方法实现冒泡排序。

冒泡排序的思想是:每趟从第一个元素开始,两两比较,将大的放到后面,这样,第一躺下来,最后的元素为最大;下一躺就只要比到n-1即可。

比完n-1躺,则排好序。

输入10个整数,利用冒泡排序将这些整数按由小到大输出。

【参考程序】import java.io.*;public class Ball{public static void main(String args[]) throws IOException {int a[]=new int[10];BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));/* 获取数据给数组赋值 */for(int n=0;n<a.length;n++) {System.out.print("输入一个整数");a[n]=Integer.parseInt(buf.readLine()); //将输入数字串转化为整数给数组元素赋值}/* 排序前的数组输出 */System.out.print("排序前...");for(int n=0;n<a.length;n++)System.out.print(" "+a[n]);sort(a); //调用排序方法/* 将排序后的数组输出 */System.out.println();System.out.print("排序后... ");for(int n=0;n<a.length;n++)System.out.print(" "+a[n]);}/* 将数组a按由小到大排序 */static void sort(int a[]) {int n= a.length;for (int i=0; i<n-1; i++)for (int j=0;j<n-i-1;j++)if (a[j]>a[j+1]) { //相邻两两比较,大的往后冒 /* 交换a[j]和a[j+1] */int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}【编程技巧】(1) 如何表达两两比较。

(2) 外循环控制要多少趟,内循环控制每趟的比较与交换。

(3) 每趟比较的始点和终点的确定,尤其是终点的变化规律。

6.4 上机练习基本题1)利用随机函数产生20个学生的英语成绩存入一个数组中。

●输出数组所有元素,每行输出3个数;●求最高分、最低分;●求平均成绩。

相关文档
最新文档