C语言上机5数组
C语言上机五 数组
一、上机目的
熟练;
熟练掌握。
熟练使用实现程序设计
以下程序定义了三个数组并分别打印出来:
一个含有5个元素的整型数组,值分别为10,20,30,40,
一个含有8个元素的字符型数组,第2、4、6、8个元素分别为gdut四个字符。
一个含有15个元素的浮点型数组,其中第1个和第4个元素的值为3.14,第2个和第5个的值为6.18,其余的元素值为0。
程序的运行结果如下,请将源程序补充完整。
2)伪随机数与数组元素赋值
伪随机数函数rand() 可以用来产生0-32767 之间的伪随机数.
它是根据一个数(称为种子)为基准以某个递推公式推算出来的一个数列,当这个数列很大的时候,符合正态公布,从而相当于产生了随机数。
用法:
#include "stdlib.h" //包含C语言标准库函数
int randNum; //定义一个变量randNum
randNum = rand() // randNum的值0-32767
运行以下程序5次,观察每一次的结果是否相同?
3)srand( )获得随机数种子,用于产生随机数
用法:srand( int x );
运行以下程序5次,每次都改变Seed的值,观察每一次的结果是否相同?
4)产生真正随机数的办法
利用time() 函数根据系统时间获得一个数,做为随机数的种子。由于系统时间是变化的,所以获得的随机数种子也是变化的。
time(NULL)或time(0): 利用time函数返回unsigned int,值为1970年1月1日
午夜到现在所经历的时间。
用法:
#include "time.h" //包含时间库函数
srand(time(NULL)): 以time函数的返回值为种子。
运行以下程序5次,观察每一次的结果是否相同?
编写一段语句加入以上程序,统计生成的随机数中奇数和偶数的个数。
5)数组元素的查找
分析以下程序,学习如何在数组中查找元素
6)在数组中插入元素
输入一个正整数x,把x插入到组数据中,使该组数据仍然有序。
7)数组的排序
i) 比较交换排序法
算法步骤:
1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3)重复第二步,直到所有元素均排序完毕。
分析以下程序,掌握比较交换排序法。
ii) 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地比较数组中的两个相邻元素,如果顺序错误就交换。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
算法步骤:
1)比较相邻的元素a[j]和a[j+1]。如果a[j]比a[j+1]大,就交换a[j]和a[j+1]。
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3)针对所有的元素重复以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
三、上机作业
选择题:
1. 以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素
B. 数组的大小是可变的,但所有数组元素的类型必须相同
C. 数组的大小是固定的,所有数组元素的类型必须相同
D. 数组的大小是可变的,可以有不同的类型的数组元素
2. 以下对一维整型数组a的正确说明是( )。
A.int a(10); B. int n=10,a[n];
C.int n; D. #define SIZE 10
scanf("%d",&n); int a[SIZE]; int a[n];
3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A. 整型常量
B. 整型表达式
C. 整型常量或整型表达式
D. 任何类型的表达式
4. 以下对一维数组m进行正确初始化的是( )。
A. int m[10]=(0,0,0,0) ; B. int m[10]={ };
C. int m[ ]={0}; D. int m[10]={10*2};
5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是( )。
A