C语言试讲课件

  • 格式:ppt
  • 大小:275.50 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一维数组
试讲人:杨XX 毕业学校:贵州大学 专业:计算机科学与技术
日期:2008.7.31
•数组:有序数据的集合,用数组名标识 [ ] :数组运算符 •元素:属同一数据类型,用数组名和下标确定 单目运算符
一维数组的定义
定义方式:
数据类型
优先级(1) 左结合 ]; 数组名[常量表达式 不能用( )

38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字 n=8
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
算法举例
例 读10个整数存入数组,找出其中最大值和最小值 步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x[0] (b) 依次用x[i]和max,min比较(循环) 若max<x[i],令max=x[i] 若min>x[i],令min=x[i] 3. 输出:max和min
for i=1 to n-j

a[i]>a[i+1]
a[i]a[i+1] 输出a[1] 到 a[n]
#include <stdio.h> main() { int a[11],i,j,t; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("%d",&a[i]); printf("\n"); 假 for(j=1;j<=9;j++) for(i=1;i<=10-j;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<11;i++) printf("%d ",a[i]); }
k 例 i=1 初始: [ 49 13
k
k
38 j k
65
j
97 j
76
j
13 49 j
27 ]
j
k
97 j 97 [97 76 j 76 76 49 38 27 ] j 49 49 j 38 ] 65 ]
i=2 一趟: 13
[38 27 65 j
二趟: 13 三趟: 13
27 27
[65 38
四趟: 13
一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整 个数组 数组元素表示形式: 数组名[下标] 其中:下标可以是常量或整型表达式
一维数组的初始化
ቤተ መጻሕፍቲ ባይዱ初始化方式
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值 只给部分数组元素赋初值 当全部数组元素赋初值时,可不指定数组长度
如 int static int a[5]={6,2,3}; a[5]; int a[]={1,2,3,4,5,6}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 等价于: a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 如 编译系统根据初值个数确定数组维数 int a[3]={6,2,3,5,1}; ()
38 13 49
13 38 27 38 13 38 30 27 38 30 49
13 27 30 38
13 27 30
13
27
49 27 13 49 30 27 49 30
65
76 第 二 趟
第 三 趟 第 四 趟 第 五 趟 第 六 趟 第 七 趟
输入n 个数给a[1] 到 a[n]
for j=1 to n-1
输出a[1] 到 a[n]

That’s all, thanks!
五趟: 13 六趟: 13
27
27 27
38
38 38
49
49 49
[76
65 65
97
[97 76
65 ]
76 ] [97 ]
输入n 个数给a[1] 到 a[n] for i=1 to n-1 k=i
for j=i+1 to n
真 k=j a[j]<a[k] 假
i != k 真 a[i]a[k]
例 用冒泡法对10个数排序
排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止——第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
例 int a[6]; a
0 1 2 a[0] a[1] a[2] a[3] a[4] a[5]
合法标识符
表示元素个数 下标从0开始
3 数组名表示内存首地址, 4 是地址常量 5
编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型)
例 int i=15; 例 int data[5]; int data[i]; (不能用变量定义数组维数) data[5]=10; //C语言对数组不作越界检查,使用时要 注意
例 用简单选择法对10个数排序
排序过程: (1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数 交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录, 将它与第二个数交换—第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束