北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)

上传人:我*** 文档编号:142773458 上传时间:2020-08-23 格式:PPT 页数:36 大小:410KB
返回 下载 相关 举报
北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)_第1页
第1页 / 共36页
北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)_第2页
第2页 / 共36页
北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)_第3页
第3页 / 共36页
北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)_第4页
第4页 / 共36页
北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)》由会员分享,可在线阅读,更多相关《北京大学计算概论(C语言)经典课件Lecture 9――循环语句复习及数组(上)(36页珍藏版)》请在金锄头文库上搜索。

1、计算概论(Introduction to Computing),马思伟 北京大学数字媒体研究所 ,第九讲 程序设计-数组,循环语句for,循环语句for(另一种当型循环) for(初始条件表达式;循环控制表达式;循环操作表达式) 语句/语句组 一次for循环执行过程 首先执行初始条件表达式(第一次):可以为空 循环控制表达式:一定是一个数值表达式,也可以为空 如果表达式值为真,条件成立,执行循环体一次 如果表达式值为假,条件不成立,退出循环 如果省略,默认值为真,直到遇到break, return语句退出循环 循环操作表达式:也可为空,循环语句while,循环语句while(当型循环) whi

2、le(表达式)语句/语句组 表达式必须是数值表达式 一次循环 计算表达式的值 如果表达式值为真,执行循环体,为假退出 循环,循环语句do-while,循环语句do-while(直到型循环) do 语句/语句组 while(表达式); 一次循环 执行一次循环体 计算表达式,条件成立再执行一次循环体,否则退出循环,循环语句do-while,程序转移语句,程序转移相关语句包括: break continue,程序转移语句break,break退出的是包含它的最内层循环体 例输出两个10以内的数,两数的和是5的倍数 #include int main() int i, j; for (i=1; i10

3、; i+) for (j=1; j10; j+) if (i+j)%5=0) printf(“%d %d”, i, j ); break; return 0; ,程序转移语句continue,continue语句用来结束本次循环(while, do-while, for) ,跳过循环体中continue之后尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。注意:在进行终止条件的判断前,都应先执行迭代语句。它的格式为: continue;,课堂练习,1.已知:int a=5;执行语句while(a0) a-; a的值是( )。 A. 5 B. 0 C. 1D. -2 2.已知:int

4、a=5;执行语句while(-a0) a-; a的值是( )。 A. 5 B. 0C. 1D. -2 3.已知:int a=5;执行语句while(a-0) a-; a的值是( )。 A. 5 B. 0C. 1D. -2,答案: B, B, D,课堂练习,4. 下列程序的输出结果是k=_,s=_ int k,s; for(k=s=0;k10,答案: 5 15,提纲,为什么要用数组 什么是数组 如何定义数组 如何给数组赋值 如何遍历与访问数组中的内容 数组的用途,为什么需要数组,读入100个数,按从小到大的顺序讲它们排序。如何存放这100个数? 定义100个变量吗?intx1, x2, x3,

5、, x100; 要是1000个,10000个呢? 用数组类型来解决问题,什么是数组,数组是一种复合数据类型 数组从整体上定义了一组类型相同的变量 数组中的每个元素都可作为变量使用 数组元素的类型是相同的 数组的元素顺序地存储在连续的内存空间中 当要处理很多类型相同的数据时,可利用数组以避免在程序中定义大量的变量。,数组的定义,数组定义方法如下: 数据类型 变量名 数组元素个数= 数组元素初值; 其中“= 数组元素初值 ”部分可以省略。 一些数组定义的例子: int score5; char cards4 = a, 0, r, W; float point2 = 2.56, 23.43; dou

6、ble distances4 ;,课堂练习,以下对一维整型数组a的正确说法是( )A .int a(10);B. int n=10,an;C. int n; scanf(“%d”,答案:D,数组在内存中的布局,数组在内存中的布局,数组元素,定义一个数组变量相当于定义一组变量,这组变量中的每一个都可以通过“数组变量名下标”形式来访问。例如:score0, score1, score2 等等。 这组变量在内存中是连续存放的,它们的下标从0开始计数。 在数组中(设N是数组的元素总数) 第一个数组元素的下标是0 最后一个数组元素的下标是N-1,数组元素的赋值,每个数组元素,就是一个变量。 每个数组元素

7、占用的空间大小是由定义数组变量时给定的类型决定的。例如: cards每个元素占1字节(char类型的长度) distance每个元素占8字节(double 类型的长度)。,数组元素的赋值,在给数组元素赋值时,可以把数组元素看作单个变量,例如: score0 = 67; score3 = 89; distance2 = 356.24; cards0 = b; 数组元素的赋值可以在定义时给定初始值,也可以在程序中给数组元素赋值。 for (i=0; i10; i+) scanf(“%d”, 给数组元素赋值,数据类型必须匹配。,数组元素的访问,数组元素可以用在任何单个变量可能出现的地方。例如: in

8、t max, min; max = score 0; min = score3;,数组元素的遍历,可以用一个循环语句给数组的所有元素赋值,或顺序访问它的每个元素。例如: int i; int student100; int odd=0, even=0; for (i=0; i100;i+) studenti = i+1; if (studenti % 2) = 0) even+; else odd+; ,数组的使用,#include void main() int u4,a, b, c, x, y, z; scanf(%d %d %d %d, ,输入 2 5 7 4 输出 ?,数组的使用,#i

9、nclude void main() int u4,a, b, c, x, y, z; scanf(%d %d %d %d,/113+2+148=263 ,数组的使用,给定一个正整数n,求出所有小于n的质数 #include #define NUMBER 100 void main() int primeNUMBER; int i, j, k; prime0=2; for(i=3, j=1; i=NUMBER; i+) for(k=2;ki; k+) if (i%k=0) break; if (k=i) primej=i; j+ ,数组的使用,当程序要处理一组类型相同、含义类似的数据时应该使用

10、数组,使用数组求解 例 过年了,村里要庆祝一下。村长对村里的128个村民说:做一个游戏,让每个人把出生年+月+日得到一个数。例如:1968年10月28日=1968+10+28=2006。然后把这个数报上来。村里有一笔钱要作为游戏的奖金,数额为M元。如果有人报上来的数字与M相同,就把这笔钱发给这些人。如果只有一个人得奖,奖金都归这个人。如果有多于一个人得奖,则他们平分这笔钱。现在让我们来写一段程序算算都有哪些人得到了奖金?得到多少?,数组的使用,问题求解 定义一个数组存放所有村民上报的数据 定义一个数组存放获奖者的编号(幸运者数组) 定义一个整数存放获奖者人数 村民顺序报上数字,其相应的编号就是

11、存放其数据的数组元素下标:0,1,2, 报上数字与幸运数相等,则 记录编号到幸运者数组中 获奖者人数加1 最后,打印出获奖者编号和获得的奖金数额,数组的使用,数组的使用,求两个不超过200位的非负整数的和 定义数组表示两个操作数 逐位进行加法,注意进位处理,数组的使用,程序阅读 #define MAX_LEN 200 int an1MAX_LEN+10; int an2MAX_LEN+10; char szLine1MAX_LEN+10; char szLine2MAX_LEN+10; int main() int i, j; scanf(“%s”, szLine1); scanf(“%s”,

12、 szLine2); memset(an1, 0, sizeof(an1); memset(an2, 0, sizeof(an2);,数组的使用,int nLen1= strlen(szLine1); j=0; for(i=nLen1-1; i=0; i-) an1j+ = szLine1i-0; int nLen2= strlen(szLine2); j=0; for(i=nLen2-1; i=0; i-) an2j+ = szLine2i-0; for(i=0; i=10) an1i -= 10; an1i+1+; ,数组的使用,bool bStartOutput=false; for(i

13、=MAX_LEN; i=0;i-) if (bStartOutput) printf(“%d”, an1i); else if (an1i) printf(“%d”, an1i); bStartOutput = true; return 0; ,小结,数组定义 数组的赋值、访问和遍历,课上练习,数组逆序排列 编程实现数组aN中数据逆序置换 元素交换 t = ai; ai = aj; aj = t; 例如:,6,5,4,3,2,1,1,2,3,4,5,6,作业,1. 输入一个整数输出其二进制、十六进制表示 2. 从键盘输入8个整数放入数组,然后将每个奇数加1,每个偶数减1,最后输出数组的所有元素

14、 3. 有3门课程成绩,最多不超过30人 1. 计算每个学生的总分和平均分 2 . 任意输入一个学号能够查找出该学生的考试分数 3. 分别找出各科成绩的最高分 以及最高分 所对应的学生学号 4. 统计该班中各个分数段所占人数,思考题,问题描述 有 n 个人,编号为 1, 2, . . ., n, 站成一圈。沿着圈顺序数,每到第m个人就把他杀掉,这样一直进行下去,直到只剩下一个人,那个人就活下来。约瑟夫很聪明,他总会想办法站到一个合适的位置上,使得自己能够成为最后一个,从而活下来。例如:n = 6 , m = 5 时,被杀的顺序是5, 4, 6, 2, 3 ,而 1 最终活下来。 给定n, m,求出最后留下的人的编号位置,1,2,3,4,5,6,1,2,3,4,6,1,2,3,6,1,2,3,1,3,start,end,start,end,start,end,end,start,start,end,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号