《2016年下半年程序员真题(案例分析题)》由会员分享,可在线阅读,更多相关《2016年下半年程序员真题(案例分析题)(18页珍藏版)》请在金锄头文库上搜索。
1、 程序员 http:/ 年下半年程序员真题(案例分析题)案例分析题试题一(共 15 分)阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。【说明】设有整数数组 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。【流程图】程序员 http:/ 1,格式为:循环控制变量=初值,终值试
2、题二(共 15 分)阅读以下代码,回答问题:1 至问题 3 ,将解答填入答题纸的对应栏内。【代码 1】#include程序员 http:/ swap(int x, int y) int tmp =x; x= y; y= tmp;int maim() int a= 3, b= 7; printf(“al= %d b1=%dn“,a,b);Swap( a, b);Printf(“a2 = %d b2=%dn”,a,b);return 0;【代码 2】#include#define SPACE /空格字符Int main()char str128 =”Nothing is impossible! “
3、;int i,num =0,wordMark=0;for(i=0;stri;i+)程序员 http:/ Printf(“%d/n”,num)retun 0;【代码 3】#include#define SPACE “/空格字符int countStrs(char *);int main()char str128 = “ Nothing is impossible! “;Printf(%d/n,(1)(str)retum 0;程序员 http:/ countStrs(char *p)int num=0, wordMark= 0;for(;(2) ;p+) If((3)=SPACE) wordMar
4、k= 0;elseif( !wordMark ) wordMark = 1;+munretum (4) ;【问题 1】 (4 分)写出代码 1 运行后的输出结果。【问题 2】 (3 分)写出代码 2 运行后的输出结果。【问题 3】 (8 分)代码 3 的功能与代码 2 完全相同,请补充 3 中的空缺,将解答写入答题纸程序员 http:/ 15 分)阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的程序利用快速排序中划分的思想在整数序列中找出第 k 小的元素(即将元素从小到大排序后,取第 k 个元素) 。对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一
5、个数作为基准值,然后根据基准值进行划分,从而将待排序的序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列) ,然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。例如,整数序列“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)以 alow的值为基准,对alow、alow+l、ahigh进行划分,最后将该基准值放入 ai (lowihigh),并使得
6、 alow、alow+l、 , 、Ai-1都小于或等于 ai,而ai+l、ai+2、 、ahigh都大于 ai。函教 findkthElem(int a,int startIdx,int endIdx,inr k)在 astartIdx、astartIdx+1、.、aendIdx中找出第 k 小的元素。【代码】#include 程序员 http:/ Int partition(int a ,int low, int high)/对 alow.high进行划分,使得 alow.i中的元素都不大于 ai+1.high中的元素。int pivot=alow; /pivot 表示基准元素Int i=l
7、ow,j=high;while(( 1) )While(ipivot)-j;ai=ajWhile(ipivot)+i;aj=ai(2) ; /基准元素定位return i; Int findkthElem(int a,int startIdx,int endIdx, int k)/整数序列存储在 astartldx.endldx中,查找并返回第 k 小的元素。if (startldxendIdx | kendIdx |k-1#include using namespace std;class User private:string name;public:User(string name)(1
8、) =name;User() 程序员 http:/ setName(string name) this-name=name;string getName()return name;void sendMessage(string message);class ChatRoom .public:static void showMessage(User* user, string message) coutgetName()“ : “sendMessage(“Hi! Leo!“);li_sendMessage(“Hi! John!“); void join(User* user) (3) (“HeIIoEveryone!l am“+user-getName(); . ; .;int main()ChatRoomSystem*crs= (4) ;crs-startup();crs-join( (5) (“Wayne“);delete crs;/*程序运行结果:John:Hi! LeolLeo:Hi! John!Wayne】:Hello Everyone!Iam Wayne/* 如需了解更多程序员真题资讯,请看希赛软考学院!