欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】初级程序员下午试题-21及答案解析.doc

    • 资源ID:1330084       资源大小:50.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】初级程序员下午试题-21及答案解析.doc

    1、初级程序员下午试题-21 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】设学生(学生数少于 50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组 B50中。【流程图】(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.【说明】设有 n个人围坐一圈并按顺时针方向从 1到 n编号,从第 s个人开始进行 1到 m的报数,报数到第 m个人,则此人出圈,再从他的下一个人重新开始 1到 m的报数,如此进行下去,直到所有的人都出圈为止。现要求按出

    2、圈次序,每 10人一组,给出这 n个人的顺序表。设 n=100,s=1,m=10。(1)将 1到 n个人的序号存入一维数组 p中;(2)若第 i个人报数后出圈,则将 p置于数组的倒数第 i个位置上,而原来第 i+1个至倒数第 i个元素依次向前移动一个位置:(3)重复第(2)步,直至圈中只剩下 p1为止。#includestdio.h#define N 100#define S 1#define M 10void main()int p100,n,s,m;m=M;n=N;s=S;int i,j,s1,w;s1=s;for(i=1; (1) ;i+)(2)=i;for(i=n;i=2;i-)s1=

    3、 (3) ;if(s1=0)s1=i;w= (4) ;for(j=s1;ji;j+)pj-1=pj;pi-1= (5) ;printf(“%4d“,pi)(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.【说明】给定函数 fun的功能是:将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。【函数】int fun(char *c,int status)if( (1) =)return 1;elseif( (2) return 0;main()int flag=1;char ch;printf(“请输入一字符串,用点号结束输入!/n“

    4、);do ch=getchar();flag=fun(putchar(ch);while(ch!=.);printf(“/n“);(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.【说明】编写程序,生成一个新文本文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。【C 语言程序】#includestdio.hmain()FILE *oldf,*newf;char ch,fname20;int i;doprintf(“Enter name of existed text file to be read:“);scanf(“%

    5、s“,fname);if(oldf=fopen(fname,“r“)=NULL)printf(“File %s cant open!/n“,fname);while(oldf=NULL);doprintf(“Enter mane of new text file to be written:“);scanf(“%s“,fname);if( (1) =NULL)printf(“File %s cant open!/n“,fname);while( (2) );i=1;while(!feof(oldf)while(ch=fgetc(oldf)!= (3) )if(i%2= (4) )fputc(c

    6、h,newf);fputc(/n,newf);(5) ;fclose(oldf);fclose(newf);(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.【说明】在下面函数横线处填上适当的字句,使其输出结果为:构造函数.构造函数.1,25,6析构函数析构函数.【C+代码】#include “iostream.h“class AApublic;AA(int i,int j)A=i; B=j;cout“构造函数./n“;AA() (1) ;void print();private:int A, B;void AAprint()coutA“,“Bendl;void main()

    7、AA *a1, *a2;(2) =new AA(1, 2);a2=new AA(5, 6);(3) ;a2-print();(4) a1;(5) a2;(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.【Java 代码】class usethread implements (1) int numusethread(int n)num=n;public void (2) for(int i=0;i3;i+)System.out.println(“running:“+num);System.out.println(“finished:“+num);public class mul

    8、threadpublic static void main(String args) (3) InterruptedExceptionThread m1=new Thread(new usethread(1);Thread m2=new Thread(new usethread(2);m1.start();m2.start();m1.join();m2.join();【问题 1】补充完整上面 Java代码中 (n) 处。【问题 2】写出上面 Java代码运行的结果。(分数:15.00)_初级程序员下午试题-21 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:1

    9、5.00)1.【说明】设学生(学生数少于 50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组 B50中。【流程图】(分数:15.00)_正确答案:(1)B0a (2)i0 (3)a=“.“(4)aBj (5)j-)解析:分析本题考查用程序流程图来描述排序。题目要求将文件中学生的成绩读出,并把全部成绩从高到低排序到数组 B50中。这里面涉及两个问题,第一是从文件中读数,文件中的数据是以单行句点“.”为结束符的,在未读到此符号前,应该将继续取数据。第二是排序,每取到一个学生的成绩都要与数组的学生成绩比较,按照

    10、从高到低的顺序在数组中找到合适的位置存放。下面来具体分析流程图。第(1)空在条件判断为假的情况下执行流程中,如果条件为假说明从文件中取到的数据是学生成绩。从程序流程图中可以看到,从文件中读的数据存放在变量 a中,而此空是第一次取数据,应该存放数组 B的第一个位置,因此此空答案为 B0a。第(2)空是紧接着第(1)空来的,在上面已经把从文件中读到的第一个数存放到了数组中,接下来应该处理数组的下标问题,从后面的流程中可以推断出变量 i是存放数组当前下标的,而且没有初值,那么此空的任务应该是用来给变量 i赋一个初值,而对数组的操作应该从头开始,因此此空答案为 i0。第(3)空是循环的判断条件,如果条

    11、件成立则结束,在这之前又对文件进行了一次读数,根据我们上面的分析只有在读到了结束符时程序才结束,那么此空肯定是判断从文件中读到的数据是否为结束符,因此此空答案为 a=“.“?。第(4)空也是一个循环的判断条件,如果条件成立,则将取到的数存放到数组的当前下标位置;如果不成立,则循环找到合适的位置再存放。从这里我们不难推断出,流程图中是将从文件取到的成绩与当前数组中的最小成绩进行比较的,而当前数组中的最小成绩存放在位置 j中,因此此空答案为 aBi?。第(5)空在循环体中,这个循环的作用是为当前从文件中读到的成绩在已经排好序的数组元素中找到合适的位置,找到了就要插入,数组中的元素是按从大到小排列的

    12、,在查找合适位置时是从后往前依次比较,因此此空的任务应该是将数组的下标往前移动,所以此空答案为“i-”。二、试题二(总题数:1,分数:15.00)2.【说明】设有 n个人围坐一圈并按顺时针方向从 1到 n编号,从第 s个人开始进行 1到 m的报数,报数到第 m个人,则此人出圈,再从他的下一个人重新开始 1到 m的报数,如此进行下去,直到所有的人都出圈为止。现要求按出圈次序,每 10人一组,给出这 n个人的顺序表。设 n=100,s=1,m=10。(1)将 1到 n个人的序号存入一维数组 p中;(2)若第 i个人报数后出圈,则将 p置于数组的倒数第 i个位置上,而原来第 i+1个至倒数第 i个元

    13、素依次向前移动一个位置:(3)重复第(2)步,直至圈中只剩下 p1为止。#includestdio.h#define N 100#define S 1#define M 10void main()int p100,n,s,m;m=M;n=N;s=S;int i,j,s1,w;s1=s;for(i=1; (1) ;i+)(2)=i;for(i=n;i=2;i-)s1= (3) ;if(s1=0)s1=i;w= (4) ;for(j=s1;ji;j+)pj-1=pj;pi-1= (5) ;printf(“%4d“,pi)(分数:15.00)_正确答案:(1)i=n (2)pi-1 (3)(s1+m

    14、-1)%i(4)ps1-1 (5)w)解析:分析题目中给出了 n个人出圈问题的具体实现方法,要求用 C语言来实现,结合题目中给出的方法,我们来具体分析程序。第(1)空是循环的判断条件,根据题目的要求和程序来看,这个循环应该用来把 n个人的编号存放到数组p中,总共是 n个人,那么循环上界应该是 n,从程序中可以知道循环变量是 i,因此此空答案为 i=n。第(2)空在循环体中,从上面的分析已经知道,这个循环实现将 n个人的编号存放到数组 p中,第一个人的编号应该存放到数组下标为 0的位置,而第二个人的编号就存放到数组下标为 1的位置,依此类推。因此此空答案为 pi-1。第(3)空在另一个循环体中,

    15、结合整个程序来看,不难推断出此循环体应该用来实现题目中的第二个与第三个要求。此空是用来给变量 s1赋一个值,从后面的程序中可以推断出,变量 s1中存放的是判断当前报数的人是否该出圈,如果为 0,则出圈,因此此空答案为(s1+m-1)%i。第(4)空是给一个变量 w赋一个值,从此空上面的程序我们知道找到了要出圈的人,根据题目要求,应将出圈人的编号置于数组的倒数第 i个位置上,在将其存放到倒数第 i个位置时肯定要移动数组中的元素,而元素的移动是以当前位置为前提的,那么需要将当前位置人的编号先保存到变量 w中,而当前位置人的编号存放在数组,ps1-1中,因此此空答案为 ps1-1。第(5)空很明显是

    16、给 pi-1赋一个值,而 pi-1正好是数组的倒数第 i个位置,应该用来存放当前出圈人的编号,而编号在变量 w中,因此此空答案为 w。三、试题三(总题数:1,分数:15.00)3.【说明】给定函数 fun的功能是:将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。【函数】int fun(char *c,int status)if( (1) =)return 1;elseif( (2) return 0;main()int flag=1;char ch;printf(“请输入一字符串,用点号结束输入!/n“);do ch=getchar();fla

    17、g=fun(putchar(ch);while(ch!=.);printf(“/n“);(分数:15.00)_正确答案:(1)*c (2)status (3)*c=z(4)*c=a (5)*c+)解析:分析本题考查在 C语言中对字符串的处理。题目要求程序将从键盘上输入的每个单词的第一个字母转换为大写字母,而输入的各单词必须用空格隔开,用“.”结束输入。要实现这个功能,关键之一在于如何取出单词中的第一个字母,关键之二是如何实现大小写字母的转换。第(1)空是一个条件判断语句的条件,如果条件成立,则返回 1,而从程序中可以看出,此条件判断语句是判断当前取到的字符是否等于空格字符。从主函数中可以看到,

    18、每次在调用功能函数 fun()前都从输入的字符串中取出一个字符,并存放在变量 ch中,而在调用函数时是将变量 ch的地址传递给了指针变量c,因此此空的答案为*c。第(2)空、第(3)空和第(4)空应该结合起来看,它们都是条件判断语句的条件,这个条件判断语句下面的程序是将一个小写字母改变成一个大写字母,根据题目要求,此条件判断语句的条件应该是判断当前取到的字母是一个单词的第一个字母且是一个小写字母,再结合主函数来看,我们不难发现单词的第一个字母用一个标记变量 flag标识,如果是第一个字母,这个标记变量 flag的值为 1,否则为 0。要判断一个字母是否是小写字母,应该判断其 ASC码值是否在

    19、a与 z的 ASC码值之间。所以这 3个空的答案应该分别为 status、*c=z、*c=a。第(5)空是在上面条件成立的情况下执行的一条语句,条件成立我们在上面已经分析过了,表明当前取到的字符是一个单词的第一个字母且是小写字母,此空所在语句的任务是将小写字母变成大写字母,根据上面的分析,因此可以得到此空答案为*c+。四、试题四(总题数:1,分数:15.00)4.【说明】编写程序,生成一个新文本文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。【C 语言程序】#includestdio.hmain()FILE *oldf,*newf;ch

    20、ar ch,fname20;int i;doprintf(“Enter name of existed text file to be read:“);scanf(“%s“,fname);if(oldf=fopen(fname,“r“)=NULL)printf(“File %s cant open!/n“,fname);while(oldf=NULL);doprintf(“Enter mane of new text file to be written:“);scanf(“%s“,fname);if( (1) =NULL)printf(“File %s cant open!/n“,fname

    21、);while( (2) );i=1;while(!feof(oldf)while(ch=fgetc(oldf)!= (3) )if(i%2= (4) )fputc(ch,newf);fputc(/n,newf);(5) ;fclose(oldf);fclose(newf);(分数:15.00)_正确答案:(1)newf=fopen(fname,“w“) (2)newf=NULL (3)/n(4)0 (5)i=i+1(或 i+)解析:分析本题考查用 C语言实现对文本文件的操作。题目要求程序生成一个新文本文件,它的内容由一个已知文本文件的所有偶数行组成,而已知文本文件名和新文本文件名均从键盘输入

    22、,题目的关键在于对文件的操作。下面来具体分析代码。第(1)空在一个循环体中,是条件判断语句的条件,此循环的作用我们不难从程序中看出,是用来打开新文本文件的,在 C语言中要打开一个文件应该用函数 fopen(),它的两个参数分别是其文件名和对文件操作的属性,根据题目意思,对这个文件的操作只有写操作。因此,此空答案为 newf=fopen(fname,“w“)。第(2)空是一个循环的判断条件,上面我们已经分析了该循环的作用,是用来打开新文本文件的,结合第一个文件的打开程序,我们很容易发现此空的答案为 newf=NULL。第(3)空是一个二重循环第二层循环的判断条件,这个二重循环的作用是用来实现将已

    23、知文本文件的所有偶数行内容写到新文件中,这里需要注意每次取到的内容都是偶数行的内容,在对已知文本文件进行取内容时是逐行取的,那么条件判断语句是用来判断是否取完了一行内容,在 C语言中,一般用换行符/n来标志一行的结束,因此此空答案为/n。第(4)空是循环下条件判断语句的条件,根据题目要求可以知道每次对新文件进行写的数据都是已知文本文件的偶数行的内容,那么在写之前应该首先判断内容是否是偶数行的内容。此空所在语句就是用来实现这一功能的,而偶数对 2取余的结果都为 0,因此此空答案为 0。第(5)空是二重循环的最后一条语句,在上面的空中我们已经分析到,在对新文件进行写内容时要首先判断其内容所在行是否

    24、为偶数行,而当前行号存放在变量 i中,整个程序都没有改变变量 i的值,那么此空应该是用来改变变量 i的值的,因此此空答案为 i+。五、试题五(总题数:1,分数:15.00)5.【说明】在下面函数横线处填上适当的字句,使其输出结果为:构造函数.构造函数.1,25,6析构函数析构函数.【C+代码】#include “iostream.h“class AApublic;AA(int i,int j)A=i; B=j;cout“构造函数./n“;AA() (1) ;void print();private:int A, B;void AAprint()coutA“,“Bendl;void main()

    25、AA *a1, *a2;(2) =new AA(1, 2);a2=new AA(5, 6);(3) ;a2-print();(4) a1;(5) a2;(分数:15.00)_正确答案:(1)cout“析构函数./n“ (2)a1 (3)a1print()(4)delete (5)delete)解析:分析本题考查用 C+语言对输出的实现。题目中没有什么条件,只给出了输出结构,要求程序能实现这个输出。下面来具体分析代码。第(1)空很明显是类 AA的析构函数的函数体,类的析构函数一般在撤销一个对象时调用,根据题目的要求,要输出析构函数这样的结果,而在程序中没有与此相关的操作,那么此空应该是用来实现这

    26、个功能的,借鉴构造函数中的内容,我们很容易就得出此空答案为 cout“析构函数./n“。第(2)空在主函数中,很明显此空所在的语句是创建一个 AA类的对象,并让一个 AA型的指针变量指向这个对象。在函数开始的时候声明了两个 AA型的指针变量 a1和 a2,而 a2在下面已经有了值,那么这里只有用变量 a1,因此此空答案为 a1。第(3)空是在创建了两个对象后执行的语句,根据程序不难推断出,这里应该要实现对象 a1的数据输出,那么就要调用函数 print(),因此此空答案为 a1-print()。第(4)空所在的语句是在实现了构造函数与数据输出后执行的语句,从题目要求来分析,这里应该要调用对象的

    27、析构函数来输出“析构函数”这样一个结果,上面我们已经分析到了对象的析构函数一般在撤销对象时调用。从对象的执行过程来分析,在对象的所有处理完成后也应该撤销对象来释放所占的资源,那么此空的任务应该是用来撤销 a1对象,在 C+中一般用关键字 delete,因此此空答案为 delete。第(5)空和第(4)空的情况一样,因此此空答案为 delete。六、试题六(总题数:1,分数:15.00)6.【Java 代码】class usethread implements (1) int numusethread(int n)num=n;public void (2) for(int i=0;i3;i+)S

    28、ystem.out.println(“running:“+num);System.out.println(“finished:“+num);public class multhreadpublic static void main(String args) (3) InterruptedExceptionThread m1=new Thread(new usethread(1);Thread m2=new Thread(new usethread(2);m1.start();m2.start();m1.join();m2.join();【问题 1】补充完整上面 Java代码中 (n) 处。【问

    29、题 2】写出上面 Java代码运行的结果。(分数:15.00)_正确答案:(1)Runnable (2)run() (3)throws程序输出结果:running:1running:2running:1running:2running:1running:2finished:1finished:2)解析:分析本题考查 Java中线程的相关知识。题目要求按照程序给出的内容来完成填空和输出程序的运行结果。本题的关键是考查我们对线程的了解程度。线程的创建方法有两种,即通过类 Thread和接口 Runnable创建的方法。刚刚创建的线程还不能与其他的线程并发运行,当调用了方法 start后,线程进入就

    30、绪态,在被 Java虚拟机调度后才进入运行态。进入运行态的线程自动执行成员方法 run(),在执行完这个成员方法后线程就又自动进入死亡态。下面来具体分析程序。第(1)空在定义类 usethread语句中,从后面的关键字 implements可以推断出类继承了一个接口,而在Java中,接口一般只有成员变量和成员方法的定义而没有成员方法的具体实现。根据后面的程序 new Thread(new usethread(1)可以知道创建了线程对象,而这种创建线程对象的方法是通过接口 Runnable来实现的,因此类 usethread肯定是继承了接口 Runnable,所以此空答案为 Runnable。第

    31、(2)空是一个函数体的函数名,而函数体的作用是循环进行输出,从上面对线程的分析可以知道,此函数一定是 run()函数,因此此空答案为 run()。第(3)空是入口函数后面的语句,结合 Java程序的特点,再从此空后面的内容不难推断出,此处是要显式生成异常来处理程序中的异常。而在 Java中,一般用关键字 throws来显式生成异常,因此此空答案为throws。对于问题 2,我们可以根据程序来分析,程序中创建了两个线程,根据上面的分析我们可以知道,这两个线程都自动调用了函数 run(),因此程序输出结果为:running:1running:2running:1running:2running:1running:2finished:1finished:2


    注意事项

    本文(【计算机类职业资格】初级程序员下午试题-21及答案解析.doc)为本站会员(appealoxygen216)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开