湖南软件职业技术学院:《C语言程序设计》第六章 数组应用程序设计(危孟君)

C语言程序设计(第2版) 中南大学出版社 成奋华陈松乔著 第六章数组应用汁 授课老师:危孟君S Email:weimengjun@163.com
第六章 数组应用程序设计 授课老师: 危孟君 Email: weimengjun@163.com C语言程序设计(第2版) 中南大学出版社 成奋华 陈松乔 著

预备知识 1、基本类型数据(整型、字符型、长整型 布尔型、浮点型……) 2、构造类型数据(结构类型、 3、三种程序结构(顺序,选择,循环) 4、内存存储方式(内存地址…)
预 备 知 识 1、基本类型数据(整型、字符型、长整型、 布尔型、浮点型……) 2、构造类型数据(结构类型、……) 3、三种程序结构(顺序,选择,循环) 4、内存存储方式(内存地址……)

数组 构造数据类型之一,一组有序数据的集合用数[]数组运算符 元素属同一数据类型,用数组名和下标确定单目运算符 §6.1一维数组 优先级(1) 不能用() 维数组的定义 今定义方式:数据类型数组名[常量表达式]; 例inta[6]; 合法标识符 表示元素个数 下标从0开始 a a[0] a[1] a[2] a[3] 编译时分配连续内存 数组名表示内存首地 内存字节数 a[4] 址,是地址常量 数组元素个数* sizeof(元素类型) [5]
•构造数据类型之一,一组有序数据的集合,用数组名标识 •元素:属同一数据类型,用数组名和下标确定 §6.1 一维数组 一维数组的定义 ❖定义方式: 数据类型 数组名[常量表达式]; 合法标识符 表示元素个数 下标从0开始 [ ]数组运算符 单目运算符 优先级(1) 不能用( ) 例 int a[6]; 0 a[0] 1 4 5 a[1] a[2] a[3] a[4] a[5] 2 3 a 编译时分配连续内存 内存字节数 =数组元素个数* sizeof(元素类型) 数组名表示内存首地 址,是地址常量 数 组

例 int data[5]; data[5]=10;//C语言对数组不作越界检查,使用时要注意 组的引用 数组必须 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式:数组名[下标] 其中:下标可以是常量或整型表达式 例 inta[5]={1,2,3,4,5}; Printf(“%d”,a[1]);(正确 printf(“%d”,b[1])(变量未定义) 例inta[10] printf(“%d”,a) 必须for(j=0;j10;j++) printf(“%d\t”,a[Jj);()
一维数组的引用 ❖数组必须先定义,后使用 ❖只能逐个引用数组元素,不能一次引用整个数组 ❖数组元素表示形式: 数组名[下标] 其中:下标可以是常量或整型表达式 例 int i=15; int data[i]; (不能用变量定义数组元素个数) 例 int a[10]; printf(“%d”,a); () 必须for(j=0;j<10;j++) printf(“%d\t”,a[j]);() 例 int data[5]; data[5]=10; //C语言对数组不作越界检查,使用时要注意 例 int a[5]={1,2,3,4,5}; Printf(“%d”,a[1]);(正确) printf(“%d”,b[1])(变量未定义)

维数组的初始化 初始化方式 inta[5]={1,2,3,4,5} 等价于a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5; 说明: 数组不初始化,其元素值为随机数,值不确定。 对 static数组元素不赋初值,系统会自动赋以0值 只给部分数组元素赋初值 当全部数组元素赋初值时,可不指定数组长度 tat inta[]={1,2,3,4,5,6} 编译系统根据初值个数确定数组维数 等价于:aU06;aL=z;aL2」=3;aL3;at4=0 如 inta[3]={6,2,3,5,1
一维数组的初始化 ❖初始化方式 在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值) 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 a[5]={6,2,3}; 等价于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0; 如 int a[3]={6,2,3,5,1}; () static int a[5]; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 只给部分数组元素赋初值 int a[]={1,2,3,4,5,6}; 编译系统根据初值个数确定数组维数

★程序举例 #include xil)min= 3输出:max和min printf(" Maximum is %/dn", max); printf( Minimum is %/od\n", min)
程序举例 例 读10个整数存入数组,找出其中最大值和最小值 步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x[0] (b) 依次用x[i]和max,min比较(循环) 若maxx[i],令min=x[i] 3. 输出:max和min #include #define SIZE 10 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;ix[i]) min=x[i]; } printf("Maximum is %d\n",max); printf("Minimum is %d\n",min); }

例用数组求 fibonacci数列前20个数h F2=1 (n=2) F=F+F #include f10 man f1 i int i; intf20={1,1}; for(i=2;i<20;i++) 1235 f2 f3 fd=fi-2+ft-1; f14 for(i=0;i<20;i++) i5] i if(i%5==0)printf("n") printf( %12d", fiD; 9m19n19
例 用数组求Fibonacci数列前20个数 f[0] f[1] f[2] f[3] f[4] f[5] f[19] ……... 1 1 f[19] 0 1 4 5 2 3 19 2 3 5 #include main() { int i; int f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0) printf("\n"); printf("%12d",f[i]); } }

#define n 6 maino 数组定义:必须用常量表达式 { int an,b|B’-60],c={1,2,3,4,5,6},i; for(i=0;K<N; i++) scanf(%od %od", &ali, &bliDa for(i=;iN;i++) 数组元 素引用 printf(%d”,al[il): printf(n”); for(i=O; K<N; i++) printf(%d”,b[i); printi(n”); for(i=0;K<N; i++) cHAi+bN-i-1l for(i-o; i<N; i++) printf(%d”,cl);}
#define N 6 main() { int a[N],b[‘B’-60],c[]={1,2,3,4,5,6},i; for(i=0;i<N;i++) scanf(“%d%d”,&a[i],&b[i]); for(i=0;i<N;i++) printf(“%d ”,a[i]); printf(“\n”); for(i=0;i<N;i++) printf(“%d ”,b[i]); printf(“\n”); for(i=0;i<N;i++) c[i]=a[i]+b[N-i-1]; for(i=0;i<N;i++) printf(“%d ”,c[i]);} 数组定义:必须用常量表达式 数组元 素引用

例用冒泡法对10个数排序 排序过程: (1)比较第一个数与第二个数,若为逆序a0>a1则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止—第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-趟冒泡排序后,排序结束
例 用冒泡法对10个数排序 排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止——第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束

例 3838 13131313 4949 49 2727 2727 6565 13|27 3030 30 3838 2730 30 49 3065 30 65 3076 初始关键字 273076 9797 第第第第第第第 四五六七 n-8趟趟趟趟趟趟趟
例 38 49 65 76 13 27 30 97第一趟 38 49 65 13 27 30 76第二趟 38 49 13 27 30 65第三趟 38 13 27 30 49第四趟 13 27 30 38第五趟 13 27 30第六趟 49 38 65 97 76 13 27 30 初始关键字 n=8 38 49 76 9713 972 3097 97 13 76 76 7627 30 13 6527 6530 65 13 13 49 4930 4927 3827 3830 38 13 27第七趟
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 湖南软件职业技术学院:《C语言程序设计》第二讲 算法(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第一章 C语言概述(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第八章 指针(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》编译预处理命令(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第七章 函数应用程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第六章 数组(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第五章 循环结构程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第十章 带参数的函数(危孟君).ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第四章 基本控制结构与导出数据类型.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第六章 指针、引用与动态内存分配.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第八章 继承与派生.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第五章 函数、函数与运算符的重载.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第二章 C++语言初步.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第三章 基本数据类型与基本运算.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第七章 类与对象.ppt
- 《高级语言C++程序设计》教材PPT教学课件(第二版)第一章 绪论(主编:刘景、周玉龙).ppt
- 《高级语言C++程序设计》教材教学实验讲义(第二版)实验1 熟悉和使用vc集成开发环境(IDE).doc
- 恒润科技:《MATLAB 基础与编程入门》第五章 GUIDE 图形用户界面入门.ppt
- 恒润科技:《MATLAB 基础与编程入门》第四章 文件输入与输出.ppt
- 恒润科技:《MATLAB 基础与编程入门》第三章 MATLAB 编程入门.ppt
- 湖南软件职业技术学院:《C语言程序设计》第六章 数组应用程序设计(6-1)一维数组(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第十三章 文件(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第十一章 结构体与共用休(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第十章 指针(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第五章 选择结构程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第一讲 概述(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第一章 C语言的字符集(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第二章 C语言的数据类型与运算(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第二章 C语言的数据类型与运算(2.1-2.4)数据类型(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第三章 C语言基本语句和顺序结构程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第四章 选择结构程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》选择结构程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》第四章 选择结构程序设计(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》C语言的字符集、标识符与关键字(危孟君).ppt
- 湖南软件职业技术学院:《C语言程序设计》课程总结(危孟君).ppt
- 北京邮电大学电信工程学院计算机技术中心:《C++大学基础教程》课程说明.ppt
- 北京邮电大学电信工程学院计算机技术中心:《C++大学基础教程》第十一章 多态性.ppt
- 北京邮电大学电信工程学院计算机技术中心:《C++大学基础教程》第十章 运算符重载.ppt
- 北京邮电大学电信工程学院计算机技术中心:《C++大学基础教程》第四章 函数.ppt
- 北京邮电大学电信工程学院计算机技术中心:《C++大学基础教程》第五章 数组.ppt