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

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

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

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

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

    1、初级程序员下午试题-24 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.说明下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。流程图(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.说明下面的程序利用递归算法计算 x 和 y 的最大公约数。函数 2.1main ( )int x,y,k,t;scanf(“ % d% d“ , if(xy) t=x;x=y; y=t;(1) ;while(k! =0)y=x;

    2、(2) ;k=y%x;prinff( “% d“ ,x); 函数 2.2 说明函数 fun(char *str,char *substr 的功能是计算子串 sugbstr 在串 str 中出现的次数。函数 2.2fun(ehar * str, char * substr)int x,y,z;(3) ;for(x=0;str x ! = /O;x + + )for(y=x,z=0;sabstrz = =stry; (4) ,y+ +)if( (5) = =/0) num + +;break;return(num);(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.说明用链式存储

    3、结构实现的栈称为链栈。若链栈元素的数据类型为 datatype,以 LinkStack 记链栈结构,其类型定义为:typedef struct nodedatatype data;stmct node * next;StackNode, * LinkStack;由于栈的主要操作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设 top 为栈顶指针,即:LinkStack top。下面各函数的功能说明如下:(1)LinkStack Init_LinkStack():建立并返回空的链栈;(2)int Empty_LinkStack(LinkStack top):判断 top 所指链栈是否空;(3)

    4、LinkStack Push_LinkStack(LinkStacktop,datatypex):将数据 x 压人 top 所指链栈的栈顶,返回新栈指针;(4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出 top 所指链栈的栈顶元素 x,返回新栈指针。函数LinkStaek Init_LinkStack( )returnNULL;int Empty_LinkStack ( LinkStaek top)if(top = = NULL) return 1;else return 0;LinkStaek Push_LinkStaek( L

    5、inkStaektop, datatype X)StaekNode *s;s=malloc (sizeof(StaekNode) );(1) = x;(2) = top;(3) ;return top;LinkStaek Pop_LinkStack (LinkStacktop, datatype * x)StaekNode *p;if(top = = NULL) return NULL;else* x = (4) ;p = top;(5) ;free (p);return top;(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.说明若矩阵 Amn中存在某个元素 aij满足:

    6、a ij是第 i 行中最小值且是第 j 列中的最大值,则称该元素为矩阵A 的一个鞍点。下面程序的功能是输出 A 中所有鞍点,其中参数 A 使用二维数组表示,m 和 n 分别是矩阵A 的行列数。程序void saddle (int A , int m, int n)int i,j,min;for (i=0;i m;i + + )min: (1) ;for (j=1; jn; j+ +)if(Aijmin) (2) ;for (j=0; jn; j+ +)if ( (3) )p=0;while (pmif (p = m)printf (“%d,%d,%d/n“,i,j,min);问题 1 将函数代

    7、码中的(1)(4)处补充完整问题 2在上述代码的执行过程中,若 A 为矩阵 (分数:15.00)_五、试题五(总题数:1,分数:15.00)5.说明我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:GB 11643-1989和GB 11643-1999。CB 11643-1989中规定的是 15 位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。GB 11643 -1999中规定的是18 位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三

    8、位数字顺序码和一位校验码。其中,校验码 C 由本体码按如下过程求得:(1)计算校验码和 S=a18W18+a17W17+a2w2,其中 i 表示 18 位身份证号,码每一位的序号,从右至左,最左侧为 18,最右侧为 1;ai表示身份证号码第 i 位上的号码;w i表示第 i 位上的权值,其值为 2i-1 模11 的结果;(2)计算校验码值 R,其值为校验和模 11 的结果;(3)根据下面对应关系找出校验码 C:R 0 1 2 3 4 5 6 7 8 9 10C 1 0 X 9 8 7 6 5 4 3 2由上述计算过程可以看出,18 位身份证号码中可能包含非数字的字母 X(代表数字 10)。下面

    9、的应用程序基于这一算法实现了身份证号码的升位查询:(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.说明本程序使用类来管理员工的通讯地址信息。已知程序的输出为:输出记录:5姓名:王丽华街道地址:中华路 15 号市:襄樊市省;湖北省邮政编码:430070C+程序#include iostream, h #include string, h class employee.protected:char name10;char street 20 ;char city10;char (1) 10;char post7;int no;(2) :(3) (char ,char ,char

    10、 ,char ,char ,int);void changename ( char n ) strcpy ( name, n); void changestreet( char s ) strcpy(street,s) ;void changecity ( char c ) strcpy ( city, c ); void changeprov( char p ) strcpy(prov,p); void changeno(int nnm) (4) ;void display( );employee: (3) (char n ,char s ,char c ,char p1 ,char p2

    11、,int nam)strcpy(name,n);strcpy ( street, s);strcpy ( city, c);strcpy ( prov, p1 );strcpy ( post, p2 );no = nam; void employee: display( ) cont “输出记录: “ no endl;cout “姓名: “ name endl;coot “街道地址: “ street endl;cout “市: “ city endl;cout “省: “ prov endl;cout “邮政编码: “ post endl;void main( ) employee cmp(

    12、“王华“ ,“中华路 15 号“ ,“武汉市“,“湖北省“,“430070“, 1 );emp. changename( “五丽华“ );emp. changecity ( “襄樊市“ );emp. changeno(5);(5) ;(分数:15.00)_七、试题七(总题数:1,分数:15.00)7.说明设某单位 Acess 数据库中有一张员工信息表,其中记录了员工编号、姓名、性别等基本信息。下面的应用程序利用数据控件(Data)实现了对这张表中记录的增加、删除和修改操作。其运行界面如下:(分数:15.00)_八、试题八(总题数:1,分数:15.00)8.说明本程序的功能是给公司的员工 Tom

    13、,Jack,Green 增加薪水。三人的职位分别是 programmer, Manager,CEO。程序由 6 个类组成:WorkerTest 是主类,programmer,Manager,CEO 三个类,薪水增加的规则是 programmer 的涨幅是 5%;Manager 的是 10%;CEO 也是 Manager,但是它除了有 Manager 的涨幅,还有1000 元的 bonus。接口 SalaryRaise 提供了一个增加薪水的方法 raise()。java 程序public class WorkerTest public WorkerTest( ) public static vo

    14、id main( String args) Programmer programmer = new Programmer( “Tom“ ,3000);Manager manager = new Manager( “Jack“ ,4000);CEO ceo = new CEO( “Green“ ,4000);Worker worker = new Worker3;programmer, raise( );manager, raise( );ceo. raise( );worker0 = programmer;worker 1 = manager;worker2 = ceo;for ( int i

    15、 = 0 ;i worker, length; i + + ) System. out. prinfln (“ Name:“ + worker i. getName ( ) +“ / tSalary:“ + worker i. getSalary ();public interface SalaryRaise void raise( ); public class Worker public String name;public double (1) ;public Worker( ) public String getName( ) return name;public void setNa

    16、me( String name) this. name = name;public double getSalary( ) return salary;public void setSalary(double salary) this. salary = salary; public class Programmer extends Worker implements (2) public Programmer( ) public void raise( ) double pets=0.05;double sala = this. getSalary( ) * (1 + pers);this.

    17、 setSalary (sala);public Programmer( Siring name, double salary) tthis. name = name;this. salary = salary;public class Manager extends (3) implements SalaryRaise public Manager( ) public Manager(String name, double salary) this. name = name;this. salary = salary;public void raise( ) double pets = 0.

    18、1;double sala = this. getSalary() * (1 + pers);this. setSalary(sala);public class CEO extends Manager implements SalaryRaise public CEO() public CEO( String name,double salary) this. name = name;this. salary = salary;public void raise( ) double bonus = 1000;(4) ;double sala = this. getSalary( );(5)

    19、;this. setSalary(sala);(分数:15.00)_初级程序员下午试题-24 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.说明下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。流程图(分数:15.00)_正确答案:(1)MAX0 (2)L+1 (3)MAXL (4) (5)L0)解析:解析本题用到的三个变量及其作用分别为:A,存放输入的一个字符;MAX,存放当前为止最长单词的长度;L,存放当前单同的长度。(1

    20、)使用变量 MAX 应先赋予初值,由上下文知其初值为 0;(2)读取当前单词时,每读人一个字母,单词长度值 L 应增 1;(3)当前单词长度 L 比 MAX 时,应更新 MAX 的值;(4)若当前字符不是句点,应当继续读取字符;(5)读取下一个单词前,应当重置 L 的值。二、试题二(总题数:1,分数:15.00)2.说明下面的程序利用递归算法计算 x 和 y 的最大公约数。函数 2.1main ( )int x,y,k,t;scanf(“ % d% d“ , if(xy) t=x;x=y; y=t;(1) ;while(k! =0)y=x;(2) ;k=y%x;prinff( “% d“ ,x

    21、); 函数 2.2 说明函数 fun(char *str,char *substr 的功能是计算子串 sugbstr 在串 str 中出现的次数。函数 2.2fun(ehar * str, char * substr)int x,y,z;(3) ;for(x=0;str x ! = /O;x + + )for(y=x,z=0;sabstrz = =stry; (4) ,y+ +)if( (5) = =/0) num + +;break;return(num);(分数:15.00)_正确答案:(k=yx (2)x=k (3)int num=0 (4)z+ (5)substrz+1)解析:(1)(

    22、2)使用递归算法计算 x 和 y 的最大公约数时,不妨令 yx,如果 y 除 x 余数得。则 x 即为所求;否则令 yx,x余数,继续上述判断。(3)此处应声明变量 num 并初始化;(4)次循环的功能是从 str 的第 y 个位置起与 substr 做比较,循环过程中 y 和 z 应同时增 1;(5)若上面的循环重复执行,直到到达 substr 结束,则表示 substr 在 str 中出现一次。三、试题三(总题数:1,分数:15.00)3.说明用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为 datatype,以 LinkStack 记链栈结构,其类型定义为:typedef stru

    23、ct nodedatatype data;stmct node * next;StackNode, * LinkStack;由于栈的主要操作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设 top 为栈顶指针,即:LinkStack top。下面各函数的功能说明如下:(1)LinkStack Init_LinkStack():建立并返回空的链栈;(2)int Empty_LinkStack(LinkStack top):判断 top 所指链栈是否空;(3)LinkStack Push_LinkStack(LinkStacktop,datatypex):将数据 x 压人 top 所指链栈的栈顶

    24、,返回新栈指针;(4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出 top 所指链栈的栈顶元素 x,返回新栈指针。函数LinkStaek Init_LinkStack( )returnNULL;int Empty_LinkStack ( LinkStaek top)if(top = = NULL) return 1;else return 0;LinkStaek Push_LinkStaek( LinkStaektop, datatype X)StaekNode *s;s=malloc (sizeof(StaekNode) );(1

    25、) = x;(2) = top;(3) ;return top;LinkStaek Pop_LinkStack (LinkStacktop, datatype * x)StaekNode *p;if(top = = NULL) return NULL;else* x = (4) ;p = top;(5) ;free (p);return top;(分数:15.00)_正确答案:(1)s-data (2)s-next (3)top=s (4)top-data (5)top=top-next)解析:(1)(3):LinkStack Push_LinkStack(Link- Stacktop,dat

    26、mype x)函数的功能是将 x 压入栈顶,因此首先为其创建一个节点 s,使 s-data 等于 x,使 s- next 指向原来的栈顶 top,最后将,作为新栈的栈顶并返回。(4)(5):LinkStack Pop_LinkStaek(LinkStacktop, datatype*x)的功能是弹出原栈顶元素,返回这个元素以及新栈的指针。当原链栈不空时,取出栈顶元素 top -data 赋给参量*x 作为返回值,将 top-next 更新为新栈的栈顶,并且释放原来 top 节点的空间。四、试题四(总题数:1,分数:15.00)4.说明若矩阵 Amn中存在某个元素 aij满足:a ij是第 i

    27、行中最小值且是第 j 列中的最大值,则称该元素为矩阵A 的一个鞍点。下面程序的功能是输出 A 中所有鞍点,其中参数 A 使用二维数组表示,m 和 n 分别是矩阵A 的行列数。程序void saddle (int A , int m, int n)int i,j,min;for (i=0;i m;i + + )min: (1) ;for (j=1; jn; j+ +)if(Aijmin) (2) ;for (j=0; jn; j+ +)if ( (3) )p=0;while (pmif (p = m)printf (“%d,%d,%d/n“,i,j,min);问题 1 将函数代码中的(1)(4)

    28、处补充完整问题 2在上述代码的执行过程中,若 A 为矩阵 (分数:15.00)_正确答案:(问题 1(1)Ai0 (2)min=Aij (3)Ai j=min (4)Apj=min 或 min=AP j问题 2(5)1,2,11)解析:解析本算法的基本思想是:对矩阵 A 逐行处理,求出每一行的最小值,对于这一行上等于最小值的那些元素,逐个判断该元素是否是所在列的最大元,如果是则打印输出。(1)由上下文可知 min 代表第 i 行的最小值,此处应对其赋初值:本行第一个元素;(2)遍历第 i 行后面的元素,若有元素比 miu 小,则应更新 min 的值;(3)此处应挑出本行中取最小值的元素进行判断

    29、;(4)此循环用于判断 min 是否是本列的最大元。(5)所给矩阵中只有一个鞍点 11,若行列号从。开始计,它位于第 l 行第 2 列。五、试题五(总题数:1,分数:15.00)5.说明我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:GB 11643-1989和GB 11643-1999。CB 11643-1989中规定的是 15 位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。GB 11643 -1999中规定的是18 位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:

    30、六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中,校验码 C 由本体码按如下过程求得:(1)计算校验码和 S=a18W18+a17W17+a2w2,其中 i 表示 18 位身份证号,码每一位的序号,从右至左,最左侧为 18,最右侧为 1;ai表示身份证号码第 i 位上的号码;w i表示第 i 位上的权值,其值为 2i-1 模11 的结果;(2)计算校验码值 R,其值为校验和模 11 的结果;(3)根据下面对应关系找出校验码 C:R 0 1 2 3 4 5 6 7 8 9 10C 1 0 X 9 8 7 6 5 4 3 2由上述计算过程可以看出,18 位身份证号码中可能包含非

    31、数字的字母 X(代表数字 10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:(分数:15.00)_正确答案:(1)Exit Sub(2)Right(3)Mid(code,19-i,1) (4)S=S Mod 11 (5)12-S)解析:解析(1)输入错误时,应即刻退出过程;(2)注意到“19”是夹在 15 位身份证号码左端 6 位与右端 9 位之间的,按照参数调用格式可以推断此处函数是 Right;(3)此处应填入身份证号码中第 i 位(从左端起、序号自 18 递减)上的号码,它位于字符串 code 的第 19-i位(从左端起、序号自 1 递增),因此可用 Mid(code, 19

    32、-i,1)来获取;(4)略;(5)从校验码值与校验码的转换关系可知:当校验码值大于等于 3 时,校验码值与校验码之和为 12。六、试题六(总题数:1,分数:15.00)6.说明本程序使用类来管理员工的通讯地址信息。已知程序的输出为:输出记录:5姓名:王丽华街道地址:中华路 15 号市:襄樊市省;湖北省邮政编码:430070C+程序#include iostream, h #include string, h class employee.protected:char name10;char street 20 ;char city10;char (1) 10;char post7;int no

    33、;(2) :(3) (char ,char ,char ,char ,char ,int);void changename ( char n ) strcpy ( name, n); void changestreet( char s ) strcpy(street,s) ;void changecity ( char c ) strcpy ( city, c ); void changeprov( char p ) strcpy(prov,p); void changeno(int nnm) (4) ;void display( );employee: (3) (char n ,char s

    34、 ,char c ,char p1 ,char p2 ,int nam)strcpy(name,n);strcpy ( street, s);strcpy ( city, c);strcpy ( prov, p1 );strcpy ( post, p2 );no = nam; void employee: display( ) cont “输出记录: “ no endl;cout “姓名: “ name endl;coot “街道地址: “ street endl;cout “市: “ city endl;cout “省: “ prov endl;cout “邮政编码: “ post endl

    35、;void main( ) employee cmp(“王华“ ,“中华路 15 号“ ,“武汉市“,“湖北省“,“430070“, 1 );emp. changename( “五丽华“ );emp. changecity ( “襄樊市“ );emp. changeno(5);(5) ;(分数:15.00)_正确答案:(1)prov (2)public (3)employee (4)no=num(5)emp.display()解析:解析本程序创建一个 employee 类,包括姓名、街道地址、市、省和邮政编码和记录号等信息以及若干函数:构造函数 employee()初始化每个成员;changn

    36、ame ()、changeno()等用于更改类中各属性的值;dis- play()函数用于打印数据。其中的数据成员是保护的,函数是公共的。七、试题七(总题数:1,分数:15.00)7.说明设某单位 Acess 数据库中有一张员工信息表,其中记录了员工编号、姓名、性别等基本信息。下面的应用程序利用数据控件(Data)实现了对这张表中记录的增加、删除和修改操作。其运行界面如下:(分数:15.00)_正确答案:(Addhem(2)Delete(3)False(4)Update(5) ret=vbYes)解析:解析(1)组合列表框中的列表项是在窗体加载时添加的,其方法是调用组合框控件对象的 Addhe

    37、m 方法;(2)从数据集中删除记录应使用 Delete 方法;(3)若数据控件的 ReadOnly(只读)属性为真,则数据记录不可更改,因此此处取假值;(4)数据集的 Edit 方法用于对可更新的当前记录进行编辑修改。Update 方法则用于将修改的记录内容保存到数据库中。(5)询问窗口返回两种值,一是单击按钮“是(Y)”返回的 vbYes,二是单击按钮“否(N)”按钮返回的vbNo。选择前者将结束程序。八、试题八(总题数:1,分数:15.00)8.说明本程序的功能是给公司的员工 Tom,Jack,Green 增加薪水。三人的职位分别是 programmer, Manager,CEO。程序由

    38、6 个类组成:WorkerTest 是主类,programmer,Manager,CEO 三个类,薪水增加的规则是 programmer 的涨幅是 5%;Manager 的是 10%;CEO 也是 Manager,但是它除了有 Manager 的涨幅,还有1000 元的 bonus。接口 SalaryRaise 提供了一个增加薪水的方法 raise()。java 程序public class WorkerTest public WorkerTest( ) public static void main( String args) Programmer programmer = new Prog

    39、rammer( “Tom“ ,3000);Manager manager = new Manager( “Jack“ ,4000);CEO ceo = new CEO( “Green“ ,4000);Worker worker = new Worker3;programmer, raise( );manager, raise( );ceo. raise( );worker0 = programmer;worker 1 = manager;worker2 = ceo;for ( int i = 0 ;i worker, length; i + + ) System. out. prinfln (

    40、“ Name:“ + worker i. getName ( ) +“ / tSalary:“ + worker i. getSalary ();public interface SalaryRaise void raise( ); public class Worker public String name;public double (1) ;public Worker( ) public String getName( ) return name;public void setName( String name) this. name = name;public double getSa

    41、lary( ) return salary;public void setSalary(double salary) this. salary = salary; public class Programmer extends Worker implements (2) public Programmer( ) public void raise( ) double pets=0.05;double sala = this. getSalary( ) * (1 + pers);this. setSalary (sala);public Programmer( Siring name, doub

    42、le salary) tthis. name = name;this. salary = salary;public class Manager extends (3) implements SalaryRaise public Manager( ) public Manager(String name, double salary) this. name = name;this. salary = salary;public void raise( ) double pets = 0.1;double sala = this. getSalary() * (1 + pers);this. s

    43、etSalary(sala);public class CEO extends Manager implements SalaryRaise public CEO() public CEO( String name,double salary) this. name = name;this. salary = salary;public void raise( ) double bonus = 1000;(4) ;double sala = this. getSalary( );(5) ;this. setSalary(sala);(分数:15.00)_正确答案:(1)salary (2)SalaryRalse (3)Worker (4) super. raise() (5)sala+=bonus 及其等效形式)解析:(1)从 Worker 这个类的结构来看,它有两个属性 ufinle 和 salary,因此这里应该填 salary;(2)(3):很显然 Programmer 类和 Manager 类继承于 Worker 类和 SalaryRaise 接口。


    注意事项

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




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

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

    收起
    展开