[计算机类试卷]2016年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析.doc
《[计算机类试卷]2016年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2016年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、2016年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。【说明】设有整数数组 A1: N(N1),其元素有正有负。下面的流程图在该数组中寻找连续排列的若干个元素,使其和达到最大值,并输出其起始下标 K、元素个数 L以及最大的和值 M。例如,若数组元素依次为 3,一 6, 2, 4,一 2, 3,一1,则输出 k=3, L=4, M=7。该流程图中考察了 A1: N中所有从下标 i到下标j(ji)的各元素之和 S,并动态地记录其最大值 M。【流程图】注:循环开始框内应给出循环控制变量的初值和终值,默
2、认递增值为 1,格式为:循环控制变量 =初值,终值 1 阅读以下代码,回答问题 1至问题 3,将解答填入答题纸的对应栏内。 【代码 1】 #include Void swap(int x, int y) int tmp=x; x=y; y=tmp; int main() int a=3, b=7; printf(“a1= d b1= d n”, a, b); swap(a, b); printf(“a2= d b2= d n”, a, b); return 0; 【代码 2】 #include #define SPACE 空格字符 int main() char str128=“Nothing
3、 is impossible! ”; int i, num=0, wordMark=0; for(i=0; stri; i+) if(stri: =SPACE) wordMark=0; else if(wordMark=0) wordMark=1; num+; printf(“ d n”, num); return 0; 【代码 3】 #include #define SPACE 空格字符 int countStrs(char*); int main() char str128=“Nothing is impossible! ”; printf(“ d n”, (1)(str); return
4、 0; int countStrs(char*p) int num=0, wordMark=0; for(;(2); p+) if( (3) =SPACE) wordMark=0; else if(!wordMark)( WordMark=1; +num return (4); 2 写出代码 1运行后的输出结果。 3 写出代码 2运行后的输出结果。 4 代码 3的功能与代码 2完全相同,请补充代码 3中的空缺,将解答写入答题纸的对应栏内。 5 阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序利用快速排序中划分的思想在整数序列中找出第 k小的元素 (即 将
5、元素从小到大排序后,取第 k个元素 )。 对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序的序列划分为不大于基准值者 (称为左子序列 )和大于基准值者 (称为右子序列 );然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。 例如,整数序列 “19, 12, 30, 11, 7, 53, 78, 25”的第 3小元素为 12。整数序列“19, 12, 7, 30, 11, 11, 7, 53, 78, 25, 7”的第 3小元素为 7。 函数 partition(int a, int low,int high)
6、以 alow的值为基准,对 alow,alow+1, ahigh 进行划分,最后将该基准值放入 ai(lowihigh),并使得alow, alow+1, ai 1都小于或等于 ai,而 ai+1, ai+2, ahigh 都大于ai。 函数 findkthElem(int a, int startldx, int endldx, int k)在 astartldx,astartldx+1 , aendIdx中找出第 k小的元素。 【 代码】 #include #include int partition(int a, int low, int high) 对 alow high进行划分,使得
7、 alow i中的元素都不大于ai+1 high中的元素。 int pivot=alow; pivot表示基准元素 int i=low, j=high; while( (1) ) while(ipivot)一一 j; ai=aj; while(iendIdx kendIdx k一 1name=name; string getName() return name; void sendMessage(string message); ; class ChatRoom public: static void showMessage(User*user, string message) coutget
8、Name() sendMessage(“Hi!Leo!”); li-sendMessage(“Hi!John!”); void join(User*user) (3) (“Hello Everyone!I am”+user一 getName(); ; int main() chatRoomsystem* crs =(4) ; crs一 startup(); crs-join(*(5)(“Wayne”); delete crs; *程序运行结果: John:Hi!Leo!Leo: Hi!John!Wayne: Hello Everyone!I am Wayne* 2016年下半年软件水平考试(初
9、级)程序员下午(应用技术)真题试卷答案与解析 1 【正确答案】 (1)i,N或 i,N, l或等效形式 (2)S+Aj或等效形式 (3)S (4)ji+1或等效形式 (5)S 【试题解析】 本题考查程序员对算法流程进行设计的能力。 既然要考察整数数组 A1: N中所有从下标 i到下标 j(ji)的各元素之和 S,因此需要执行对 i和 j的双重循环。显然,对 i的外循环应从 l到 N进行。在确定了 i后,可以从 Ai开始依次将元素 Aj累加到 S中。所以,对 j的内循环应从 i开始直到 N,以保持 (ji)。因此空 (1)处应填入 “i, N”,而空 (2)处应填写 “S+Aj”。 为了在内循环
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2016 年下 半年 软件 水平 考试 初级 程序员 下午 应用技术 答案 解析 DOC
