【计算机类职业资格】初级程序员下午试题-24及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-24及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-24及答案解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
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)(
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 24 答案 解析 DOC
