华东师范大学数据结构(含C语言程序设计)考研真题试题2015年
华中师范大学874数据结构与C语言程序设计历年考研真题专业课考试试题
目 录
第1部分 华中师范大学874数据结构与C语言程序设计专业课介绍 第2部分 华中师范大学874数据结构与C语言程序设计考研真题
2015年华中师范大学874数据结构与C语言程序设计考研真题 第3据结构与程序设计考研真题 2018年四川师范大学831C语言程序设计与数据结构考研真题
第1部分 华中师范大学874数据 结构与C语言程序设计专业课介绍
(1)科目代码和专业课名称:874数据结构与C语言程序设计; (2)开考院系包括: ① 计算机学院; ② 国家数字化学习工程技术研究中心; ③ 教育信息技术协同创新中心; ④ 伍伦贡联合研究院; ⑤ 教育大数据应用技术国家工程实验室; ⑥ 人文社会科学高等研究院。
第2部分 华中师范大学874数据 结构与C语言程序设计考研真题
2015年华中师范大学874数据结构与C语言程序 设计考研真题
第3部分 其他院校考研真题
2017年江西师范大学863数据结构与程序设计 考研真题
2018年四川师范大学831C语言程序设计与 数据结构考研真题
数据结构考研华东师大数据工程基础专业硕士考研真题集
数据结构考研华东师大数据工程基础专业硕士考研真题集一、配套北京航空航天大学991数据结构与C语言程序设计考研真题二、名校考研真题之选择题解析下面关于线性表的叙述中,错误的是哪一个?()[北方交通大学考研真题] A.线性表采用顺序存储,必须占用一片连续的存储单元B.线性表采用顺序存储,便于进行插入和删除操作C.线性表采用链接存储,不必占用一片连续的存储单元D.线性表采用链接存储,便于插入和删除操作【答案】B ~~【解析】顺序存储,插入删除时会移动大量的元素,效率相对较低。
线性表的顺序存储结构是一种()。
[北京理工大学考研真题]A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构【答案】A ~~【解析】线性表包括顺序存储结构和链式存储结构,顺序存储结构能够随机存取表中的元素,但插入和删除操作较麻烦,链式存储结构不能随机访问表中的元素,但是能够表示元素之间的先后次序,而且插入和删除操作较容易。
5个字符有如下4种编码方案,不是前缀编码的是()。
[2014年联考真题]A.01,0000,0001,001,1B.011,000,001,010,1C.000,001,010,011,100D.0,100,110,1110,1100【答案】D ~~【解析】在一个字符集中,任何一个字符的编码都不是另一个字符编码的前缀。
约定左分支表示字符‘0’,右分支表示字符‘1’,则可以用从根结点到叶子结点的路径上的分支字符串作为该叶子结点字符的编码。
如此得到的编码必是前缀编码。
D项中,编码110是编码1100的前缀,故不符合前缀编码的定义。
对如下所示的有向图进行拓扑排序,得到的拓扑序列可能是()。
[2014年联考真题]A.3,1,2,4,5,6B.3,1,2,4,6,5C.3,1,4,2,5,6D.3,1,4,2,6,5【答案】D ~~【解析】拓扑排序方法如下:(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它;(2)从图中删去该顶点,并且删去从该顶点发出的全部有向边;(3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止。
2015年计算机真题及解析.
2015年全国硕士研究生入学统一考试计算机学科专业基础综合试题一、单项选择题:140小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项符合题目要求。
请在答题卡上将所选项的字母涂黑。
1.已知程序如下:int s(int n){ return (n<=0) ? 0 : s(n-1) +n; }void main(){ cout<< s(1); }程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是A.main()->S(1)->S(0) B.S(0)->S(1)->main()C.m ain()->S(0)->S(1) D.S(1)->S(0)->main()D.先序序列为a,b,c,d的不同二叉树的个数是A.13 B.14 C.15 D.163.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫曼树的是A.24,10,5和24,10,7 B.24,10,5和24,12,7C.24,10,10和24,14,11 D.24,10,5和24,14,64.现在有一颗无重复关键字的平衡二叉树(A VL树),对其进行中序遍历可得到一个降序序列。
下列关于该平衡二叉树的叙述中,正确的是A.根节点的度一定为2 B.树中最小元素一定是叶节点C.最后插入的元素一定是叶节点D.树中最大元素一定是无左子树5.设有向图G=(V,E),顶点集V={V0,V1,V2,V3},边集E={<v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是A.2 B.3 C.4 D.56.求下面带权图的最小(代价)生成树时,可能是克鲁斯卡(kruskal)算法第二次选中但不是普里姆(Prim)算法(从V4开始)第2次选中的边是A.(V1,V3) B.(V1,V4) C.(V2,V3) D.(V3,V4)7.下列选项中,不能构成折半查找中关键字比较序列的是A.500,200,450,180 B.500,450,200,180C.180,500,200,450 D.180,200,500,4508.已知字符串S为“abaabaabacacaabaabcc”. 模式串t为“abaabc”, 采用KMP算法进行匹配,第一次出现“失配”(s[i] != t[i]) 时,i=j=5,则下次开始匹配时,i和j的值分别是A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=29.下列排序算法中元素的移动次数和关键字的初始排列次序无关的是A.直接插入排序B.起泡排序C.基数排序D.快速排序10.已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,在此过程中,关键字之间的比较数是A.1 B.2 C.3 D.411.希尔排序的组内排序采用的是()A.直接插入排序B.折半插入排序 C.快速排序D.归并排序12.计算机硬件能够直接执行的是()Ⅰ.机器语言程序Ⅱ.汇编语言程序Ⅲ.硬件描述语言程序A.仅ⅠB.仅ⅠⅡC.仅ⅠⅢD.ⅠⅡⅢ13.由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()A.-126 B.-125 C.-32 D.-314.下列有关浮点数加减运算的叙述中,正确的是()Ⅰ. 对阶操作不会引起阶码上溢或下溢Ⅱ. 右规和尾数舍入都可能引起阶码上溢Ⅲ. 左规时可能引起阶码下溢Ⅳ. 尾数溢出时结果不一定溢出A.仅ⅡⅢB.仅ⅠⅡⅣC.仅ⅠⅢⅣD.ⅠⅡⅢⅣ15.假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用回写(Write Back)方式,则能存放4K字数据的Cache 的总容量的位数至少是()A.146k B.147K C.148K D.158K16.假定编译器将赋值语句“x=x+3;”转换为指令”add xaddt, 3”,其中xaddt是x 对应的存储单元地址,若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的TLB,且Cache使用直写(Write Through)方式,则完成该指令功能需要访问主存的次数至少是()A.0 B.1 C.2 D.317.下列存储器中,在工作期间需要周期性刷新的是()A.SRAM B.SDRAM C.ROM D.FLASH18.某计算机使用4体交叉存储器,假定在存储器总线上出现的主存地址(十进制)序列为8005,8006,8007,8008,8001,8002,8003,8004,8000,则可能发生发生缓存冲突的地址对是()A.8004、8008 B.8002、8007 C.8001、8008 D.8000、800419.下列有关总线定时的叙述中,错误的是()A.异步通信方式中,全互锁协议最慢B.异步通信方式中,非互锁协议的可靠性最差C.同步通信方式中,同步时钟信号可由多设备提供D.半同步通信方式中,握手信号的采样由同步时钟控制20.若磁盘转速为7200转/分,平均寻道时间为8ms,每个磁道包含1000个扇区,则访问一个扇区的平均存取时间大约是( )A.8.1ms B.12.2ms C.16.3ms D.20.5ms21.在采用中断I/O方式控制打印输出的情况下,CPU和打印控制接口中的I/O端口之间交换的信息不可能是( )A.打印字符B.主存地址C.设备状态D.控制命令22.内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。
计算机考研数据结构统考历年真题答案2009-2015
目前刚整理了2009-2015的试题过几天2016的也会上传上去希望对你有帮助。
答案与试题是配套的选择题没有解析有不懂得可以在文库上@我2009 1-5:BCDBC 6-10:BADBA41.该方法求得的路径不一定是最短路径。
例如,对于下图所示的带权图,如果按照题中的原则,从A到C的最短路径为A→B→C,事实上其最短路径为 A→D→C。
42.(1)算法的基本设计思想:定义两个指针变量p和q,初始时均指向头结点的下一个结点。
P指针沿链表移动;当p指针移动到第k个结点时,q指针开始与p指针同步移动;当p指针移动到链表最后一个结点时,q指针所指元素为倒数第k个结点。
以上过程对链表仅进行一遍扫描。
(2)算法的详细实现步骤:①count=0,p和q指向链表表头结点的下一个结点;②若p为空,转⑤;③若count等于k,则q指向下一个结点;否则,count=count+1;④p指向下一个结点,转步骤②;⑤若count等于k,则查找成功,输出该结点的data域的值,返回1;返回;查找失败,返回0;⑥算法结束。
(3)算法实现:typedef struct LNode{int data;struct LNode * link;} * LinkList;int SearchN(LinkList list,int k){LinkList p,q;int count=0; /*计数器赋初值*/p=q=list->link; /*p和q指向链表表头结点的下一个结点*/while(p!=NULL){if(count<k) count++; /*计数器+1*/else q=q->link;/*q移到下一个结点*/p=p->link; /*p移到下一个结点*/}if(count<k)return(0);/*如果链表的长度小于k,查找失败*/else { printf("%d",q->data); /*查找成功*/return (1);}//else}//SearchN2010 1-5:DCDCB 6-11:ACBBDA查找不成功的平均查找长度:ASL不成功=18/7。
2015考研计算机数据结构试题及答案
2015年考研必备资料2015年考研计算机数据结构试题及答案目录2015年考研计算机数据结构试题及答案(1) (2)2015年考研计算机数据结构试题(1) (2)2015年考研计算机数据结构试题答案(1) (5)2015年考研计算机数据结构试题及答案(2) (6)2015年考研计算机数据结构试题(2) (6)2015年考研计算机数据结构试题答案(2) (9)2015年考研计算机数据结构试题及答案(3) (11)2015年考研计算机数据结构试题(3) (11)2015年考研计算机数据结构试题答案(3) (13)2015年考研计算机数据结构试题及答案(4) (15)2015年考研计算机数据结构试题(4) (15)2015年考研计算机数据结构试题答案(4) (17)2015年考研计算机数据结构试题及答案(5) (19)2015年考研计算机数据结构试题(5) (19)2015年考研计算机数据结构试题答案(5) (21)2015年考研计算机数据结构试题及答案(1)2015年考研计算机数据结构试题(1)一、选择题(24分)1.下列程序段的时间复杂度为( )。
i=0,s=0; while (s(A) O(n1/2) (B) O(n1/3) (C) O(n) (D) O(n2)2.设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。
(A) 单向链表 (B) 单向循环链表(C) 双向链表 (D) 双向循环链表3.设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为( )。
(A) s->next=p->next;p->next=-s; (B) q->next=s; s->next=p;(C) p->next=s->next;s->next=p; (D) p->next=s;s->next=q;4.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( )。
(NEW)华东师范大学《839数据结构(含C语言程序设计)》[专业硕士]历年考研真题汇编
2007年华东师范大学439数据结构(含C语言程序设计)[专业硕士]历年 考研真题
2006年华东师范大学439数据结构(含C语言程序设计)[专业硕士]历年 考研真题
2005年华东师范大学数据结构(含C语言程序设计)[专业硕士]历年考 研真题
2004年华东师范大学数据结构(含C语言程序设计)[专业硕士]历年考 研真题
2003年华东师范大学数据结构(含C语言程序设计)[专业硕士]历年结构(含C语 言程序设计)[专业硕士]历年考研真题
2006年华东师范大学439数据结构(含C语 言程序设计)[专业硕士]历年考研真题
2005年华东师范大学数据结构(含C语言 程序设计)[专业硕士]历年考研真题
2004年华东师范大学数据结构(含C语言 程序设计)[专业硕士]历年考研真题
2003年华东师范大学数据结构(含C语言 程序设计)[专业硕士]历年考研真题
2015年数据结构期末考试题及答案,推荐文档(2021年整理)
2015年数据结构期末考试题及答案,推荐文档(word版可编辑修改) 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(2015年数据结构期末考试题及答案,推荐文档(word版可编辑修改))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为2015年数据结构期末考试题及答案,推荐文档(word版可编辑修改)的全部内容。
2012年数据结构期末考试题及答案一、选择题1.在数据结构中,从逻辑上可以把数据结构分为 C 。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构2.数据结构在计算机内存中的表示是指 A 。
A.数据的存储结构B.数据结构C.数据的逻辑结构 D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。
A.逻辑B.存储C.逻辑和存储D.物理4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C .A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A 。
A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便.6.以下说法正确的是 D 。
A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A .(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进 C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是O(n2) 。
全国硕士研究生入学统一考试计算机专业基础综合真题及答案解析
2015年全国硕士研究生入学统一考试计算机学科专业基础综合试题一、单项选择题:140小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项符合题目要求。
请在答题卡上将所选项的字母涂黑。
1.已知程序如下:int s(int n){ return (n<=0) ? 0 : s(n-1) +n; }void main(){ cout<< s(1); }程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是A.main()->S(1)->S(0) B.S(0)->S(1)->main()C.m ain()->S(0)->S(1) D.S(1)->S(0)->main()2.先序序列为a,b,c,d的不同二叉树的个数是A.13 B.14 C.15 D.163.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫曼树的是A.24,10,5和24,10,7 B.24,10,5和24,12,7C.24,10,10和24,14,11 D.24,10,5和24,14,64.现在有一颗无重复关键字的平衡二叉树(A VL树),对其进行中序遍历可得到一个降序序列。
下列关于该平衡二叉树的叙述中,正确的是A.根节点的度一定为2 B.树中最小元素一定是叶节点C.最后插入的元素一定是叶节点D.树中最大元素一定是无左子树5.设有向图G=(V,E),顶点集V={V0,V1,V2,V3},边集E={<v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是A.2 B.3 C.4 D.56.求下面带权图的最小(代价)生成树时,可能是克鲁斯卡(kruskal)算法第二次选中但不是普里姆(Prim)算法(从V4开始)第2次选中的边是A.(V1,V3) B.(V1,V4) C.(V2,V3) D.(V3,V4)7.下列选项中,不能构成折半查找中关键字比较序列的是A.500,200,450,180 B.500,450,200,180C.180,500,200,450 D.180,200,500,4508.已知字符串S为“abaabaabacacaabaabcc”. 模式串t为“abaabc”, 采用KMP算法进行匹配,第一次出现“失配”(s[i] != t[i]) 时,i=j=5,则下次开始匹配时,i和j的值分别是A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=29.下列排序算法中元素的移动次数和关键字的初始排列次序无关的是A.直接插入排序B.起泡排序C.基数排序D.快速排序10.已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,在此过程中,关键字之间的比较数是A.1 B.2 C.3 D.411.希尔排序的组内排序采用的是()A.直接插入排序B.折半插入排序 C.快速排序D.归并排序12.计算机硬件能够直接执行的是()Ⅰ.机器语言程序Ⅱ.汇编语言程序Ⅲ.硬件描述语言程序A.仅ⅠB.仅ⅠⅡC.仅ⅠⅢD.ⅠⅡⅢ13.由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()A.-126 B.-125 C.-32 D.-314.下列有关浮点数加减运算的叙述中,正确的是()Ⅰ. 对阶操作不会引起阶码上溢或下溢Ⅱ. 右规和尾数舍入都可能引起阶码上溢Ⅲ. 左规时可能引起阶码下溢Ⅳ. 尾数溢出时结果不一定溢出A.仅ⅡⅢB.仅ⅠⅡⅣC.仅ⅠⅢⅣD.ⅠⅡⅢⅣ15.假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用回写(Write Back)方式,则能存放4K字数据的Cache 的总容量的位数至少是()A.146k B.147K C.148K D.158K16.假定编译器将赋值语句“x=x+3;”转换为指令”add xaddt, 3”,其中xaddt是x 对应的存储单元地址,若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的TLB,且Cache使用直写(Write Through)方式,则完成该指令功能需要访问主存的次数至少是()A.0 B.1 C.2 D.317.下列存储器中,在工作期间需要周期性刷新的是()A.SRAM B.SDRAM C.ROM D.FLASH18.某计算机使用4体交叉存储器,假定在存储器总线上出现的主存地址(十进制)序列为8005,8006,8007,8008,8001,8002,8003,8004,8000,则可能发生发生缓存冲突的地址对是()A.8004、8008 B.8002、8007 C.8001、8008 D.8000、800419.下列有关总线定时的叙述中,错误的是()A.异步通信方式中,全互锁协议最慢B.异步通信方式中,非互锁协议的可靠性最差C.同步通信方式中,同步时钟信号可由多设备提供D.半同步通信方式中,握手信号的采样由同步时钟控制20.若磁盘转速为7200转/分,平均寻道时间为8ms,每个磁道包含1000个扇区,则访问一个扇区的平均存取时间大约是( )A.B.C.D.21.在采用中断I/O方式控制打印输出的情况下,CPU和打印控制接口中的I/O端口之间交换的信息不可能是( )A.打印字符B.主存地址C.设备状态D.控制命令22.内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。
2015考研真题数据结构
2015考研真题数据结构数据结构是计算机科学中非常重要的一门学科,考研中也是一个重点考察的内容。
在2015年的考研真题中,数据结构也是一个热门出题领域。
本文将对2015年考研真题中的数据结构部分进行详细解析和讨论。
一、选择题2015年考研真题数据结构部分的选择题主要集中在树、图和排序算法等内容上。
其中,树的遍历、图的表示和遍历算法、排序算法的性能分析等是考点。
首先是树的遍历问题。
在2015年的考研真题中,给出了一棵二叉树的前序和中序遍历序列,要求根据这两个序列重建原来的二叉树。
这是一个常见的树问题,可以通过递归的方式进行求解。
另外,图的表示和遍历算法也是一个重要考点。
在2015年的考研真题中,给出了一个图的邻接矩阵表示和一个起点,要求输出从起点出发的深度优先遍历和广度优先遍历序列。
这是一个典型的图遍历问题,可以使用深度优先搜索和广度优先搜索算法进行求解。
在排序算法方面,2015年考研真题主要涉及快速排序和归并排序两种算法。
要求对给定的序列进行排序,并分析所给序列的最好、最坏和平均时间复杂度。
快速排序和归并排序是两种常见的高效排序算法,对于考研而言,了解它们的性能分析是很重要的。
二、编程题2015年考研真题的数据结构部分也包含了一道编程题,主要考察的是链表的操作。
在这道编程题中,给出了链表的头结点和一个整数K,要求将链表中第K个节点移动到链表的末尾,并输出新链表的头结点。
这是一个典型的链表操作问题。
可以通过遍历链表找到第K个节点,并进行相应的操作实现题目要求。
三、解题思路对于2015年考研真题中的数据结构部分,我们可以总结出一些解题的思路和方法。
首先,对于树的遍历问题,可以通过递归的方式来求解。
利用前序遍历和中序遍历的性质,可以重建原来的二叉树。
在递归的过程中,可以不断地将前序和中序遍历序列缩小范围,直至找到根节点。
其次,对于图的表示和遍历算法,可以使用深度优先搜索和广度优先搜索算法进行求解。
使用邻接矩阵来表示图,然后利用递归或队列等数据结构进行遍历,可以得到图的深度优先遍历和广度优先遍历序列。
2015C语言程序设计省考试题及其参考答案
A)0.4 B)1 C)2.0 D)0
14.若有代数式 ,则不正确的C语言表达式是____________。
A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3
A)4 B)8 C)16 D)32
40.已知:FILE *fP;,则以下选项中以只读方式打开一个已经存在的文件”result.txt”的语句是_____________。
A)fp=fopen(“result.txt”,”a”); B)fp=fopen(“result.txt”,”w”);
C)fp=fopen(“result.txt”,”r”); D)fp=fopen(“result.txt”,”r+”);
A)student.age B)(*p).age C)p->age D)p.age
38.已知:
union
{
char c[2];
float f;
}a;则sizeof(a)的值是______________。
A)2 B)4 C)5 D)6
39.表达式”64>>2”的值”等于_______________。
#include<stdio.h>
main()
{
char c;
29.以下正确的说法是______________。
A)实参与其对应的形参各占用独立的存储单元
B)实参与其对应的形参共占用一个存储单元
C)只有当实参和其对应的形参同名时才共占用存储单元
D)形参是虚拟的,不占用存储单元
30.C语言中函数返回值的类型是由____________决定。
华东师范大学计算机机试真题
2009机试 (2)计算和的数位 (2)大写改小写 (3)素数对 (4)求最大公约数和最小公倍数 (6)排序后求位置处的数 (7)*路由器连接 (8)*编译原理 (10)*分开连接 (13)2010机试 (17)ECNU的含义 (17)空瓶换啤酒 (18)统计字符 (20)2010机试热身 (21)粽子买三送一,买五送二 (21)工程流水线问题 (22)2011机试 (24)hello world (24)Special judge (26)查询成绩 (28)2011机试热身 (30)贪吃蛇 (30)仰望星空 (34)*编辑距离 (36)2012机试 (38)字母排序 (38)幸运数 (39)十六进制的加法 (42)电话号码簿合并排序 (42)*五子棋 (43)*正则表达式匹配 (45)2013机试 (46)斐波那契数列的素数个数 (46)*将a字符变成b字符最少修改次数 (47)2013机试热身 (49)去重排序 (49)蛇形图案 (51)数学手稿 (54)2009机试计算和的数位Sum of digitDescriptionWrite a program which computes the digit number of sum of two integers a and b.InputThe first line of input gives the number of cases, N(1 ≤N ≤100). N test cases follow.Each test case consists of two integers a and b which are separeted by a space in a line. (0<=a,b<=100000000).OutputFor each test case, print the number of digits of a + b.Sample Input35 71 991000 999Sample Output234#include<stdio.h>int main(){int n;int a,b;int sum;while(scanf("%d",&n)!=EOF){while(n--){int an=0;scanf("%d%d",&a,&b);sum=a+b;while(sum){an++;sum/=10;}printf("%d\n",an++);}}return 0;}大写改小写CapitalizeDescriptionWrite a program which replace all the lower-case letters of a given text with the corresponding captital letters.InputA text including lower-case letters, periods, and space.OutputOutput The converted text.Sample Inputwelcome to east china normal university.Sample OutputWELCOME TO EAST CHINA NORMAL UNIVERSITY.#include<stdio.h>#include<string.h>char str[1000];int main(){int l;while(gets(str)){l=strlen(str);int i;for(i=0;i<l;i++){if(str[i]>='a'&&str[i]<='z')printf("%c",str[i]-32);elseprintf("%c",str[i]);}printf("\n");}return 0;}素数对Primes PairDescriptionWe arrange the numbers between 1 and N (1 <= N <= 10000) in increasing order and decreasing order like this:1 2 3 4 5 6 7 8 9 . . . NN . . . 9 8 7 6 5 4 3 2 1Two numbers faced each other form a pair. Your task is to compute the number of pairs P such that both numbers in the pairs are prime.InputThe first line of input gives the number of cases, C (1 ≤C ≤100). C test cases follow.Each test case consists of an integer N in one line.OutputFor each test case, output P .Sample Input414751Sample Output226#include<stdio.h>#include<string.h>bool prime[10005];void init(){int i;int j;prime[0]=prime[1]=false;//不是素数prime[2]=true;//是素数for(i=3;i<=10005;i+=2){prime[i]=true;//是素数prime[i+1]=false;//不是素数除0和2之外的偶数都不是素数}for(i=3;i<=10005;i+=2){if(prime[i]==true)//是素数{j=i+i;while(j<=10005){prime[j]=false;//不是素数j+=i;}}}}int main(){int c;int n;init();//初始化while(scanf("%d",&c)!=EOF){while(c--){scanf("%d",&n);int sum=0;int i;for(i=2;i<=n/2;i++){if(prime[i]==true&&prime[n+1-i]==true)sum++;}sum*=2;if(n%2==1)//n为奇数{if(prime[n/2+1]==true)sum+=1;printf("%d\n",sum);}}return 0;}求最大公约数和最小公倍数GCD and LCMDescriptionWrite a program which computes the greatest common divisor (GCD) and the least common multiple (LCM) of given a and b (0 < a, b ≤44000).InputThe first line of input gives the number of cases, N(1 ≤N ≤100). N test cases follow.Each test case contains two interger a and b separated by a single space in a line.OutputFor each test case, print GCD and LCM separated by a single space in a line.Sample Input28 65000 3000Sample Output2 241000 15000#include<stdio.h>int getgcd(int a,int b){int gcd;int t1,t2;t1=a;t2=b;gcd=t1%t2;while(gcd!=0){t1=t2;t2=gcd;gcd=t1%t2;return t2;}int main(){int n;int a,b;while(scanf("%d",&n)!=EOF){while(n--){scanf("%d%d",&a,&b);printf("%d %d\n",getgcd(a,b),a*b/(getgcd(a,b)));}}return 0;}排序后求位置处的数Sort it…DescriptionThere is a database,partychen want you to sort the database’s data in the order from the least up to the greatest element,then do the query: "Which element is i-th by its value?"- with i being a natural number in a range from 1 to N.It should be able to process quickly queries like this.InputThe standard input of the problem consists of two parts. At first, a database is written, and then there's a sequence of queries. The format of database is very simple: in the first line there's a number N (1<=N<=100000), in the next N lines there are numbers of the database one in each line in an arbitrary order. A sequence of queries is written simply as well: in the first line of the sequence a number of queries K (1 <= K <= 100) is written, and in the next K lines there are queries one in each line. The query "Which element is i-th by its value?" is coded by the number i.OutputThe output should consist of K lines. In each line there should be an answer to the corresponding query. The answer to the query "i" is an element from the database, which is i-th by its value (in the order from the least up to the greatest element).Sample Input512112371213325Sample Output1217123#include<stdio.h>#include<algorithm>using namespace std;int num[100010];int pos[105];int main(){int n;int i;int k;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++)scanf("%d",&num[i]);scanf("%d",&k);for(i=1;i<=k;i++)scanf("%d",&pos[i]);sort(num+1,num+1+n);for(i=1;i<=k;i++)printf("%d\n",num[pos[i]]);}return 0;}*路由器连接Hub Connection planDescriptionPartychen is working as system administrator and is planning to establish a new network in his company. There will be N hubs in the company, they can be connected to each other using cables.Since each worker of the company must have access to the whole network, each hub must be accessible by cables from any other hub (with possibly some intermediate hubs).Since cables of different types are available and shorter ones are cheaper, it is necessary to make such a plan of hub connection, that the cost is minimal. partychen will provide you all necessary information about possible hub connections. You are to help partychen to find the way to connect hubs so that all above conditions are satisfied.InputThe first line of the input contains two integer numbers: N - the number of hubs in the network (2 <= N <= 1000) and M - the number of possible hub connections (1 <= M <= 15000). All hubs are numbered from 1 to N. The following M lines contain information about possible connections - the numbers of two hubs, which can be connected and the cable cost required to connect them. cost is a positive integer number that does not exceed 106. There will always be at least one way to connect all hubs.OutputOutput the minimize cost of your hub connection plan.Sample Input4 61 2 11 3 11 4 22 3 13 4 12 4 1Sample Output3#include<stdio.h>#include<algorithm>using namespace std;struct Edge{int a,b;int cost;}E[15010];int Tree[1010];int findRoot(int x){if(Tree[x]==-1)return x;else{int tmp=findRoot(Tree[x]);Tree[x]=tmp;return tmp;}}bool Cmp(Edge a,Edge b){return a.cost<b.cost;}int main(){int n;int m;int i;while(scanf("%d",&n)!=EOF){scanf("%d",&m);for(i=1;i<=m;i++)scanf("%d%d%d",&E[i].a,&E[i].b,&E[i].cost); sort(E+1,E+1+m,Cmp);//排序for(i=1;i<=n;i++)Tree[i]=-1;int ans=0;for(i=1;i<=m;i++){int a=findRoot(E[i].a);int b=findRoot(E[i].b);if(a!=b){Tree[a]=b;ans+=E[i].cost;}}printf("%d\n",ans);}return 0;}*编译原理Principles of CompilerDescriptionAfter learnt the Principles of Compiler,partychen thought that he can solve a simple expression problem.So he give you strings of less than 100 characters which strictly adhere to the following grammar (given in EBNF):A:= '(' B')'|'x'.B:=AC.C:={'+'A}.Can you solve them too?InputThe first line of input gives the number of cases, N(1 ≤N ≤100). N test cases follow.The next N lines will each contain a string as described above.OutputFor each test case,if the expression is adapt to the EBNF above output “Good”,else output “Bad”.Sample Input3(x)(x+(x+x))()(x)Sample OutputGoodGoodBad#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <cmath>#include <iostream>#include <algorithm>#include <functional>#include <string>#include <map>#include <cctype>using namespace std;char ex[110];int index;bool A();bool B();bool C();bool A(){if(ex[index]=='x'){index++;while(ex[index]==' ') index++;return true;}if(ex[index]=='('){index++;while(ex[index]==' ') index++;if(B()&&ex[index]==')'){index++;while(ex[index]==' ') index++;return true;}}return false;}bool B(){return A()&&C();}bool C(){while(ex[index]=='+'){index++;while(ex[index]==' ') index++;//return A();if (!A())return false;}return true;}int main(){int N;scanf("%d",&N);getchar();while(N--){gets(ex);index=0;printf("%s\n",A()&&ex[index]=='\0'?"Good":"Bad");}return 0;}*分开连接Separate ConnectionsDescriptionPartychen are analyzing a communications network with at most 18 nodes. Character in a matrix i,j (i,j both 0-based,as matrix[i][j]) denotes whether nodes i and j can communicate ('Y' for yes, 'N' for no). Assuming a node cannot communicate with two nodes at once, return the maximum number of nodes that can communicate simultaneously. If node i is communicating with node j then node j is communicating with node i.InputThe first line of input gives the number of cases, N(1 ≤N ≤100). N test cases follow.In each test case,the first line is the number of nodes M(1 ≤M ≤18),then there are a grid by M*M describled the matrix.OutputFor each test case , output the maximum number of nodes that can communicate simultaneouslySample Input25NYYYYYNNNNYNNNNYNNNNYNNNN5NYYYYYNNNNYNNNYYNNNYYNYYNSample Output2HintThe first test case:All communications must occur with node 0. Since node 0 can only communicate with 1 node at a time, the output value is 2.The second test case:In this setup, we can let node 0 communicate with node 1, and node 3 communicate with node 4.#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <cmath>#include <iostream>#include <algorithm>#include <functional>#include <string>#include <map>#include <queue>using namespace std;#define MAXN 250#define MAXE MAXN*MAXN*2#define SET(a,b) memset(a,b,sizeof(a))deque<int> Q;bool g[MAXN][MAXN],inque[MAXN],inblossom[MAXN];int match[MAXN],pre[MAXN],base[MAXN];int findancestor(int u,int v){bool inpath[MAXN]= {false};while(1){u=base[u];inpath[u]=true;if(match[u]==-1)break;u=pre[match[u]];}while(1){v=base[v];if(inpath[v])return v;v=pre[match[v]];}void reset(int u,int anc){while(u!=anc){int v=match[u];inblossom[base[u]]=1;inblossom[base[v]]=1;v=pre[v];if(base[v]!=anc)pre[v]=match[u];u=v;}}void contract(int u,int v,int n){int anc=findancestor(u,v);SET(inblossom,0);reset(u,anc);reset(v,anc);if(base[u]!=anc)pre[u]=v;if(base[v]!=anc)pre[v]=u;for(int i=1; i<=n; i++)if(inblossom[base[i]]){base[i]=anc;if(!inque[i]){Q.push_back(i);inque[i]=1;}}}bool dfs(int S,int n){for(int i=0; i<=n; i++)pre[i]=-1,inque[i]=0,base[i]=i;Q.clear();Q.push_back(S);inque[S]=1;while(!Q.empty()){int u=Q.front();Q.pop_front();for(int v=1; v<=n; v++){if(g[u][v]&&base[v]!=base[u]&&match[u]!=v){if(v==S||(match[v]!=-1&&pre[match[v]]!=-1))contract(u,v,n);else if(pre[v]==-1){pre[v]=u;if(match[v]!=-1)Q.push_back(match[v]),inque[match[v]]=1;else{u=v;while(u!=-1){v=pre[u];int w=match[v];match[u]=v;match[v]=u;u=w;}return true;}}}}}return false;}int solve(int n){SET(match,-1);int ans=0;for(int i=1; i<=n; i++)if(match[i]==-1&&dfs(i,n))ans++;return ans;}int main(){int ans;int n,m;char tmp[30];scanf("%d",&n);while(n--){ans=0;memset(g,0,sizeof(g));scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%s",tmp+1);for(int j=1;j<=m;j++){if(tmp[j]=='Y'){g[i][j]=g[j][i]=1;}}}ans=solve(m);printf("%d\n",ans*2);}return 0;}2010机试ECNU的含义Welcome to 2009 ACM selective trialDescriptionWelcome to 2009 ACM selective trial. ACM is a long way to go, and it's not just a match. So what you need to do for now is do your best! And as members of ACM lab, we are going to teach you something important. Firstly you should be proud that you are a member of ECNU, because 'E' represents "Excellent", 'C' represents "Cheer", 'N' represents "Nice", 'U' represents "Ultimate". Second you should remember Impossible is nothing, because "Impossible" represents "I'm possible". Third for today you should keep ACM, because for you ACM represents "Accept More". Do you remember them clearly?Now we will give you a string either "E" ,"C", "N","U","Impossible" or"ACM", you need to tell me what does it means?InputThe first line of input gives the number of cases, N(1 ≤N ≤10). N test cases follow.Each test consists of a string which will be one of "E" ,"C", "N","U","Impossible" or"ACM".OutputTell me what does it means.Sample Input3EImpossibleACMSample OutputExcellentI'm possibleAccept More#include<stdio.h>#include<string.h>char str[20];int main(){int N;scanf("%d",&N);while(N--){scanf("%s",str);if(strcmp(str,"E")==0)printf("Excellent\n");else if(strcmp(str,"C")==0)printf("Cheer\n");else if(strcmp(str,"N")==0)printf("Nice\n");else if(strcmp(str,"U")==0)printf("Ultimate\n");else if(strcmp(str,"Impossible")==0) printf("I'm possible\n");else if(strcmp(str,"ACM")==0) printf("Accept More\n");}return 0;}空瓶换啤酒Soda SurplerDescriptionTim is an absolutely obsessive soda drinker,he simply cannot get enough. Most annoyingly though, he almost never has any money, so his only obvious legal way to obtain more soda is to take the money he gets when he recycles empty soda bottles to buy new ones. In addition to the empty bottles resulting from his own consumption he sometimes find empty bottles in the street. One day he was extra thirsty, so he actually drank sodas until he couldn't aford a new one.InputThree non-negative integers e,f, c, where e < 1000 equals the number of empty sodabottles in Tim's possession at the start of the day, f < 1000 the number of empty sodabottles found during the day, and 1 < c < 2000 the number of empty bottles required tobuy a new soda.OutputHow many sodas did Tim drink on his extra thirsty day?Sample Input9 0 35 5 2Sample Output49#include<stdio.h>#include<string.h>int main(){int e,f,c;int t;int sum;int full,empty;while(scanf("%d%d%d",&e,&f,&c)!=EOF){sum=0;empty=e+f;//空瓶数量while(empty>=c)//空瓶数量可换{sum+=empty/c;//换的满瓶empty=empty/c+empty%c;//新的空瓶数量}printf("%d\n",sum);}return 0;}统计字符统计字符Description输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。
C语言2015版习题答案完整版
C语言习题答案习题1(参考答案)1.程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。
算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。
通俗地讲,就是计算机解题的步骤。
算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。
2.简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。
一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。
3.简述高级程序设计语言中面向过程与面向对象的概念。
“面向过程”是一种以过程为中心的编程思想。
首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。
一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
“面向对象”是一种以事物为中心的编程思想。
面向对象的方法主要是将事物对象化,对象包括属性与行为。
面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。
编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。
4.C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。
(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。
(3)数据类型丰富。
C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。
计算机考研专业课-数据结构部分-真题-2009-2015
别是
。
A.0,0
B.0,n-1
C.n-1,0
D.n-1,n-1
4.若一棵完全二叉树有 768 个结点,则该二叉树中叶结点的个数是
A.257
B.258
C.384
D.385
5.若一棵二叉树的前序遍历序列和后序遍历序列分别为 1,2,3,4 和 4,3,2,1,则该二叉树的
中序遍历序列不会是
。
A.1,2,3,4 B.2,3,4,1 C.3,2,4,1 D.4,3,2,1
9.已知关键字序列 5,8,12,19,28,20,15,22 是小根堆(最小堆),插入关键字 3,调整后得
到的小根堆是
。
A.3,5,12,8,28,20,15,22,19
二、综合应用题:第 41~47 题,共 70 分。
41.(10 分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶 点到目标顶点之间的一条最短路径。假设从初始顶点到目标顶点之间存在路径,现有一种解决该问题的 方法:
B.d b a c e
C.d b c a e
D.e c b a d
3.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是
。
A.
B.
C.
D.
4.在图 B-1 所示的平衡二叉树中,插入关键字 48 后得到一棵新平衡二 叉树。在新平衡二叉树中,关键字 37 所在结点的左、右子结点中保存的关键
字分别是
栈操作,则不可能得到的出栈序列是 .
A.d c e b f a
。
B.c b d a e f
D.a f e d c
C.b c a e f d
b
2.某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素 a、b、c、d、e 依次
华东师范大学C语言程序设计期末考试
华东师范大学C语言程序设计期末考试2008年~2009第二学期试卷(A卷)评分标准(本试卷答卷时间为 90分钟)特别注意:1。
考试结束后不要关机;2。
c:\ecnu_ks\root\TEST文件夹十分重要,考生不得对其作任何操作。
3。
操作题结果必须保存在 c:\ecnu_ks\root\下,否则没有分数。
一、选择题(2×10=20分)1 2 3 4 5 6 7 8 9 10c d a c b c a d c c二、填空题(2×5=10分)1。
对n个人分班,每班k(k〉0)个人,最后不足k个人也编一班,问要编几个班number= 【1】。
(请用条件运算符?:完成)答案: n%k?n/k+1:n/k2.执行下列程序后,sum的值是:【2】。
答案:【9】for(i = 1 ; i 〈 10 ; i++){sum=0;sum=sum+i;}3。
如果函数不要求带回值,可用【3】来定义函数返回值为空。
答案: 【void】4。
设有变量定义如下:char s[]=”Hello!",*p=s; int i;执行完 for(i=0;*(p+i); i++);后,*(p+i)的值是__ 【4】____。
答案:’\0’ 05.设有:int x[]={11,12,13,14},q,*p=&x[1];则执行语句:q=(*——p)++ ; 后;变量q的值为【6】。
答案:116。
设有变量定义为:struct node{int x;int y;} array []={{5,8},{1,3}};struct node *p= array;则array [1].x *(p+1)—>y的值为【6】。
答案:37.若要用fopen函数打开一个新的二进制文件,该文件要只能写,则文件打开方式字符串是" 【7】 "。
答案:wb三、程序填空题(本大题 3 道小题 ,每空 2 分,共 20 分)。