大工20秋《c&c 语言程序设计》辅导资料七
C/C++语言程序设计辅导资料七一、主题:数组二、学习时间:2020年11月9日-11月15日“不忘初心、牢记使命”主题理论学习:
忠诚是共产党人必须具备的优秀品格。“忠诚印寸心,浩然充两间”的坚毅,“砍头不要紧,只要主义真”的无畏,腹中满是草根而宁死不屈的气节,食指钉入竹签而永不叛党的坚贞,无数先烈用鲜血诠释了对党的忠诚。对党忠诚必须是纯粹的、无条件的,是政治标准、更是实践标准,鲜明体现在坚决贯彻党中央决策部署上。
摘选自《在第十九届中央纪律检查委员会第二次全体会议上的讲话》三、知识脉络:
第6章 数组
6.0 导学
6.1 一维数组
6.2 一维数组排序
6.3 二维数组四、学习要求:
理解数组的特点
掌握一维、二维数组的定义及初始化方法
理解一维、二维数组的存储方式
掌握数组元素的访问及遍历数组的方法
掌握冒泡排序算法
了解选择排序与插入排序
理解各种排序算法的特点五、重点难点:
数组的定义
数组初始化
引用数组元素六、主要内容:
1.理解数组
数组(Array)由相同类型的相关数据项组成的数据集合。
数组是有序数据的集合元素类型相同,存放在连续内存区域。
在循环结构和函数中使用能提高效率和可读性。2.一维数组
定义
int iA;类型说明符 数组名[常量表达式];引用
下标方式访问数组元素:数组名[下标]初始化
一般形式为:类型说明符 数组名={值1,值2,…值n};
inta [ 5 ] = { 1,3,5,7,9 };
intb1 [ 5 ] = { 0 } ; // 全部元素初始化为 0
intb2 [ 5 ] = { 1, 2, 3 } ; // b2,b2系统自动赋值
intc [] = { 1, 2, 3, 4, 5, 6 } ; // 自动定义数组长度为63.冒泡排序
基本思想
依次两两比较相邻元素:若为逆序则进行交换将待排序元素从左至右比较一遍称为一轮“冒泡”。每轮冒泡都将待排序列中的最大关键字交换到最后位置。直到全部元素有序为止。算法演示
比较相邻元素,逆序则交换。进行若干轮比较, 每轮将最大的数置于未排序数后。
4.选择排序
基本思想
在两两比较后并不马上进行交换,在找到最大的数后,记住最大数的位置(数组下标),待一轮比较完毕后,再将最大数交换到最前面。算法描述
若有N个数,则需要进行N-1轮排序处理。
第1轮排序从1~N个数中找出最小的数,然后将它与第1个数交换。第1个数则是最小的数。
第2轮排序从2~N个数中找出最小的数,然后将它与第2个数交换。第2个数则是次小的数。
经过 N-1 轮处理,完成全部N个数排序。
编程时使用二重循环。外面的大循环控制进行N-1轮排序,内循环找出第 i 轮的最小值。5.插入排序
基本思想
把数组中的元素按照一定顺序,逐个插入到已经排好序的数组中,使得整个数组依然有序。6.二维数组
定义
int iA;类型说明符 数组名[常量表达式1][常量表达式2];引用
下标方式访问二维数组:数组名[行下标] [列下标]初始化
按行分段赋初值
inta [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } } ;
按行连续赋初值
intb [ 2 ] [ 3 ] = { 1, 2, 3, 4, 5, 6 } ;//一维数组初始化方式七、习题:
1.已知:int x;int y; 下列______是合法的。
A.&x
B.&(x+3)
C.&5
D.&y
答案:A2.下列对数组定义不正确的语句是______________。
A.int m
B.char b[]={‘h’,’e’}
C.int a={1,6,8,4}
D.charp[]
答案:D3.下列对数组的定义和初始化正确的为( )
A.int n, a={1,2,3}
B.double a={1.1,2.2,3.3}
C.inta [ 5 ] = { 1,3, , 7,9}
D.float a={}
答案:B4.main( )
{ int n,i,j,k;
for(i=0;i〈3;i++〉 n=0;
k=2;
for (i=0;i〈k;i++〉
for (j=0;j〈k;j++〉 n=n+1;
printf("%d\n",n); }
下述程序运行后输出结果是_____。
A.2
B.1
C.0
D.3
答案:D5.以下叙述中错误的是 _____。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D.可以通过赋初值的方式确定数组元素的个数
答案:C6.若有以下程序段:
int a[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{
t=a; j=i-1;
while(j>=0&&t>a)
{ a=a;j--; }
a=t;
}
... ...
则该程序段的功能是_________.
A.对数组a进行插入排序(升序)
B.对数组a进行插入排序(降序)
C.对数组a进行选择排序(升序)
D.对数组a进行选择排序(降序)
答案:B7.已知int m = {0, 1, 2, 3, 4},下列语句不正确的是______________。
A.printf(“%d”, m)
B.printf(“%d”, m)
C.printf(“%d”, m – m)
D.printf(“%d”, m*m)
答案:A8.下列对二维数组的定义和初始化正确的为( )
A.int n, a={1,2,3}
B.double a={1.1,2.2,3.3}
C.inta[ 2 ] = { {1,3} , , }
D.float a={}
答案:B9.以下对二维数组a的正确说明是________.
A.int a[]
B.float a(3,4);
C.double a
D.float a(3)(4);
答案:C10.若二维数组a有m列,则计算任一元素a在数组中位置的公式为______.
(假设a位于数组的第一个位置上。)
A.i*m+j
B.j*m+i
C.i*m+j-1
D.i*m+j+1
答案:D
本内容由易百教育整理发布
网址www.openhelp100.com
QQ 515224986
页:
[1]