找回密码
 注册

QQ登录

只需一步,快速开始

查看: 720|回复: 0

大工20春《c&c++语言程序设计》七

[复制链接]
发表于 2021-2-25 12:06:00 | 显示全部楼层 |阅读模式
C/C++语言程序设计辅导资料七
一、主题:数组二、学习时间:2020年5月11日-5月17日“不忘初心、牢记使命”主题理论学习:
忠诚是共产党人必须具备的优秀品格。“忠诚印寸心,浩然充两间”的坚毅,“砍头不要紧,只要主义真”的无畏,腹中满是草根而宁死不屈的气节,食指钉入竹签而永不叛党的坚贞,无数先烈用鲜血诠释了对党的忠诚。对党忠诚必须是纯粹的、无条件的,是政治标准、更是实践标准,鲜明体现在坚决贯彻答案决策部署上。
摘选自《在第十九届中央纪律检查委员会第二次全体会议上的讲话》三、知识脉络:
第6章 数组
6.0 导学
6.1 一维数组
6.2 一维数组排序
6.3 二维数组四、学习要求:
理解数组的特点
掌握一维、二维数组的定义及初始化方法
理解一维、二维数组的存储方式
掌握数组元素的访问及遍历数组的方法
掌握冒泡排序算法
了解选择排序与插入排序
理解各种排序算法的特点五、重点难点:
数组的定义
数组初始化
引用数组元素六、主要内容:
1.理解数组
数组(Array)由相同类型的相关数据项组成的数据集合。
数组是有序数据的集合元素类型相同,存放在连续内存区域。
在循环结构和函数中使用能提高效率和可读性。2.一维数组
定义
int iA[N];类型说明符 数组名[常量表达式];引用
下标方式访问数组元素:数组名[下标]初始化
一般形式为:类型说明符 数组名[N]={值1,值2,…值n};
int  a [ 5 ] = { 1,  3,  5,  7,  9 };               
int  b1 [ 5 ] = { 0 } ;                // 全部元素初始化为 0
int  b2 [ 5 ] = { 1, 2, 3 } ;    // b2[3],  b2[4]系统自动赋值               
int  c [  ] = { 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[M][N];类型说明符 数组名[常量表达式1][常量表达式2];引用
下标方式访问二维数组:数组名[行下标] [列下标]初始化
按行分段赋初值
        int  a [ 2 ] [ 3 ] = {   { 1, 2, 3 }, { 4, 5, 6 }   } ;
按行连续赋初值
int  b [ 2 ] [ 3 ] = { 1, 2, 3, 4, 5, 6 } ;  //一维数组初始化方式七、习题:
1.已知:int x;  int y[10]; 下列______是合法的。
A.&x
B.&(x+3)
C.&5
D.&y
答案:A2.下列对数组定义不正确的语句是______________。
A.int m[5]
B.char b[]={‘h’,’e’}  
C.int a[10]={1,6,8,4}
D.char  p[]
答案:D3.下列对数组的定义和初始化正确的为( )
A.int n, a[n]={1,2,3}
B.double a[6]={1.1,2.2,3.3}
C.int  a [ 5 ] = { 1,3, , 7,9}
D.float a[5]={}
答案:B4.main( )
    { int n[3],i,j,k;
    for(i=0;i〈3;i++〉   n[i]=0;
    k=2;
    for (i=0;i〈k;i++〉
    for (j=0;j〈k;j++〉   n[j]=n[i]+1;
    printf("%d\n",n[1]);     }
    下述程序运行后输出结果是_____。
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[i]; j=i-1;
      while(j>=0&&t>a[j])
      { a[j+1]=a[j];  j--; }
      a[j+1]=t;
}
   ... ...
则该程序段的功能是_________.
A.对数组a进行插入排序(升序)
B.对数组a进行插入排序(降序)
C.对数组a进行选择排序(升序)
D.对数组a进行选择排序(降序)
答案:B7.已知int m[5] = {0, 1, 2, 3, 4},下列语句不正确的是______________。
A.printf(“%d”, m[5])
B.printf(“%d”, m[0])
C.printf(“%d”, m[0] – m[4])
D.printf(“%d”, m[2]*m[2])
答案:A8.下列对二维数组的定义和初始化正确的为( )
A.int n, a[n][n]={1,2,3}
B.double a[2][2]={1.1,2.2,3.3}
C.int  a[2][ 2 ] = { {1,3} , , }
D.float a[5][6]={}
答案:B9.以下对二维数组a的正确说明是________.
A.int a[3][]
B.float a(3,4);
C.double a[1][4]
D.float a(3)(4);
答案:C10.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.  
(假设a[0][0]位于数组的第一个位置上。)
A.i*m+j
B.j*m+i
C.i*m+j-1
D.i*m+j+1
答案:D
南开答案可以联系QQ 761296021

QQ|手机版|小黑屋|网站地图|无忧答案网 ( 冀ICP备18010495号-1 )

GMT+8, 2024-5-4 11:24

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表