【计算机类职业资格】初级程序员下午试题-102及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-102及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-102及答案解析.doc(15页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-102 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明下面流程图完成快速排序算法。快速排序法通过分割的方法来进行排序。其本质是把数组分成左右两个部分,在左边部分只保存数组中小于某个特定数值的那些数据,而在右边的部分保存数组中大于这个特定数值的那些数据,在两个部分之间插入这个特定的数值。当快速排序算法对数组的分割完成后,这个数值就在正确的排序位置了(这时它就没有必要继续和后面的数据比较了),于是快速排序法产生了两个单独的数组。如果这两个数组不相关,单独排序,于是又产生了两个排序的单独数组,对这两个单独的表进行快速排序,重复上
2、述步骤直到所有的数据都处在各自适当的位置。注:快排函数定义为 run(data,left,right),left 和 right分别为数组上下界。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_二、试题二(总题数:1,分数:15.00)函数 2.1说明L为一个带头结点的循环链表。函数 deletenode(LinkList L,int c)的功能是删除 L中数据域 data的值大于 c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。函数 2.1LinkList deletenode(LinkList L, int c
3、)LinkList Lc,p,pre; pre=L;p= (1) ; Lc=(LinkList)malloc(sizeof(ListNode);Lc-next=Lc;while(p!=L)if(p-datac)(2) ;(3) ;Lc-next=p;p=pre-next;elsepre=p;p=pre-next;return Lc;函数 2.2说明递归函数 dec_to_k_2(int n,int k)的功能是将十进制正整数 n转换成 k(2k9)进制数,并打印。函数 2.2dec_to_k_2 (int n,int k)/将十进制正整数 n转换成 k(2k9)进制数。if(n!=0)dec_
4、to_k_2( (4) ,k); printf(“%d“, (5) ); (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:15.00)说明函数 int psort(int a,int n)实现将含 n个整数的数组 a的不同元素按从小到大顺序存于数组 a中。实现方法是从未确定的元素列中找到最小元素并将 a的第 i最小元素交换至 ai位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面; 否则,忽视该元素。函数int psort (int a ,int n)int i, j ,k,p;for(i=0
5、,k=0ji (1) ;i+) for(j=i+1, (2) ;jn;j+)if (apaj)p=j;if (p!=i) t=apap=ai;ai=t;if( (3) ) k+;else if ( (4) a i)(5) =ai; return k;int a=5,7,5,6,4,3,4,6,7;main()int k,n;for (k=0 ; k(sizeof a) /sizeof (int); k+)printf (“ %5d“ ,a k) ;printf (“/n/n“) ;n=psort (a, (sizeof (a) /sizeof (int);printf(“%5d“,ak);pr
6、intf (“/n/n“) ;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_四、试题四(总题数:1,分数:15.00)说明从文件 IN.DAT中读取一篇英文文章存入到字符串数组 XX中; 请编写程序,其功能是:以行为单位把字符串中的所有小写字母 o左边的字符串内容移到该串的右边存放,然后把小写字母 o删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组 XX中,最后调用函数 writedat()把结果 XX输出到文件 OUT5.DAT中。原始数据文件存放的格式是:每行的宽度均小于 80个字符,含标点符号和空格
7、。函数# include “stdio.h“# include “string.h“# include “conio.h“# include “ctype.h“# include “mem.h“unsigned char xx5080 ;int maxline=0;int readdat (void) ;void writedat (void) ;/*将题目要求的字符串中所有小写字母。左边的字符串内容移到该串的右边存放,即将串中*/*“最后”一个字母 o左右两侧的内容互换*/void StrOR (void)int i;char *p1, *p2 , t80;for (i=0;imaxline
8、; i+)p2=xx i ;while (*p2) /*找到最后一个,o */if ( (1) ) p1=p2p2+;strcat (t,p1+1) ;strcat (t,xx i) ;p1=xxi;p2=t ;while(*p2) /*删符o*/jf( (2) )( (3) )=*p2;p2+;(4) ;void main ()clrscr () ;if (readdat () printf(“Cant open the file IN.DAT!/n“);return;StrOR () ;writedat () ;int readdat (void)FILE *fp;int i=0;char
9、 *p;if (fp= fopen (“in.dat“ , “r“ =NULL)return 1;while (fgets (xx i , 80, fp)! =NULL)p=strchr (xx i, /n) ;if (p)i+;maxline= (5) ;fclose (fp) ;return 0;void writedat (void)FILE *fp;int i;fp=fopen (“in.dat “ , “w“) ;for (i=0; imaxline; i+)printf(“%s/n“,xxi);fprintf(fp, “%s/n“,xxi) ;fclose (fp) ;(分数:15
10、.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_五、试题五(总题数:1,分数:15.00)说明阅读下面程序,指出其中代码的错误及原因。C+程序01 #include iostream.h02 class employee03 private:04 short age;05 float salary ;06 friend void funcl () ;07 protected:08 char* name;09 public:10 employee (char* nn, short ag, float salr) ;11 void print () const ;12
11、 employee () ;13 ;14 manage:public employee15 char* department;16 /.17 public:18 void print () ;19 void setEmployee () ;20 /.21 22 /.23 void manage:print ()24 25 cout “name: “ nameendl;26 cout“salary: “salaryendl; /- (1) 27 28 void manager:setEmployee(char* dept)29 30 employee:employee(char* nm,shor
12、t ag,float salr) ; /- (2) /- (3) 31 department=dept;32 33 void funcl ()34 35 cout “department:“department 11- (4) 36 “,name: “nameendl;37 /.38 39 void main ()40 41 employee aemp; /- (5) 42 manager amngr (“ Kng “ , 35, 578. 9);43 /.44 (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_六、试题六(总题数:1,分数:15.00)
13、说明下面程序输出一个矩形面积,以及矩形区域上的假想的作物产量。Java程序public class Mainjava public static void main(String args) Lot_size small = new Lot_size() ;Lot_size medium = new Lot_size();small.set (5,5,5,25) ;medium.set (10,10,10, 50) ;System.out.println(“For a small lot of area “+small.get_area () +“/n“);System.out.println
14、(“the actual crops are $“+small.get_data2 () +“ /n“) ;System.out.println(“and ideal crops are $“+small.get_data () +“/n“) ;System.out.println(“For a medium lot of area“+medium.get_area () +“/n“);system.out.println (“the actual crops are $ “+medium.get_data2 () +“/n “);System.out.println (“and ideal
15、crops are $“+medium.get_data () +“/n“);class Crop_assessmentprivate int actual_crop;private int ideal_crop;public void set(int in_actual,int in_ideal) actual_crop = in_actual;ideal_crop = in_ideal;public int get_actual_crop () return (1) ; public int get_ideal_crop() return (2) ;class Lot_sizeprivat
16、e int length;private int width;private Crop_assessment crop = (3) ;public void set(int 1,int w,int a,int i) length =1;width = w;crop.set (a,i) ;public int get_area () return lengt h*width; public int get_data() return (4) ; public int get_data2 () return (5) ;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空
17、项 1:_初级程序员下午试题-102 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明下面流程图完成快速排序算法。快速排序法通过分割的方法来进行排序。其本质是把数组分成左右两个部分,在左边部分只保存数组中小于某个特定数值的那些数据,而在右边的部分保存数组中大于这个特定数值的那些数据,在两个部分之间插入这个特定的数值。当快速排序算法对数组的分割完成后,这个数值就在正确的排序位置了(这时它就没有必要继续和后面的数据比较了),于是快速排序法产生了两个单独的数组。如果这两个数组不相关,单独排序,于是又产生了两个排序的单独数组,对这两个单独的表进行快速排序
18、,重复上述步骤直到所有的数据都处在各自适当的位置。注:快排函数定义为 run(data,left,right),left 和 right分别为数组上下界。(分数:15.00)填空项 1:_ (正确答案:dataimid 且 iright)解析:填空项 1:_ (正确答案:datajmid 且 jleft)解析:填空项 1:_ (正确答案:i=i+1,j=j-1)解析:填空项 1:_ (正确答案:run(data,left,i))解析:填空项 1:_ (正确答案:run(data,i,right))解析:解析 本试题考查流程图。根据题目中给出的算法,再根据流程图,可以看出,算法取了数组的一个中间
19、值来作为某个特定的值,然后从左扫描大于中间值的数 datai,从右扫描小于中间值的数 dataj,找到后,经过位置判断(i=j),将这一对数进行交换。由此,空(1)应填入 dataimid 且 iright,空(2)应填入 datajmid 且jleft.交换后,继续改变扫描界限下标,开始新一轮的寻找交换,空(3)应填入 i=i+1,j=j-1,直到两边扫描的下标交错,这说明已经将数组分成了有序的两部分。当左边部分有值(leftj),递归左半边,当右边部分有值(righti),递归右半边。因此,空(4)和空(5)分别填入 run(data,left,i)和run(data,i,right)。二
20、、试题二(总题数:1,分数:15.00)函数 2.1说明L为一个带头结点的循环链表。函数 deletenode(LinkList L,int c)的功能是删除 L中数据域 data的值大于 c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。函数 2.1LinkList deletenode(LinkList L, int c)LinkList Lc,p,pre; pre=L;p= (1) ; Lc=(LinkList)malloc(sizeof(ListNode);Lc-next=Lc;while(p!=L)if(p-datac)(2) ;(3) ;Lc-n
21、ext=p;p=pre-next;elsepre=p;p=pre-next;return Lc;函数 2.2说明递归函数 dec_to_k_2(int n,int k)的功能是将十进制正整数 n转换成 k(2k9)进制数,并打印。函数 2.2dec_to_k_2 (int n,int k)/将十进制正整数 n转换成 k(2k9)进制数。if(n!=0)dec_to_k_2( (4) ,k); printf(“%d“, (5) ); (分数:15.00)填空项 1:_ (正确答案:pre-next 或 L-next)解析:填空项 1:_ (正确答案:pre-next=p-next)解析:填空项
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 102 答案 解析 DOC
