




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CONTENTS 目 录提出问题 引入新课自主学习 明确考点案例分析 交流提升仿真演练 体验探索提出问题 引入新课PART 011、对数组的操作其实是建立 在对各个数组元素操作的基础上,每个数组元素实际是形式上较为特殊的单个变量,拥有统一的名称和按规律变化的下标号。数组实质是一个有序的集合体,是把一批数据组织在一起的,它们之间存在逻辑上的联系,因此在对数组元素进行处理时,要利用 其名称变化及取值的规律,与循环语句结合,实现对数组元素的连续、有规律的操作。2、C语言在程序设计中,引用数组的前提条件是具有相同数据类型的元素。思考提出问题 引入新课自主学习 明确考点PART 02#include s
2、tdio.hvoid main()int i,a10; int b6=0,0,0,0,0,0; printf(enter the score:n); for (i=0; i10; i+) scanf(“%d”, &ai); switch (ai/10) case 6:b0+; break; case 7:b1+; break;程序代码如下:将10个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分数段的人数存到b数组中:成绩为60到69的人数存到b0中,成绩为70到79的人数存到b1,成绩为80到89的人数存到b2,成绩为90到99的人数存到b3,成绩为100的人数存到b4,成绩为
3、60分以下的人数存到b5中。案例一 case 8:b2+; break; case 9:b3+; break; case 10:b4+;break; default:b5+; printf(the result is: ); for (i=0; i6; i+) printf(%dt , bi); #define N 10 /* 定义符号常量N为10 */#include main ( ) int aN, k; printf(enter the oraginal number:n); for ( ) ; printf(the new order is:n); for ( ) printf (%d
4、 , );将输入的10个数按输入次序相反的顺序输出。程序部分语句代码已给出如下,请补充完整程序运行结果:enter the oraginal number:1 2 3 4 5 6 7 8 9 10 the new order is:10 9 8 7 6 5 4 3 2 1案例二1、排序的含义及作用:排序是数据处理过程中一种重要运算,其作用是将无序的数据按从大到小(降序)或从小到大(升序的顺序排列。2、C语言程序设计中常用的方法方法有冒泡排序法、选择法、插入法、希尔法,这时首先介绍冒泡排序法、选择法。案例三:数组的排序3、冒泡法排序的基本过程(按从小到大):假设有5个数问题分析:(1)先定义一个
5、空间容量为5的一维数组a,通过键盘输入5个数进行初始化。(2)将5个数按冒泡法思想进行排序。(3)输出排序后的结果。(1)第1轮,从头到尾把数据中的两个相邻的数据进行比较,如果前1个数a0小于第2个数a1,则交换这两个数的位置,依次进行一直将该序列中最小的数沉到序列的最后位置。if(ajaj+1) temp=aj; aj=aj+1; aj+1=temp; (2)第2轮,先去掉第1轮排在最后的那个数据,然后将剩下的数再从头到尾依次比较,以将数列中次小的数沉到最小数前面的位置。(3)依此类推最终将该序列排好。至此,5个原本杂乱无章的数就排序完毕。设置变量i代表比较轮数,变量j代表该轮数组的下标值,
6、则0=i5 ;0=j5-i 4、冒泡法的主要思想:案例三:数组的排序案例三:数组的排序算法介绍:将相邻的两个数比较将小的调到前面。以5个数为例说明排序的过程。设int a5=9,7,5,6,8;则a0 97777a1 79555a2 55966a3 66698a4 88889 第一次 第二次 第三次 第四次 结果案例三:数组的排序可以看出通过第一轮的比较和交换,最大值沉到了底部,这正是我们所希望的,所以a4 不需要再参与第二轮的比较。a0 7555a1 5766a2 6677a3 8888 第一次 第二次 第三次 结果如此通过四轮后,就可以将5个数排好序。案例三:数组的排序程序代码如下:方式1
7、:冒泡法下面对N个数(以5个数为例)按从小到大顺序进行排列(9,7,5,6,8)#include #define N 5main() int i,j,k,temp; int aN; /*定义变量*/ for(i=0;iN;i+) scanf(%d,&ai);/*初始化数组*。 for(i=0;i=N;i+) /*排序进行*/ for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(i=0;iN;i+) printf(%5d,ai); /*输出结果*/ 方法2:选择法排序:(对10个整数排序(从大到小)算法介绍:设有10个元素a0到a9,将a0与a
8、1到a9比较,若a0比a1到a9都大则不进行交换。a1到a9中有一个以上比a0大,则用最大的一个和a0交换,此时,a0中存放了10个数中最大的。第二轮将a1与a2到a9比较,将剩下的9个数中最大的与a1对换。此时a1中存放的是10个数中次大的。依此类推,共进行9轮比较,a0到a9就已按由小到大顺序存放。案例三:数组的排序案例三:数组的排序程序如下:#include #define N 7main() int i,j,k,temp; int aN; for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) k=i; for(j=i+1;jaj) k=j
9、; if(i!=k) temp=ai; ai=ak; ak=temp; for(i=0;iN;i+) if(i%10=0) printf(n); printf(%5d,ai); 利用数组,求斐波拉契数列的前20项,并按一行5个数输出。案例四斐波拉契数列是指某个元素等于其相邻的前两个元素之和。具体算法请看书本P83页。#include#define N 5main() int a20=1,1; int i; for(i=2;i20;i+) ai=ai-1+ai-2; for(i=0;i20;i+) if(i%5=0) printf(n); printf(%5d ,ai); 案例分析 交流提升PA
10、RT 03【例1】、分析以下程序填空以下程序可求出所有水仙花数(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数),请填空。 407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数)。#includemain()int x,y,z,a8,m,i=0;printf(”The special umbers are (in the arrange of l000):n”);for( ;m+) x=m/100; y= ; z=m%10; if(x*100+y*10+z=x*x*x+y*y*y+z*z*z) ;i+; for(x=0;xi;x+) printf(”%6d
11、”,ax);【例2】、分析以下程序的运行后输出结果( ) #includemain() int i,m,n,s=0; int x,a=1,2,3,4,5,6,7,8,9; m=3,n=7; for(i=m;in;i=i+2) s=s+ai; printf(%d,s); getch(); 仿真演练,体验探索PART 04改错题:使用冒泡排序法对含有10个元素的数组按从小到大的顺序进行排序输出,在排序前后输出数组各元素的值。程序如下#01 #include #02 main()#03 #04 int a9, i, j, t;#05 for ( i=0; i10; i+ )#06 scanf( %d
12、, &ai );#07 for ( i=0; i9; i+ )#08 for ( j=0; jaj+1 )#10 aj=t; aj+1=aj; t=aj+1; #11 for ( i=0; i10; i+ )#12 printf( %d , ai );#13 2、阅读程序题(1)运行以下程序后的输出结果是( )#define N 6void main() int i, j, aN; for(i=1; i1; j-) aj+=aj-1; for(j=1; j=i; j+) printf(“%4d”, aj); printf(“n”); (2)、运行以下程序后的输出结果是( )#inclu
13、de #define M 4void main( ) int i, j, k, m, a4; printf(“Enter 4 numbers: “); for(i=0; i0; i-) k=M-1; for(j=M-1; j0; j-) aj=aj-1; a0=k; for(m=0; mM; m+) printf(“%d”,am); printf(“n”); 设一维数组a的4个输入整数是1,2,3,4,则程序的输出是什么?(3)、以下程序的功能是:判断任意整数x是否为回文数(回文数:顺读与反读都一样的数)提示:(1)求出x的每一位数,放入数组各个元素中(2)数组元素首尾比较,判断是否为回文数 (3)for( i=首下标,j=末下标; ij; i+,j-)main() long x; int i,j,n=0,d20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省苏州市葛江中学2026届九年级英语第一学期期末达标测试试题含解析
- 华山医院教学体系建设与实践
- 安徽省当涂县2026届九上化学期中考试模拟试题含解析
- 广联达教育培训
- 涉企收费迎检汇报
- 广东省深圳市南山区南山实验学校2026届九年级化学第一学期期中教学质量检测试题含解析
- 学院就业工作总结报告
- 组织部工作总结
- 江苏省无锡市南长实验中学2026届化学九上期中达标检测试题含解析
- 2026届广东省中学山市黄圃镇马新初级中学九年级化学第一学期期中质量检测试题含解析
- AIOT智能物联产业学院建设方案
- 闭合性颅脑损伤重型个案护理
- 紫金矿业员工工作手册
- 消费者市场与购买行为课件
- 民政信访业务培训课件
- 行政检查业务培训课件
- 个人独资企业章程样本
- 土石方价值评估报告
- 16-CNC绕线机设置培训资料
- 员工利益冲突管理制度
- 加油站安全教育培训记录表模板
评论
0/150
提交评论