C语言之一维数组(第2讲)
C语言第六章_数组_2
if (a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;14}
#include <stdio.h> main(){ /*对10个整数排序*/
int a[10]={9, 8, 5, 4, 2, 0, 6, 1, 3, 7}, i, k; for (k=1;k<10;k++)
f0=1 (n=0m) ain(){
f1=1
(n=1) int i; long f [20]={1,1};
0 f1n=fn-1f+[0f]n-2 (nfo2r) (i=2;i<20;i++)
1
1
f[1]
2
2
f[2]
f[i]=f[i-2]+f[i-1];
3
3
f[3]
for(i=0;i<20;i++)
4
数组是具有一定顺序的若干同数据类型变 量的集合体。数组要有名称,要有规模。
一.一维数组定义
类型说明符 数组名[常量];
例如:int a[6]; a = = &a[0]
a
内存映象:编译时分配一片连续的内 存空间,数组名为该空间的首地址— —常量地址。
0 a[0]
1 a[1]
2 a[2]
3 a[3]
1
4 a[4]
4
一行一行地存储所有的数组 5
a[0][1] a[0][2] a[0][3] a[1][0] a[1][1]
元素,数组名为该空间的首 6 a[1][2]
地址——地址常量。
7 a[1][3]
8
C语言程序设计第21讲 一维数组(二)
问:为了使这一组无序数组完全按照要求排成 问:那么我们预计最多一共要经过多少趟排序呢? 从小到大我们还需不需要再继续排序呢?
3
38 3 38
4
49 4 49
5
49 5 49
6
65 6 65
7
76 7 76
8
97 8 97
7趟
序号 数据
冒泡排序程序实现
#define N 8 main() {int a[N+1]; int i,k,t; printf("input %d numbers:",N); for(i=1;i<N+1;i++) scanf("%d",&a[i]); printf("\n"); for(k=1;k<N;k++) for(i=1;i<=N-k;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf("the sorted numbers:\n"); for(i=1;i<N+1;i++) printf("%3d",a[i]); } 8
65<76, 保持不变 49<65, 保持不变 76>13, 76>27, 交换位置 交换位置 76>49, 交换位置 38<49, 保持不变 经过第二趟排序,实现了什么目的? 经过第二趟排序,把第二大的数沉到倒数第二个位置了!
C语言一维数组
6
例题巩固
在C 语言中,引用数组元素时,其数组下标的 数据类型允许是 。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
C语言中,数组名代表 A.数组全部元素的值 B.数组首地址 C.数组第一个元素的值 D.数组元素的个数
合法的数组定义是 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};
以下程序的输出结果是________。 main( ) { int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++) if(a[i]<a[p]) p=i; printf("%d,%d\n",a[p],p); } A) -3,4 B) 0,1 C) 9,2 D) 2,9
35
35
int a[5]
a[0] a[1] 第一轮 21 13 13 13 21 21
a[2] 90 90 90
a[3] a[4] 32 32 32 -1 -1 -1
13 13
21 21
32 32
90 -1
-1 90
第一轮的结果: 将最大的数移到了最后一个位置(n-1)。
int a[5]
a[0] a[1]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 0 1 2 3 4 5 6 7 8 a[9] 9
数组a
max = a[0];
32
32
定义
main()
{ int i, max, x[10];
一维数组,二维数组演示课件
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; }
1213一维数组的定义,赋值,遍历
printf(“%d\n”,a[1]);
printf(“%d\n”,a[0]);
13
}
从键盘输入5个整数,保存到数组a中;再逆序 输出。
main()
{
int a[5];
scanf(“%d”,&a[0]);
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
20
课堂练习
– 2. 修改上例:
• 要求输出数组元素中所有5的倍数,怎么做?
21
课堂练习
– 3. 修改上例,要求实现求数组元素中所有下
标为偶数的元素的和怎么做?
22
小结
– 数组的定义、初始化、引用、输入、输出概念、 操作必须掌握
– 数组下标从0开始 – 数组名代表数组首地址,是一个常量 – C语言不允许动态定义数组,即定义数组时数
一维数组元素的查找
例:定义一个一维数组num, 再从键盘 上输入一个整数x,查找数组中是否有元 素的值与x相等。如果有,输出相应的下 标;如果没有,输出“该值在数组中不存 在” 。
26
一维数组元素的查找
#include <stdio.h> main() {
int num[10], x, i, j; for(i=0; i<10; i++)
outputScore(score,10);
//函数调用
}
void outputScore(int a[ ],int length) {
int i=0;
//函数定义
printf("学生成绩如下:\n"); for(i=0;i<length;i++)
02C语言语法凝练5(一维数组)
思考:下面定义数组的语句,哪一个是错误的?为 什么? (A) #define n 10 int a[n]; (B) #define n 5 int a[2*n]; (C) int a[5+5]; (D) int n=10; int a[n];
7.1.2 一维数组元素的引用
1、数组必须先定义,然后使用。
02C语言语法凝练5(一维数组)
一维数组
一个简单变量,如整型变量、实型变量,只 能存储一个数据。而计算机的优点在于能 够快速的成批的处理数据。那么怎样有效 管理成批的数据呢?数组。
一维数组的定义
语法形式: 类型 数组名[常量表达式]; 比如:int A[500]; 说明: ① 这条定义语句的含义是,定义了一个整型数组A, 其中能存储500个整数。
练习:
1. 随机生成20个整数,求其中的最大值,最小值。 2. 随机生成20个整数,求其中所有偶数的和。
2、C语言规定只能逐个引用数组元素,而不能一次引 用整个数组。
7.1.2 一维数组元素的引用
3、用数组名和下标的组合来指代某个数组元素,形式为 数组名[下标]
注意: ① 定义数组与引用数组元素时,中括号中的要求不同。 ② 定义数组时,要求中括号中必须是常量或常量表达式, 其中绝对不能包含变量。 ③ 引用数组元素时,下标可以是单个常量、单个变量,也 可以是表达式,且表达式中可以包含变量。 ④ 引用数组元素时,下标的取值范围为 [0,数组元素个数-1]。这一点一定要注意。
一维数组程序举例
例:用数组处理Fibonacci数列问题。输出数列前20项。
Fibonacci数列为:1,1,2,3,5,8,…
其实用数组更容易理解。假设数组a已经定义: 把数列的第一项放入a[1]; 把数列的第二项放入a[2]; 则第三项的值为:a[3]=a[1]+a[2]; … 第i项的值为:a[i]=a[i-2]+a[i-1];
C语言程序设计-一维数组的初始化
部分初始化
当 {} 中 值 的 个 数 少 于元素个数时,则 只给前面部分元素 依次赋值,剩余元 素的值由系统自动 填充。
示例
只能给元素逐个赋 值,不能给数组整 体赋值。 int a[10]={1,1,1, 1,1,1,1,1,1,1}; 而不能写为:
int a[10]=1;
1-2 一维数组组元素a[0]到a[9]的值为0~9,然后逆序输出。 程序如下: main() {
int i,a[10]; for(i=0;i<=9;i++)
a[i]=i; for(i=9;i>=0;i--)
printf("%d ",a[i]); }
谢谢观看
1-2 一维数组的初始化
例如: int a[5]={1,2,3,4,5}; 则相当于 int a[5]; a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
1-2 一维数组的初始化
数组个数
当对全部数组元素 赋初值时,元素个 数可以省略。但 “[]”不能省.根据 数 组 初 始 化 时 {} 内 值的个数,决定该 数组的元素个数。
一维数组
1-2 一维数组的初始化
一般形式
类型标识符 数组名[常量表达式]={值0,值1,…,值n-1};
➢ 在{ }中的各数据值即为各元素的初值,各值之间用逗号间隔。 ➢ 给数组赋值的方法除了用for循环和赋值语句对数组元素逐
个赋值外,还可采用初始化赋值和动态赋值的方法。 ➢ 数组初始化赋值是指在数组定义时给数组元素赋予初值。
一维数组(C语言)
字符数组
C、如果数组长度大于字符串实际长度,也只输出到遇‘\0’结束。 D、如果一个字符数组中包含一个以上‘\0’,那么遇到和第一个‘\0’ 就结束。〔利用scanf输入字符串,空格可作为结束符。〕
例:char str[13]; scanf(“%s〞,str);
字符数组
〔3〕给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,假设是逐个字符 赋值给数组元素,要在最后一个字符之后加上字符串结 束标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
printf(“\n〞);
}
B、使用getchar putchar getch getche函数。
字符数组
〔2〕将整个字符串一次输入或输出。用%s格式符。 例:char c[ ]=“china〞; printf(“%s〞,c);
结果为:china
注意: A、输出字符不包括结束符‘\0’; B、用%s格式符输出字符串时,printf 函数中的输出项是字
int a[10], b[10], k; for (k=0;k<10;k++) scanf(“%d〞,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
一维数组
(3) 在使用数组元素时,数组元素中的下标表 达式的值必须是整型。 下标表达式值的下限为0,值的上限为该数 组元素的个数减1。 使用数组时注意其下标不要越界。如果下 标越界,程序无法得到正确的结果。
C语言第六章:一维数组
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
第2轮比较后
第3轮比较后
外循环
第8轮比较后
第9轮比较后
内循环
23 25 34 52 56 78 83 88 100 123
23
25
34
52
56
78
83
88
100
123
for(i=0; i<=8; i++)
问题:如何使用冒
一、顺序查找法
• 假设数组a[0]、a[1]、…、a[N-1]中保存有N个数据,从中 查找一个数据F。若F在数组a中存在,则显示元素下标; 若不存在,显示不存在信息。 顺序查找法:
从数组第1个元素依次向后与要找的数据F比较;若相同,则查找结束 ;若不相同,则继续查找,直至数组最后一个元素。若所有元素均不 等于F,则说明F不在数组a中。
<
“擂台法”也适用于求最小值
一维数组应用举例
例 随机生成10个三位数整数,求其平均值.
例 用数组求Fibonacci数列前30项.
三、常用排序算法
1.选择排序法
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
选择排序法的算法是: (1)第一趟,从N个元素中找出最小者,与第1个元素进行交换 位置. (2)第二趟,从剩下的N-1个元素中,找出最小的元素,与第2个 数进行交换位置. (3)依次类推,选择N-1次后,所有的元素都已按照从小到大的 顺序排列,每次操作都选择最小的与排头位置相交换. 最后,数组A中的数据成升序排列(相对于数组元素下标)。
三、常用排序算法
3. 冒泡排序法
第6章C语言数据结构之一维数组
for (i=0; i<=3; i++)
scanf (“%d”,&a[i]); for (i=3; i>=0; i--)
61 85 93 76
printf(“%d”,a[i]);
return 0; }
6.1.3 一维数组的初始化
基本形式
在定义一维数组的同时给数组元素赋初值称为一维数组的 初始化。
一维数组初始化的一般形式如下: 类型说明符 数组名[数组长度] ={常量表达式0,…,常量表达式n-1};
数组作为函数的参数时 传递的是首地址。
3. 当逐个使用数组中的每一个元素时,通常借助for循环语句。
0123456789
6.1.2 一维数组的引用
实例分析
#include <stdio.h> 此程序的功能? 如果输入76、 93、85和61, 运行结果?
int main()
{ int i,a[4];
C语言程序设计
课程回顾
C语言中控制结构有几种?
有哪3种循环结构?
while、do …while、for循环
while、do…while循环的语句格式 while (表达式) { 循环体语句; }
do { 循环体语句; }while (表达式);
课程回顾
for(表达式1;表达式2;表达式3)
int i,a[10]; for (i=0; i<=9; i++) scanf(“%d”,&a[i]); for (i=0; i<=9; i++) printf(“%d”,a[i]); ……
21
课程回顾
1、下列对一维数组a的说明正确的是( )? A.int a(10); C.int n; scanf(“%d”,&n); int a[n]; B.int n=10, a[n]; D.#define SIZE 10 int a[SIZE];
C语言一维数组的定义和引用数组.ppt
12 3 a=
45 6
00 30 a= 0 0 0 0
0 10 0 0
7.2.4 二维数组程序举例 例T7-4 将一个二维数组的行和列元素互换, 存到另一个二维数组中 。
123 a=
456
14 b= 2 5
36
T7-4.c两数组行列互换 main( )
printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,用 形式:数组名[下标][下标] 其中:下标是整型或字符型的常量,变量或表 达式。(定义时不能使用变量)
2. 只给部分元素赋值 如: int a[5]={1, 3, 5};
3. 初始化时给全部元素赋0值 如:int a[5]={0,0,0,0,0}; 或 int a[5]={0};
4. 对全部元素赋初值时可以不指出长度 如:int a[5]={2,4,6,8,10};
或 int a[ ]={2,4,6,8,10}; 效果一样 。
printf (“a[5]=%d\t”,a[5]);
printf (“a[6]=%d\ n”,a[6]);
}
运行结果:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
a[5]=-30
a[6]=285
4.数组大小的定义只能是常量,而不能是变 量或动态地定义。 例7-0-2. C main( ) { int n=5,a[n];
3.引用方法:针对元素而不是整个数组。 如:a[0]=a[‘b’ - ‘a’] + a[‘ b’ -96] +a[3] - a[2*2]
C语言之一维数组(第2讲)
一维数组第2讲:应用举例1、读程,写出程序运行后的正确运行结果.main(){int n[2]={0},i,j,k=2;//赋值for(i=0;i<k;i++)for(j=0;j<k;j++){n[j]=n[i]+1;printf("%d,%d\n",j,n[j]);}//输出printf("\n**************\n");for(i=0;i<k;i++)printf("n[%d]=%d\n",i,n[i]);getch();}运行结果:2、程序填空求:100以内的素数。
(11_1.c)#include <stdio.h>#include <math.h>main(){int a[101],i,k,m;for(i=2;i<=100;i++) a[i]=1 ;for(i=2;i<=100;i++)if(a[i]==1){m=sqrt(i);for(k=2;k<=m;k++)if(i%k==0) a[i]=0;}//outputfor(i=1;i<=100;i++)if(a[i]==0) printf("%4d",i);getch();}【提示】素数是指,除了1和本身,没有其它因子的自然数。
最小素数为2.判断一个数是否为素数通常对所有可能的因子进行判断。
我们只须判断整数num,是否能被2~sqrt(num)范围内的整数整除,如果能,则不是,否则为素数。
3、读入10个数,输出偶数项,并打印它们的和,输出奇数项,并打印它们的平均值。
(11_2.c)4、读入10个数,打印其中的最大数和最小数及其位置号。
(11_3.c)5、有N盏灯,放在一排,从1到N依次顺序编号。
有N个人也从1到N依次编号。
第1个人(1号)将灯全部关闭;第2个人(2号)将凡是2的倍数的灯打开;第3个人(3号)将凡是3的倍数的灯做相反处理(该灯如是打开的,则将它关闭;如是关闭的,则将它打开)。
C语言一维数组课件
为什么引入数组
• 如果能使用ai ( i=1,2,…..10 ) 的形式? 如果有一种办法,可以用一条语句定义一
组变量!! 如果有一种办法,可以用循环访问这组变
量!! 那么我们的程序是不是可以短一点,我们
写的东西是不是可的数据的集合。 数组元素:数组中的每个数据
一维数组
求数组中元素的最大值及其下标
a
0 1 2 34 5 6
10 18 8 38 26 22 9
max
index
1308
013
一维数组
max=a[0]; index=0; for(i=1;i<N;i++)
if(a[i]>max) { max=a[i]; index=i; }
一维数组
说明:
(1)数组的类型实际上是指数组元素的取值类型。对于同一个
数组,其所有元素的数据类型都是相同的。
(2) 数组名的书写规则应符合标识符的书写规定,数组名不能
与同一函数中其它变量名相同。例如:
int a;
float a[10];
是错误的。
(3)C语言中规定数组的下标从0开始,方括号中常量表达式
数组元素
a 45 12 35 3 0 9 13 56 14 67 01 2 3 4 5 6 7 8 9 数组下标
a[4]的值?
45在数组 中的位置?
a[0]
一维数组
只有一个下标变量的数组称为一维数组 一、一维数组的声明
类型符 数组名[常量表达式]; 例:int a[10];
float b[23+4]; char c[50*4]; double d[56.5];
一维数组
统计超过平均值的数的个数 int a[10],sum=0,count=0; float avg; For(i=0;i<10;i++)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} //output for(i=1;i<=100;i++) if(a[i]==0) printf("%4d",i); getch(); }
【提示】素数是指,除了1和本身,没有其它因子的自然数。最小 素数为2.判断一个数是否为素数通常对所有可能的因子进行判 断。我们只须判断整数num,是否能被2~sqrt(num)范围内的整数 整除,如果能,则不是,否则为素数。
***思考***如何生成不同的10个数? 9、约瑟夫问题 设有N个人围成一圈。从第1个人开始报数,数到M的人出圈;再 由下一个人开始从1开始报数,数到M的人出圈;…..,如此继 续,直到所有人都出圈为止,设N个人的编号分别为1,2,…,N,打印 输出出列次序。(11_8.c) 输入:M、N由键盘输入; 输入样例: 人数N:10 报数M:5 输出样例 5,10, 6 ,12 ,9, 8, 1 ,4 ,7 ,3
3、 读入10个数,输出偶数项,并打印它们的和,输出奇数项, 并打印它们的平均值。(11_2.c)
4、 读入10个数,打印其中的最大数和最小数及其位置号。 (11_3.c)
5、 有N盏灯,放在一排,从1到N依次顺序编号。有N个人也从1到
N依次编号。
第1个人(1号)将灯全部关闭;第2个人
(2号)将凡是2的倍数的灯打开;第3个人(3号)将凡是3的
2、 程序填空求:100以内的素数。(11_1.c) #include <stdio.h> #include <math.h> main() { int a[101],i,k,m; for(i=2;i<=100;i++) a[i]=1 ; for(i=2;i<=100;i++) if(a[i]==1) {m=sqrt(i); for(k=2;k<=m;k++) if(i%k==0) a[i]=0;
【操作提示】 第1步:随机生成10个100以内的随机数,赋值数组元素a[i](循 环,注意有序性,假设为从小到大) 第2步:输入整数x 第3步:利用循环遍历数组元素a[0]~a[9],如果x>a[i],则退出循 环,且记住i的位置值,将x插入到a[i]前; 第4步:利用循环将数组元素a[i]~a[9]向后平移至a[i+1]~a[10]; 第5步:将x赋值给a[i]; 第6步:输出数组元素;
【算法分析】 初始化,N个人的初始状态,均未出列表示:数组元素 a[0]~a[99]为1; K为出列人数,当为n时,表示全部出列,则游戏结束。 (While循环) 开始报数位置标志i=1; 在1~n个人中(while循环), ---如果此人未出列(a[i]==1),则累计报数器s(s++); ---当S能被M整除时,出列人数k++,并且将a[i]置为0,表
7、 随机生成10个100以内的整数,使用“选择排序法”升序(从小 到大)排列输出。(11_1.6)
【选择排序法描述】 第1步:在1~n个数中,找到最小数,和第1个数交换;前1个数排 好序; 第2步:在2~n个数中,找到最小数,和第2个数交换;前2个数排 好序; ……. 第k步:在k~n个数中,找到最小数,和第k个数交换;前k个数排 好序; ….. 第n-1步:在n-1~n个数中,找到最小数,和第n-1个数交换;排序 结束。 **思考**
的灯将是亮着的),总结规律,简化处理;
完全平方数的因子个数为奇数?偶数?
6、 输入10个100以内的整数,按升序存放在数组a中,再任意输 入一个数x,将x插入到有序数组a中,保证数组a仍然有序。
(11_5.c) 随机数的生成 # include <time.h> srand((int)time(0)); /*随机种子*/ for(i=0;i<10;i++) a[i]=rand()%100;
一维数组第2讲:应用举例
1、 读程,写出程序运行后的正确运行结果. main() {
int n[2]={0},i,j,k=2; //赋值 for(i=0;i<k;i++)
for(j=0;j<k;j++) {n[j]=n[i]+1; printf("%d,%d\n",j,n[j]); } //输出 printf("\n**************\n"); for(i=0;i<k;i++) printf("n[%d]=%d\n",i,n[i]); getch(); } 运行结果:
示已出列;并输出i的位置; ---继续下一个人的判断;
11(11_10.c)
12、求满足等式x2=?????????(9个),每个问号互不相同,且 遍历1~9;(11_11.c) 13、
(11_12.c) 14、
(11_13.c)
8、 随机生成10个100以内的整数,使用“冒泡排序法”降序(从大 到小)排列输出。(11_7.c)
【冒泡排序法描述】 第1步:从前往后,相邻2个数比较,较小数后移,反复n-1次,最 后1个数最小; 第2步:从前往后,相邻2个数比较,较小数后移,反复n-2次,最 后2个数Ok; ……. 第k步:从前往后,相邻2个数比较,较小的数后移,反复n-3次, 最后k个数OK; ….. 第n-1步:从前往后,相邻2个数比较,较小的数后移,执行1次, OK;
倍数的灯做相反处理(该灯如是打开的,则将它关闭;如是关
闭的,则将它打开)。以后的人都和3号一样,将凡是自己编
号倍数的灯做相反处理。试计算当第N个人操作后,哪几盏灯
是亮的。(11_4.c)
【操作提示】
灯的亮或灭如何表示?如何模拟每个人对灯的相反处理?
灯的亮与灭与灯被拉的次数的关系(因子数为偶数的序号对应
【算法设计】 数组a[n]存放待排的n个数。外层k循环1~n-1步,对应每一步,利 用j循环,控制比较次数,n-k,比较a[j]和a[j+1],若a[j]<a[j+1],则交
换这两个元素。
【程序大致流程】 1) 随机生成数组元素; 2) 输出排序前的数字序列; 3) 冒泡排序实现排序过程; 4) 输出排序后的结果;
几层循环?外层、内层循环的控制变量? 比较过程中的关键变量设置?(比较元素的表示?最值表 示?位置记录?) 【算法设计】
数组a[n]存放待排的n个数。循环控制变量k控制1~n-1步,对应每 一步,利用j,控制在a[k]~a[n-1]中寻找最小数,并记录其下标pos, 找到后,和a[k]交换。
【程序大致流程】 1) 随机生成数组元素; 2) 输出排序前的数字序列; 3) 选择排序实现排序过程; 4) 输出排序后的结果;