习题6(第七章)数组
第七章习题-2008

第七章习题一.判断题(下列各题,正确的请在后面的括号内打√,错误的打×)1.图可以没有边,但不能没有顶点。
()2.在有向图中,<V1 ,V2>与<V2 ,V1>是两条不同的边。
()3.邻接表只能用于有向图的储存。
()4.用邻接矩阵法存储一个图时,再不考虑压缩存储的情况下,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
()5.若以某个顶点开始,对有n个顶点的有向图G进行深度优先遍历,所得的遍历序列唯一,则可以断定其边数为n-1。
( )6.有向图不能进行广度优先遍历。
( )7.若一个无向图以顶点V1为起点进行深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。
()二.填空题1.图有_、_等存储结构;遍历图有_、_等方法。
2.图的邻接矩阵是表示_之间相邻关系的矩阵。
3.有向图G用邻接矩阵存储,其第i行的所有元素之和等于顶点i的_。
4. n个顶点的完全图有_条边。
无向图n(n-1)/2有向图n(n-1) 三.选择题1.在一个图中,所有顶点的度数之和等于图的边数的()倍。
A.1/2 B.1 C.2 D.42.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。
A .1/2 B.1 C.2 D.43.有8个顶点的无向连通图最少有( )条边。
A .5 B.6 C.7 D.84.有8个顶结点的有向完全图有( )条边。
A .14 B.28 C.56 D.1125.用邻接表表示图进行广度优先遍历时,通常采用( )来实现算法。
A .栈 B.队列 C.树 D.图四.综合题1.已知有向图G 用邻接矩阵存储,设计算法分别求解顶点Vi 的入度、出度和度。
2.分别用Prim 算法和Kruskal 算法求解图7.17的最小生成树,标注出中间求解过程的各状态。
6 20 19 17 917 1916 15 20 24133.对图中的AOV 网,完成如下操作:按拓扑排序方法进行拓扑排序。
写出中间各步的入度数组和栈的状1 65 3 4 7 2态值,并写出拓扑序列。
C语言程序设计习题集(有答案)

高等教育自学考试C语言程序设计(二)课程代号(05772)同步练习题班级学号姓名二O 一六年三月目录第一章C语言概述第二章基本数据类型第三章控制结构第四章运算符和表达式第五章函数第六章数组第七章字符与字符串第八章变量类别与编译预处第九章指针第十章结构体、共用体和枚举类型第十一章文件第一章C语言概述一、单项选择题1.在计算机上可以直接运行的程序是()。
A.高级语言程序B.汇编语言程序C.机器语言程序D.C语言程序2. 一个C语言程序是由()A.若干函数组成B.若干过程组成C.若干主程序组成D.若干子程序组成3. C语言不具有的特点是()A.具有结构化的控制语句B.数据类型丰富C.语法限制不太严格,程序设计自由度大D.在可移植性上,C语言比其他语言差4. 以下叙述不正确的是()A.一个C语言程序可由一个或多个函数组成B.一个C语言程序必须包含一个主函数C.C语言程序的基本组成单位是函数D.在C语言程序中,注释说明只能位于一条语句的后面5. 以下叙述正确的是()A.C语言比其他语言高级B.C语言可以不用编译就能被计算机识别和执行C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D.C语言出现的最晚,所以具有其他语言的一切优点二、填空1. 计算机语言的发展经过了、和等阶段。
2. C语言既适合编写,也适合编写应用软件。
标准答案一、单项选择题CADDC二、填空1. 机器语言,汇编语言,高级语言2. 系统软件第二章基本数据类型一、单项选择题1.正确的C语言用户自定义标识符是()A.printB.floatC.when?D.random%22.属于C语言基本数据类型的是( )A.指针型B.无符号整型C.数组型D.结构型3.C语言的长整型数值在计算机中占用的字节个数是( )A.1B.2C.3D.44.C语言中,″\x3d″在内存中占用的字节数是( )A.1B.2C.4D.55.下列关于C语言的叙述错误的是( )A. 英文字母大小写不加以区分B. 不同类型的变量可以出现在同一个表达式中C. 在赋值表达式中赋值号两边的类型可以不同D. 某些运算符在不同的场合可以有不同的含义6.下列转义字符中错误的是( )A. ′\000′B. ′\14′C. ′\x111′D. ′\2′7.下列标识符中,不是C语言保留字的是( )A. charB. whileC. minD. default8.下列保留字中用于构成循环结构的是()A.ifB.whileC.switchD.default9. 数据-324在二进制文件和文本文件中所占的字节数分别是()A.2,2B.2,4C.4,2D.4,410. 请选出可以作为C语言用户标识符的一组标识符()A.void, define, WORD B.A3_B3, _123, abcC.FOR, -abc, Case D.2a, Do, Sizeof11.下列运算符优先级最高的是()A.关系运算符B.赋值运算符C.算术运算符D.逻辑运算符12. sizeof(float)是()A.一种函数调用B.一个不合法的表示形式C.一个整型表达式D.一个浮点表达式13. 下列叙述不正确的是()A.一个C语言程序可由一个或多个函数组成B.一个C语言程序必须包含一个main函数C.C语言程序的基本组成单位是函数D.在C语言程序中,注释说明只能位于一条语句的后面14. 编译C语言程序时,程序中的注释部分将()A.不参加编译,也不会出现在目标程序中B.参加编译,但不会出现在目标程序中C.不参加编译,但会出现在目标程序中D.参加编译,并会出现在目标程序中15. 下列字符串常量不正确的是()A.'abc' B."12'12" C."0" D." "16. 下列4个选项中,均是合法整型常量的是()A.160 -0xffff 011B.-0xcdf 01ª0xeC.-01 986,012 0668D.-0x48a 2e5 0x17. 以下选项中不属于C语言类型的是()A.signed short int B.unsigned long intC.unsigned int D.long short18. 数值029是一个()A.八进制数B.十六进制数C.十进制数D.非法数19. 在C语言中,要求运算数必须是整型的运算符是()A./ B.++ C.!=D.%20. 当c的值不为0时,以下能将c的值赋给变量a,b 的是()A.c=b=a B.(a=c) || (b=c)C.(a=c) && (b=c) D.a=c=b二、填空1. 表示空类型的保留字是_____________。
Java语言程序设计(郑莉)第七章课后习题答案

Java语言程序设计第七章课后习题答案1.数组的声明与数组元素的创建有什么关系?答:声明数组仅仅是代表试图创建数组,不分配任何存储空间,声明是为创建做“铺垫”。
2.Vector类的对象与数组有什么关系?什么时候适合使用数组,什么时候适合使用Vector?答:vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。
3.与顺序查找相比,二分查找有什么优势?使用二分查找的条件?答:对于大数据量中进行查找时二分查找比顺序查找效率高得多;条件是已排序的数组。
4.试举出三种常见的排序算法,并简单说明其排序思路。
答:①选择排序:基本思想是站在未排序列中选一个最小元素,作为已排序子序列,然后再重复地从未排序子序列中选取一个最小元素,把它加到已经排序的序列中,作为已排序子序列的最后一个元素,直到把未排序列中的元素处理完为止。
②插入排序:是将待排序的数据按一定的规则逐一插入到已排序序列中的合适位置处,直到将全部数据都插入为止。
③二分查找:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
5.声明一个类People,成员变量有姓名、出生日期、性别、身高、体重等;生成10个People 类对象,并放在一个以为数组中,编写方法按身高进行排序。
//People类public class People{private String name;private String birthdaydate;private String sex;private double height;private double weight;public People(){//默认构造函数}public People(People p){=;this.birthdaydate=p.birthdaydate;this.sex=p.sex;this.height=p.height;this.weight=p.weight;}public People(String name,String birthdaydate,String sex,double height,double weight){=name;this.birthdaydate=birthdaydate;this.sex=sex;this.height=height;this.weight=weight;}public String getName() {return name;}public void setName(String name) { = name;}public String getBirthdaydate() {return birthdaydate;}public void setBirthdaydate(String birthdaydate) {this.birthdaydate = birthdaydate;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public String toString(){return"姓名:"+name+"\n出生年月:"+birthdaydate+"\n性别:"+sex+"\n 身高:"+height+"\n体重:"+weight;}}//test7_5类public class test7_5 {/***@param args*/public static void main(String[] args) {// TODO Auto-generated method stubPeople[] people={new People("林楚金","1989年8月13日","男",182,63.5),new People("诸葛亮","181年7月23日","男",184,76.6),new People("迈克杰克逊","1958年8月29日","男",180,60),new People("乔丹","1963年2月17日","男",198,98.1),new People("拿破仑","1769年8月15日","男",159.5,63),new People("苍井空","1983年11月11日","女",155,45),};People temp=new People();for(int i=0;i<people.length-1;i++)for(int j=i+1;j<people.length;j++){if(people[i].getHeight()<people[j].getHeight()){temp=people[j];people[j]=people[i];people[i]=temp;}}System.out.println("按身高从小到大排序后的结果如下:");for(int i=0;i<people.length;i++)System.out.println(people[i]+"\n");}}运行结果:6.声明一个类,此类使用私有的ArrayList来存储对象。
课后习题六(第七章)

课后习题(第七章)1、为了缩短指令中地址码的位数,应采用( B )寻址。
A、立即数B、寄存器C、直接D、间接2、指令系统中采用不同寻址方式的目的主要是( B )A. 可降低指令译码难度B. 缩短指令字长、扩大寻址空间、提高编程灵活性C. 实现程序控制D. 提高指令执行速度3、零地址运算指令在指令格式中不给出操作数地址,它的操作数来源自( C )A. 立即数和栈顶B. 暂存器C. 栈顶或隐含约定的位置D. 存储器4、单地址指令中,为完成两个数的算术运算,除地址译码指明的一个操作数外,另一个数常采用( C )A. 堆栈寻址方式B. 立即寻址方式C. 隐含寻址方式D. 基址寻址方式5、二地址指令中,操作数的物理位置安排,描述正确的是( C )A. 两个主存单元(且依然在现指令系统中采用)B. 栈顶和次栈顶C. 主存单元或寄存器D. 两个同时为寄存器不允许使用6、操作数在寄存器中的寻址方式称为( C )寻址A. 直接B. 立即C. 寄存器直接D. 寄存器间接7、寄存器间接寻址方式中,操作数在( C )A. 通用寄存器B. 堆栈C. 主存单元D. I/O外设中8、变址寻址方式中,操作数的有效地址是( C )A. 基址寄存器内容加上形式地址B. 程序计数器内容加上形式地址C. 变址寄存器内容加上形式地址D. 形式地址本身9、采用基址寻址可扩大寻址范围,且( B )A. 基址寄存器内容由用户确定,在程序执行过程中一般不可变B. 基址寄存器内容由操作系统确定,在程序执行过程中一般不可变C. 基址寄存器内容由用户确定,在程序执行过程中可随意变化D. 基址寄存器内容由操作系统确定,在程序执行过程可随意变化10、变址寻址和基址寻址的有效地址形成方式类似,但是( C )A. 变址寄存器内容在程序执行过程中是不可变的B. 在程序执行过程中,变址寄存器和基址寄存器的内容可以随意变化C. 在程序执行过程中,变址寄存器的内容可随意变化D. 以上均不对11、堆栈寻址中,设A为累加器,SP为栈顶指针,[SP]为其指向的栈顶单元,如果进栈的动作顺序是(SP)-1SP,(A)[SP],那么出栈的动作顺序是( A )A. [SP] (A),(SP)+1SPB. (SP)+1SP,[SP] (A)C. (SP)-1SP,[SP] (A)D. [SP] (A),(SP)-1SP12、设变址寄存器为X,形式地址为D,某机具有先变址再主存间址的寻址方式,则这种寻址方式的有效地址为( C )A. EA=(X)+DB. EA=(X)+(D)C. EA=((X)+D)D. EA=((X))+D13、设变址寄存器为X,形式地址为D,某机具有先主存间址再变址的寻址方式,则这种寻址方式的有效地址为( B )A. EA=(X)+DB. EA=(X)+(D)C. EA=((X)+D)D. EA=((X))+D14、运算型指令的寻址和转移类指令的寻址不同点在于( A )A. 前者取操作数,后者决定程序转移地址B. 前者计算转移地址,后者取操作数C. 前者是短指令,后者是长指令D. 前者是长指令,后者是短指令15、指令的寻址方式有顺序和跳跃两种,采用跳跃寻址方式可以实现( C )A. 程序的条件转移B. 程序的无条件转移C. 程序的条件转移和无条件转移D. 以上均不对16、设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量(补码表示),若CPU每当从存储器取出一个字节时,即自动完成(PC)+1PC。
chap6_数组

2 -9
6
-1
二维数组基本概念
多维数组的空间想象
一维数组: 一列长表或一个向量
二维数组: 一个表格或一个平面矩阵
三维数组: 三维空间的一个方阵
多维数组: 多维空间的一个数据阵列
1、二维数组的定义
定义方法
类型名 数组名[行长度] [列长度];
如:
int a[3][2];
二维整型数组a,3行2列,共6个元素
一开始假设a[0]最小,即index=0 分别与a[j] (j=1,2,…,n-1)比大小,若a[index]> a[j], 则令index=j
求最小元素
#include <stdio.h> 如何求最大值? void main( ) 习题6-7 { int j, index, n; int a[10]; printf("Input %d integers: ", n); for( j= 0; j< n; j++) scanf("%d", &a[j]); index = 0; for( j= 1; j< n; j++) if( a[j] < a[index]) index = j; printf("min is %d\n", a[index] ); }
static int b[5] = {1, 2, 3, 4, 5};
如果没有初始化,静态数组元素自动赋0
static int b[5]; 相当于 static int b[5]={0, 0, 0, 0, 0};
若只对部分元素附初值,其余元素的值等于0.
int b[5] = {1, 2, 3};
课后习题-Ubuntu Linux 操作系统与实验教程(第2版)-微课-马丽梅-清华大学出版社

Ubuntu linux 操作系统与实验教程(第2版)课后习题第一章习题一1、判断题(1)在一台主机上只能安装一个虚拟机。
(2)在一个虚拟机下只能安装一个操作系统。
(3)格式化虚拟机下的操作系统就是格式化主机的操作系统。
(4)虚拟机的安装有三种安装类型。
(5)VMware Workstation 15 默认分配的推荐虚拟机的存是1G。
(6)Ubuntu 有两种安装方式:即Ubuntu和安装Ubuntu。
(7)解压vmware-install.pl文件安装VM tools。
(8)VMtools安装完成后可以在主机和虚拟机之间任意拖动和复制文件。
2、简答题(1)请简述在虚拟机的安装过程中,四种网络类型的特点?(2)简述.vmdk 和.vmx 文件的不同点?(3)Ubuntu应该建立几个分区?每个分区的大小是多少?(4)虚拟机捕获屏幕有什么作用?3、实验题(1)安装VMware Workstation Pro 15。
(2)为安装ubuntukylin-16.04.06创建虚拟机。
(3)在虚拟机中安装ubuntukylin-16.04.06。
(4)在Ubuntu下安装VM tools。
(5)上述实验完成后创建快照,如果使用Ubuntu过程中出现问题,可以恢复快照。
(6)更改虚拟机的内存、添加硬盘。
第二章习题二1、判断题(1)Linux操作系统诞生于1991 年8月。
(2)Linux是一个开放源的操作系统。
(3)Linux是一个类unix操作系统。
(4)Linux是一个多用户系统,也是一个多任务操作系统。
(5)Ubuntu Linux 16.04默认的桌面环境是Gnome。
(6)Ubuntu每一年发布一个新版本。
(7)ubuntu Linux 16.04包含LibreOffice套件。
2、简答题(1)什么是Linux?(2)简述Linux系统的产生过程?(3)简述Linux系统的组成?(4)什么是Linux 内核版本?举例说明版本号的格式。
c语言练习题6(数组与链表,有答案)

1、(1)数据结构中,与所使用的计算机无关的是数据的_C_______。
A)存储结构B)物理结构C)逻辑结构D)物理和存储结构评析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。
数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
2、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是____D____。
A)ABCED B)DBCEA C)CDABE D)DCBEA评析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、c、D,则表明这4个元素中D是最后进栈,B、c处于中间,A最早进栈。
所以出栈时一定是先出D,再出c,最后出A。
3、线性表的顺序存储结构和线性表的链式存储结构分别是____B____。
A)顺序存取的存储结构、随机存取的存储结构B)随机存取的存储结构、顺序存取的存储结构C)随机存取的存储结构、随机存取的存储结构D)任意存取的存储结构、任意存取的存储结构评析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)。
LOC(a1)+(i-1)L计算得到,从而实现了随机存取。
对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。
4、在单链表中,增加头结点的目的是____A__。
A)方便运算的实现B)使单链表至少有一个结点C)标识表结点中首结点的位置D)说明单链表是线性表的链式存储实现评析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。
5、数据处理的最小单位是___C_____。
A)数据B)数据元素C)数据项D)数据结构评析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。
C语言程序设计第三版谭浩强课后习题答案完整版

C语⾔程序设计第三版谭浩强课后习题答案完整版C语⾔程序设计第三版谭浩强课后习题答案完整版第⼀章1.5请参照本章例题,编写⼀个C程序,输出以下信息:**************************值,输出其中最⼤值。
解:mian(){int a,b,c,max;printf(“请输⼊三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;\1aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc AㄩN3.7 要将"China"译成密码,译码规律是:⽤原来字母后⾯的第4个字母代替原来的字母.例如,字母"A"后⾯第4个字母是"E"."E"代替"A"。
因此,"China"应译为"Glmre"。
请编⼀程序,⽤赋初值的⽅法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输{是%c%c%c%c%c\n",c1,c2,c3,c4,c5); }运⾏结果:密码是Glmre3.9求下⾯算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.5设量。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a(5) a%=(n%=2),n的值等于5(6)a+=a-=a*=a解:(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0第四章4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a ’,c2=c1=c2=printf("a=%2d b=%2dc=%2d\n",a,b,c);printf("x=%f,y=%f,z=%f\n",x,y,z); printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)"); }ˊA ˊ,;); 4.8设圆半径r=1.5,圆柱⾼h=3,求圆周长、圆⾯积、圆球表⾯积、圆球体积、圆柱体积。
c语言 第7章 数组(4)

void sort( int b[],int k) {int i,j,t,flag; for (j=0;j<k-1;j++) {flag=0; for (i=0;i<k-j-1;i++) if (b[i]>b[i+1]) { t=b[i]; b[i]=b[i+1]; b[i+1]=t; flag=1; } if (flag==0) break; } }
上一页 下一页
for(i=0;i<26;i++) if(c[i]) {if(m%8==0)putchar('\n');m++; printf("%c: %-d ",i+'A',c[i]); } printf("\n"); for(i=0;i<26;i++) if(c[i+26]) {if(m%8==0)putchar('\n');m++; printf("%c: %-d ",i+'a',c[i+26]); } }
第四讲:
第 七 章 数组
7.1 7.2 7.3 7.4 7.5 7.6 一维数组 二维数组 数组的应用 字符数组与字符串 数组作为函数的参数 程序举例
7.5 数组作为函数的参数
数组作为函数参数主要有两种情况: 数组元素作为函数的实参:这种情况与普通变量 作实参一样,是将数组元素的值传给形参。形 参的变化不会影响实参数组元素,我们称这种 参数传递方式为“值传递”。 数组名作实参:要求函数形参是相同类型的数 组或指针,这种方式是把实参数组的起始地址 传给形参数组,形参数组的改变也是对实参数 组的改变,称这种参数传递方式为“地址传 递”。
数组习题及答案

构造数据对象——数组一、填空题1.数组是一组相同的集合。
2.数组名代表数组的。
3.数组元素在数组中的位置序号称为它是从开始整数。
4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为。
5.定义数组tw,其能存储23个长整形数的语句为。
6.有说明语句int a[10]={1,2,3,4,5,6};则元素a[9]的值为。
7.数组char c[ ]=”abcd”中有个元素,最后一个元素是。
8.”a”在内存中占个存储单元。
9.定义一个能存放下字符串Vocation的字符数组enm的语句为。
10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是。
11.与puts(ss)等价的printf函数调用是。
二、选择题1.下面关于数组的说法,不正确的是()A.数组总为一个整体,可以参加算术运算B.数组中的数组元素相当于一个简单变量C.数组可以用来保存字符串D.数组是一组连续的,类型相同的数据集合2.下列说法不是数组特性的是()A.数组元素类型相同B.数组长度固定C.数组占用连续的内存空间D.数组可作为一个整体参与运算3.定义一个具有8个元素的整形数组,应使用语句()A.int a[8]; B.int a[2,4];C.int a[ ]; D.int *a[8];4. 以下能正确定义一维数组的选项是()A.int num[ ];B.#define N 100 int num[N];C.int num[0..100];D.int N=100;5.下面对s的初始化,不正确的是()A.char s[5]={“abcd”};B.char s[5]={‘a’,’b’,’c’};C.char s[5]=””;D.char s[5]=”abcd”;6.对以下说明语句正确的理解是()int a[10]={6,7,8,9,10,12};A.将6个初值依次赋值给a[1]至a[5];B.将6个初值依次赋值给a[0]至a[5];C.将6个初值依次赋值给a[5]至a[10];D.因数组长度和初值的个数不同,所以此语句不正确7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是()A.scanf(“%d”,a[2]);B.scanf(“%d”,&a[2]);C.scanf(“%d”,&a[1]);D.scanf(“%d”,a(1));三、判断题1.数组在内存中占用的空间是不连续的。
C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案习题六一.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是c 。
A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是DA)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是 D 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.以下不能对一维数组a进行正确初始化的语句是B 。
A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;C)int a[ ] = {0} ; D)int a[10]={10*1} ;5.若有定义:int a[3][4],则对数组a元素的正确引用是。
AA)a[2][3] B)a[1,3] C)a(5) D)a[10-10]6.以下能对二维数组a进行正确初始化的语句是B。
A)int a[2][]={{1,0,1},{5,2,3}} ;B)int a[][3]={{1,2,3},{4,5,6}} ;C)int a[2][4]={{1,2,3},{4,5},{6}} ;D)int a[][3]={{1,0,1},{},{1,1}} ;7.以下不能对二维数组a进行正确初始化的语句是。
CA)int a[2][3]={0} ;B)int a[][3]={{1,2},{0}} ;C)int a[2][3]={{1,2},{3,4},{5,6}} ;D)int a[][3]={1,2,3,4,5,6} ;8.若有说明:int a[3][4]={0};则下面正确的叙述是D。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值09.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。
C语言程序设计(第三版)谭浩强习题与答案 第七章

7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
∶
∶
main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
或
main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
实用数据结构基础(第四版)课后习题

一、判断题(第一章绪论)1.数据元素是数据的最小单元。
答案:错误2.一个数据结构是由一个逻辑结构和这个逻辑结构上的基本运算集构成的整体。
答案:错误3.数据的存储结构是数据元素之间的逻辑关系和逻辑结构在计算机存储器内的映像。
答案:正确4.数据的逻辑结构是描述元素之间的逻辑关系,它是依赖于计算机的。
答案:错误5.用语句频度来表示算法的时间复杂度的最大好处是可以独立于计算机的软硬件,分析算法的时间答案:正确(第二章线性表)6.取顺序存储线性表的第i个元素的时间同i的大小有关。
答案:错误7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。
答案:正确8.线性链表的每一个节点都恰好包含一个指针域。
答案:错误9.顺序存储方式的优点的存储密度大,插入和删除效率不如练市存储方式好。
答案:正确10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。
答案:错误(第三章栈)11.栈是一种对进栈和出栈作了限制的线性表。
答案:错误12.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN表示栈满。
答案:错误13.链栈与顺序栈相比,其特点之一是通常不会出现满栈的情况。
答案:正确14.空栈就是所有元素都为0上的栈。
答案:错误15.将十进制数转换为二进制数是栈的典型应用之一。
答案:正确(第四章队列)16.队列式限制在两端进行操作的线性表。
答案:正确17.判断顺序队列为空的标准是头指针和尾指针都指向同一结点。
答案:错误18.在循环链列队中无溢出现像。
答案:错误19.在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。
答案:正确20.顺序队列和循环队列关于队满和队空的判断条件是一样的。
答案:错误(第五章串)21.串是n个字母的有限序列。
答案:错误22.串的堆分配存储是一种动态存储结构。
答案:正确23.串的长度是指串中不同字符的个数。
C语言习题

第一章选择题1.一个C程序的执行是从。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数B) 一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成B) 函数组成C) 若干过程组成D) 若干子程序组成第三章选择题1.若x、i、j、k都是int型变量,则计算下面表达式后,x 的值为。
x=(i=4,j=16,k=32)A) 4 B) 16 C) 32 D) 522.下列四组选项中,均不是C语言关键字的选项是。
A) define IF typeB) getc char p rintfC) include case scanfD) while go pow3.下列四组选项中,均是不合法的用户标识符的选项是。
A) W P_0 doB) b-a goto intC) float la0 _AD) -123 abc TEMP4.下列四组选项中,均是合法转义字符的选项是。
A) ‘\”’‘\\’‘\n’B) ‘\’‘\017’‘\”’C) ‘\018’‘\f’‘xab’D) ‘\\0’‘\101’‘xlf’5.下面正确的字符常量是。
A) “c”B) ‘\\’’C) ‘’D) ‘K’6.以下叙述不正确的是。
A) 在C程序中,逗号运算符的优先级最低B) 在C程序中,MAX和max是两个不同的变量C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,二b中的值不变D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值7.以下叙述正确的是。
习题七(数组)

习题七一、选择题1.若有说明:int a[10];,则对a数组元素的正确引用是(C)。
A. a[10]B. a[3.5]C. a[0]D. a(5)2.在C语言中,引用数组元素时,其数组下标的数据类型不允许是( D )。
A. 整型常量B. 整型表达式C. 整型常量和整型表达式D. 任何类型的表达式3.以下对一维整型数组a的正确说明是( D )。
A. int a(10);B. int n=0,a[n];C. int n;D. #define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];4.以下能对一维数组a进行正确初始化的形式是( B )。
A. int a[10]=(0,0,0,0,0,);B. int a[]={0};C. int a[10]={};D. int a[10]={10*1};5.以下对二维数组a的正确说明是( C )。
A. int a[3][];B. float a(3,4);C. double a[][4];D. float a(3)(4);6.若有说明:int a[3][4];,则对a数组元素的正确引用是( C )。
A. a[3][4]B. a[1,3]C. a[1+1][0]D. a(2)(1)7.以下能正确定义一维数组的选项是( B )。
A. int a[5]={0,1,2,3,4,5};B. char a[]={1,2,3,4,5,6};C. char a={'s','d','k'};D. int a[5]="0123";8.以下能对二维数组a进行正确初始化的语句是( B )。
A. int a[2][]={{1,0,1},{5,2,3}};B. int a[][3]={{1,2,3},{4,5,6}};C. int a[2][4]={{1,2,3},{4,5},{6}};D. int a[][3]={{1,0,1,0},{},{1,1}};9.若有说明:int a[3][4]={0};,则下面正确的叙述是(A )。
C语言习题8

第一章概述1.一个C程序的执行是从()A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2.以下叙述正确的是:()A.在C程序中,main函数必须位于程序的最前面B.程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误3.以下叙述不正确的是:()A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面4.C语言规定:在一个源程序中,main的位置()A.必须在最开始B.必须在系统调用的库函数后面C.可以任意D.必须在最后5.一个C语言程序是由()A.一个主程序和若干子程序组成B.函数组成C.若干过程组成D.若干子程序组成6.C源程序的基本单位是____________7.一个C源程序中至少包括一个____________8.在一个C源程序中,注释部分两侧的分界符分别为____________和____________9.在C语言中,输入操作是由库函数____________完成的,输出操作是由库函数____________完成的参考答案1.A2.C3.D4.C5.B6.函数7.(main)函数8./**/9.scanf printf第三章基本数据类型1.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母、数字和下划线中的任意一种2.下面四个选项中,均是不合法的用户标识符的选项的是:()A.A p_o doB.float lao_AC.b-a goto intD._123temp INT3.下面四个选项中均是合法整型常量的选项是()A.160-0xffff011B.-0xcdf01a0xeC.-01986,0120668D.-0x48a2e50x4.下面四个选项中,均是合法的浮点数的选项是()A.+1e+15e-9.403e2B.-6.012e-4-8e5C.123e 1.2e-4-8e5D.-e38e-4 5.e-05.下面四个选项中,均是合法转义字符的选项是()A.'\"‘\\'‘\n'B.‘\'‘\017'‘\"'C.'\018'‘\f'‘xab'D.'\\0'‘\101'‘x1f'6.下面四个选项中,均是正确的数值常量或字符常量的选项的是()A.0.00f8.9e‘&'B."a" 3.9E-2.51e1‘\"'C.'3'0110xFF000aD.+0010xabcd2e2507.在C语言中,char型数据在内存中存储形式是()A.补码B.反码C.原码D.ASCII码8.若有说明语句:char c='\72';则变量c()A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定9.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()A.intB.floatC.doubleD.不确定10.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()A.2.500000B.2.750000C.3.500000D.0.00000011.若以下变量均是整型,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum值为()A.7B.8C.9D.1012.若有代数式3ae/bc,则不正确的C语言表达式是()A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*313.若a是int型变量,且a的初值为6,则计算表达式后a的值为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章数组7.1 选择题【题7.1】在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。
A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题7.2】以下对一维整型数组a的正确说明是 D 。
A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n); int a[SIZE];int a[n];【题7.3】若有说明:int a[10];则对a数组元素的正确引用是 D 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]【题7.4】在C语言中,一维数组的定义方式为:类型说明符数组名 A ;A)[常量表达式] B)[整型表达式]C)[整型常量] 或[整型表达式] D)[整型常量]【题7.5】以下能对一维数组a进行正确初始化的语句是 C 。
A)int a[10]=(0,0,0,0,0); B)int a[10]={};C)int a[]={0}; D)int a[10]={10*1};【题7.6】以下对二维数组a的正确说明是 C 。
A)int a[3][]; B)float a(3,4);C)double a[1][4]; D)float a(3)(4);【题7.7】若有说明:int a[3][4];则对a数组元素的正确引用是 C 。
A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)【题7.8】若有说明:int a[3][4];则对a数组元素的非法引用是 D 。
A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]【题7.9】以下能对二维数组a进行正确初始化的语句是 B 。
A)int a[2][]={{1,0,1},{5,2,3}};B)int a[][3]={{1,2,3},{4,5,6}};C)int a[2][4]={{1,2,3},{4,5},{6}};D)int a[][3]={{1,0,1},{},{1,1}};【题7.10】以下不能对二维数组a进行正确初始化的语句是 C 。
A)int a[2][3]={0};B)int a[][3]={{1,2},{0}};C)int a[2][3]={{1,2},{3,4},{5,6}};D)int a[][3]={1,2,3,4,5,6};【题7.11】若有说明:int a[3][4]={0};则下面正确的叙述是 D 。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值0【题7.12】若有说明:int a[][4]={0,0};则下面不正确的叙述是 D 。
A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 【题7.13】若有说明:int a[3][4];则数组a中各元素B。
A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0【题7.14】以下各组选项中,均能正确定义二维实型数组a的选项是 C 。
A)float a[3][4]; B)float a(3,4);float a[][4]; float a[3][4];float a[3][]={{1},{0}}; float a[][]={{0};{0}};C)float a[3][4]; D)float a[3][4];static float a[][4]={{0},{0}}; float a[3][];auto float a[][4]={{0},{0},{0}}; float a[][4];【题7.15】下面程序 A (每行程序前面的数字表示行号)。
1 main()2 {3 float a[3]={3*0};4 int i;5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“%d\n”,a[0]);8 }A)第3行有错误B)第7行有错误C)第5行有错误D)没有错误【题7.16】下面程序 C (每行程序前面的数字表示行号)。
1 main()2 {3 float a[10]={0.0};4 int i;5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);6 for(i=1;i<10;i++) a[0]=a[0]+a[i];7 printf(“%f\n”,a[0]);8 }A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误【题7.17】下面程序中有错误的行是 D (每行程序前面的数字表示行号)。
1 main()2 {3 float a[3]={1};4 int i;5 scanf(“%d”,&a);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“a[0]=%d\n”,a[0]);8 }A)3 B)6 C)7 D)5【题7.18】下面程序 D (每行程序前面的数字表示行号)。
1 main()2 {3 float a[3]={0};4 int i;5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);6 for(i=1;i<4;i++) a[0]=a[0]+a[i];7 printf(“%d\n”,a[0]);8 }A)没有错误B)第3行有错误C)第5行有错误D)第6行有错误【题7.19】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 D 。
(假设a[0][0]位于数组的第一个位置上。
)A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1【题7.20】对以下说明语句的正确理解是 B 。
int a[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确【题7.21】以下不正确的定义语句是 B 。
A)double x[5]={2.0,4.0,6.0,8.0,10.0};B)int y[5]={0,1,3,5,7,9};C)char c1[]={‘1’,‘2’,‘3’,‘4’,‘5’};D)char c2[]={‘\x10’,‘\xa’,‘\x8’};【题7.22】若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 B 。
A)2 B)3 C)4 D)无确定值【题7.23】若二维数组a有m列,则在a[i][j]前的元素个数为 B 。
A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1【题7.24】定义如下变量和数组:int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是 A 。
for(k=0;k<3;k++) printf(“%d”,a[k][2-k]);A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7【题7.25】若有以下程序段:……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;}……则该程序段的功能是 B 。
A)对数组a进行插入排序(升序)B)对数组a进行插入排序(降序)C)对数组a进行选择排序(升序)D)对数组a进行选择排序(降序)【题7.26】以下正确的定义语句是 D 。
A)int a[1][4]={1,2,3,4,5};B)float x[3][]={{1},{2},{3}};C)long b[2][3]={{1},{1,2},{1,2,3}};D)double y[][3]={0};【题7.27】下面程序的运行结果是 C 。
main(){int a[6][6],i,j;for(i=1;i<6;i++)for(j=1;j<6;j++)a[i][j]=(i/j)*(j/i);for(i=1;i<6;i++){for(j=1;j<6;j++)printf(“%2d”,a[i][j]);printf(“\n”);}}A)1 1 1 1 1 B)0 0 0 0 1 C)1 0 0 0 0 D)1 0 0 0 11 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 01 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 01 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 01 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1【题7.28】下面程序的运行结果是 C 。
main(){int a[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf(“%2d”,a[i]);}}A)-4 0 4 0 4 B)-4 0 4 0 3C)-4 0 4 4 3 D)-4 0 4 4 0【题7.29】下面是对s的初始化,其中不正确的是 D 。
A)char s[5]={“abc”};B)char s[5]={‘a’,‘b’,‘c’};C)char s[5]=“”;D)char s[5]=“abcdef”;【题7.30】下面程序段的运行结果是 B 。
char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c);A)‘a’‘b’B)ab C)ab c【题7.31】对两个数组a和b进行如下初始化char a[]=“ABCDEF”;char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’};则以下叙述正确的是 D 。
A)a与b数组完全相同B)a与b长度相同C)a和b中都存放字符串D)a数组比b数组长度长【题7.32】有两个字符数组a、b,则以下正确的输入格式是 B 。
A)gets(a,b); B)scanf(“%s %s”,a,b);C)scanf(“%s %s”,&a,&b);D)gets(“a”),get(“b”);【题7.33】有字符数组a[80]和b[80],则正确的输出形式是 D 。