《C语言程序设计》教案6-1_第1页
《C语言程序设计》教案6-1_第2页
《C语言程序设计》教案6-1_第3页
《C语言程序设计》教案6-1_第4页
《C语言程序设计》教案6-1_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计教案编号:C程序设计 6 制订日期:2011-1-25课程名称第6章 数组授课形式讲授授课班级2010级软件工程授课时数 6学时授课日期2011.03.20-04.10 第5、6周授课地点公1#512、#513教学目标与要求:1. 了解什么是数组 2. 掌握3.教学重点、难点:1. ;2. ;3. ;4. (重点)教学准备: 1采用多媒体教学。2教学材料教材:C语言程序设计(第四版)谭浩强著 清华大学出版社参考资料:C+语言程序设计与实践张思民著 清华大学出版社3制作多媒体课件,讲稿。教学过程与时间分配备注授课内容(补充内容)随机函数1、 随机函数随机函数是数学库函数中描述随机数

2、的一个常用函数。随机数是一种随机产生、事先无法预测的数值。在设计程序时,有时候会需要用到随机数。C+ 在系统头文件 cstdlib中内建了一个随机数产生器随机函数 rand( ),这是用来产生随机数的函数。随机函数 rand( )可以产生032767之间的一个伪随机整数。之所以用“伪”字来形容它,是因为产生的随机数依赖于一个特殊的输入值,这个输入值称为“种子”。有两个用于产生随机数种子的函数:和time( )。srand( )函数在系统头文件 cstdlib中定义,由于头文件 cstdlib是系统默认的,因此可以省略。time( ) 函数在系统头文件 ctime中定义,time( )函数的返回

3、值实际上是以秒为计数单位的计算机内部时钟的当前时间。由于每次执行的时候,时间的数值都不相同,因此产生的随机数不会重复。如果事先没有调用srand( )和time( )这两个函数,将产生同一序列的随机数。2、产生随机数为了在运行程序时,每次都获得不同的随机数,需要rand( )、srand( )和time( )三个函数结合起来使用。例如:srand(time(0);int n = rand();则每次产生的随机数n都是不重复的。【补充例1】产生三个每次运行都各不相同的随机数。源程序如下:1 #include rand( )和srand( )需要用到此头文件2 #include time( )需要

4、用到此头文件3 #include 4 5 void main()6 7 int a, b, c; 用于产生每次运行程序获得不重复的随机数的种子8 srand(time(0);9 a = rand();产生三个随机数,若没有种子,每次会产生重复的数10 b = rand();11 c = rand();12 printf( a = %d t , a);13 printf( b = %d t , b);14 printf( c = %d n , c);15 在本程序中,使用了产生种子的语句,每次运行程序所得到的三个随机数都不是重复的。例如,第一次运行程序所得到的三个随机数为:a = 26921 b

5、 = 28173 c = 574有种子,产生的随机数不重复再运行一次程序,其运行结果为:a = 27087 b = 19285 c = 26911在程序中,若没有产生种子的语句“srand(time(0); ”,则每次运行程序所得到的三个随机数都会重复。例如,第一次运行程序所得到的三个随机数为:a = 41 b = 18467 c = 6334没有种子,产生的随机数是重复的再运行一次程序,其运行结果仍是:a = 41 b = 18467 c = 6334 实际编程中,经常需要产生在一个指定的范围内的随机数。为了控制随机数在一个指定的范围内产生,需要用到取模运算符“%”。例如要获得一个0 N-1

6、之间的随机整数,可以使用 “rand( ) % N”来产生。 【补充例2】产生三个100以内的随机数。 源程序如下:1 #include rand( )和srand( )需要用到此头文件2 #include time( )需要用到此头文件3 #include 4 5 void main()6 7 int a, b, c; 8 int N = 100;9 srand(time(0);10 a = rand() % N +1;由于产生随机数的范围是0 99,故需要再加111 b = rand() % N +1;12 c = rand() % N +1;13 printf( a = %d t , a

7、);14 printf( b = %d t , b);15 printf( c = %d n , c);16 程序运行结果为:a = 76 b = 94 c = 56.1.1一维数组数组是具有相同类型变量的集合。在数组中,各个变量称之为元素。其中,同一数组中的所有元素都有相同的名字,只是下标不同。只有一个下标的数组称之为一维数组,有多个下标的数组称之为多维数组。1.一维数组的定义一维数组定义的一般形式为:数据类型 数组名 常量表达式;说明:(1) 数据类型表示数组元素的类型。(2) 数组名的命名规则跟变量名一样。(3) 方括号中的常量表达式是数组的容量,即包含元素的个数。例如:定义数组int

8、a10;表示定义了一个整型的数组a,含有10个元素(每个元素都是整型)。其说明如图6.1所示。图6.1 数组定义的说明数组一旦定义,各数组元素名就确定了。数组元素的一般形式为: 数组名下标数组的第一个元素的下标总是从0开始的。对于上面所定义的数组a10,其元素依次为a0, a1, a2, a3, a4, a5, a6, a7, a8, a9。其实,数组名代表的是数组的首地址,下标则是数组元素到数组开始的偏移量。系统为数组在内存分配的是一片连续的存储的单元,如定义了“int a10;”,则它的10个元素在内存中的排列情况如图6.2所示:图6.2 一维数组元素在内存中的排列情况2.一维数组的初始化

9、数组初始化是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。数组初始化赋值的一般形式为:数据类型 数组名常量表达式 = 值,值,值;其中在 中的各数据值依次为各元素的初值,各值之间用逗号间隔。例如: int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;相当于a0 = 0; a1 = 1; .; a9 = 9;数组初始化赋值的几点说明:(1)可以只给部分元素赋初值。当 中数据值的个数少于元素个数时,只给前面部分元素赋值。例如: int a10 = 0, 1, 2, 3, 4;表示只给a0a4这5个元素赋值,而后5个元素将被

10、编译器自动赋0值。如图6.3所示。图6.3 未赋值的元素自动被0填充(2)只能给元素逐个赋值,不能给数组整体赋值。例如:给十个元素全部赋1值,只能写为: int a10 = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;而不能写为: int a10=1;(3)如在定义数组时给全部元素赋初值,则在数组定义的说明中,可以不显式的指出数组容量,系统会以给出的数值个数默认为数组容量。例如: int a5 = 1, 2, 3, 4, 5;可写为: int a = 1, 2, 3, 4, 5;注意,C+ 数组元素以0开头而不是以1开头,经常会有初学者搞错。例如,声明了数组int a5;这表示数

11、组a 有5个元素:a0、a1、a2、a3、a4。这个数组中没有a5这个元素。需要指出的是,这时如果在程序中使用了a5,运行程序时C+ 系统并不会报错。C+ 不会检查访问数组是否越界,系统会把紧接着a4后面的存储单元中的值取出来当作a5,程序能够使用这个值继续运行,并得出结果,尽管这个结果是错误的。如图6.4所示。图6.4 当使用数组中并没有的元素a5时,其取值情况(4)对于分布有规律、能用表达式表示元素的数组,经常采用循环结构来给数组元素进行初始化,先声明一个数组,然后在循环中使用赋值语句逐个初始化数组元素。例如: int a5; for(i = 0; i 5; i+) ai = i + 1;

12、 通过循环,数组下标 i 从 0逐个递增到4(因为当 i=5时,条件i5为假,不能进入循环体)。【例6-1】随机产生10个100以内的整数,并找出其中的最大数。 源程序如下:/ 随机产生10个100以内的整数,并找出其中的最大数。 #include #include void main()声明数组a 有10个元素int i, max, a10;int N = 100;循环变量i的取值从0到9,与数组a 的下标值相同srand(time(0);for(i = 0; i 10; i+)每循环一次,数组a 的下标值都会变化采用循环,产生10个100以内的随机整数,为数组赋值,并输出这10个数ai = rand() % N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论