【计算机类职业资格】初级程序员下午试题-8及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-8及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-8及答案解析.doc(7页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-8 及答案解析(总分:120.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【函数 1.1 说明】 函数 strcpy(char*to,char*from)将字符串 from 复制到字符串 to。 【函数 1.1】 void strcpy(char*to,char*from) while (U (1) /U); 【函数 1.2 说明】 函数 merge(int a,int n,int b,int m,int*c)是将两个从小到大有序数组 a 和 b 复制合并出一个有序整数序列c,其中形参 n 和 m 分别是数组 a 和 b 的元素个数。 【
2、函数 1.2】 void merge(int a ,int n,int b ,int m,int * c) int i,j; for(i=j=0;in ) *c+=ai bj?ai+:bj+; while(U (2) /U)*c+=ai+; while(U (3) /U)*c+=bj+; 【函数 1.3 说明】 递归函数 sum(int a,int n)的返回值是数组 a的前 n 个元素之和。 【函数 1.3】 int sum(int a ,int n) if( n 0) return U(4) /U; else U(5) /U; (分数:15.00)_二、B试题二/B(总题数:1,分数:15
3、.00)2.【说明】 该程序运行后,输出下面的数字金字塔 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 【程序】 #include stdio. h main ( ) char max, next; int i; for( max = 1; max = 9; max + +) for(i=1;i=20-U (1) /U;+i) printf(“ “); for(next = U(2) /U;next = U(3) /U;next +) printf(“ %c“ ,next); for(next=U (4) /
4、U;next=U (5) /U;next-) printf(“ %c“ ,next); printf(“ /n“ ); (分数:15.00)_三、B试题三/B(总题数:1,分数:15.00)3.【说明】 函数 diff 的功能是:根据两个由整数(都大于-32768)按升序构成的单链表 L1 和 L2(分别由A,B 指向)构造一个单链表 L3(由*r 指向),要求 13 中的所有整数都是 L1,并且不是 L2 中的整数,还要求 L3 中的所有整数都两两不等。 【函数】 #include malloc. h typedef struct node int d; struct node * next
5、 Node; void diff(Node *A,Node * B,Node * * r) int lastnum; Node * p; *r = NULL; if( ! A) return; while(U (1) /U) if(A-d B -d) lastnum =A - d; p= ( Node * ) malloc( sizeof(Node) ); p-d = lastnum; p-next= *r; U(2) /U; do A = A - next; while(U (3) /U); else if(A-d B-d) B=B- next; else U (4) /U; lastnum
6、=A - d; while ( A while(A) lastnum=A-d; p=( Node * ) malloc( sizeof(Node) ); p- d = lastnum; U (5) /U; *r=p; while (A (分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)4.【说明】 本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件名、文件长度和在合并文件中的位置(偏移量)。其结构为: typedef struct char fnam
7、e 256 /*原始文件名*/ long length; /*原始文件长度(字节数)*/ long offset; /*原始文件在合并文件中的位置(偏移量)*/ FileInfo; 在合并文件最后存储如下一个特殊的标志信息作为合并文件的结束标记: FileInfo EndFlag=“Combined File“,0,_offset; 其中_offset 是第一个原始文件的控制信息在合并文件中的位置(偏移量)。 启动本程序的命令行的格式是: 程序名 合并文件名 原始文件名 如果不指定原始文件名,默认恢复合并文件中的所有原始文件。 程序中涉及的部分文件操作的库函数简要说明如下: int fread
8、(void * buffer,int size,int count,FILE * fbin):从二进制文件流 fbin 中读取 count 块长度为 size 字节的数据块到 buffer 指向的存储区。返回值为实际读取的数据块数。 int fwrite(void * buffer,int size,int count,FILE * fbin):各参数和返回值的意义与 fread 相同,但对文件进行写操作。 int fseek(FILE * fbin,long offset,int position):将文件流 fbin 的读/写位置以 position 为基准移动 offset 字节。pos
9、ition 的值可以是 SEEK_SET(文件头),SEEK_CUR(当前位置),SEEK_END(文件尾);offset 为正,表示向文件尾方向移动,为负表示向文件头方向移动,为零表示到基准位置。 long ftell(FILE * fbin):返回文件流 fbin 的当前读/写位置(相对于文件头的偏移量)。上述偏移量均以字节为单位,即偏移字节数。 【程序】 #include stdio. h #include string. h typedef struct char fname256;long lengt;long offset; Filelnfo; void copyfile( FIL
10、E*fin, FILE * fout,int fsize) char buf1024;int siz=1024; while(fsize !=0) /*每次复制 siz 个字节,直至复制完 fsize 个字节*/ if(siz fsize)U (1) /U; fread(buf,1,siz,fin); fwrite(buf,1,siz,fout); fsize=U (2) /U; int dofile(FILE * fin,Filelnfo * inp) long offset; FILE * fout; if ( fout = fopen ( inp - fname ,“wb“ )=NULL
11、) printf(“创建文件错误: %s/n“ , inp - fname); return 1; offset= U(3) /U; /*保留合并文件读/写位置*/ fseek(U (4) /U); /*定位于被恢复文件首*/ copyfile ( fin, fout, inp - length); fclose(fout); printf(“/n -文件名: %/n 文件长: %ld. /n“,inp - fname, inp - length); U(5) /U; /*恢复合并文件读/写位置*/ return 0; int main( int argc, char * argv ) Fil
12、elnfo finfo; char fname256 ;FILE * fcmbn; if(argc 2) printf(“输入合并文件名:“ ) ;scanf(“%s“ ,fname); else strcpy(fname,argv1); if(fcmbn = fopen(fname,“rb“ ) = NULL) printf(“文件打开错误: %s/n“ ,fname);return 1; fseek(fcmbn, -sizeof(Filelnfo),SEEK_END); /*定位于合并文件末尾的标志信息*/ fread( if(finfo. length!=0|strcmp(finfo.
13、fnane,“ CombinedFile“ ) printf(“指定的文件不是合法的合并文件/n“); fclose (fcmbn); return 2; fseek(fcmbn,finfo. offset,SEEK_SET); /*定位于首个原始文件的控制信息*/ for(;) /*恢复一个(argc2)或全部(argc=2)原始文件*/ fread ( if(finfo, length =0) break; if (argc 2 if (dofile ( fcmbn, fcolse(fcmbn);return 0; (分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)5.
14、【说明】本应用程序的运行窗口如图 2 所示。(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)6.【说明】 单击窗体上的“测试”(cmdTest)按钮,出现一个输入框,要求输入一串字符,将该字符串中的非字母字符删除后,显示在窗体中的一个文本框(txtShow)中。 【程序代码】 Private Sub cmdTest_Click( ) Dim strT1 ,strT2 As String Dim strCh As U(1) /U Dim intL As Integer Dim intl As Integer strT1 = U(2) /U(“请输入一串字符“,“字符串输入“
15、) intL = U(3) /U strT2 = “ “ For intl = I To intL strCh = Mid ( strT1, intl, 1 ) If(strCh“A“AndU (4) /U) Or (strCh “a“ And suCh “z“ )Then strT2 = strT2 + strCh End If Next intl txtShow. Text= U(5) /U End sub(分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)7.【说明】 以下程序的功能是设计一个栈类 stackT,并建立一个整数栈。 【程序】 #include iostr
16、eam. h #include stdlib. h const int Max =20; /栈大小 template class T class stack /栈元素数组 T sMax; /栈顶下标 int top; public: stack( ) top =-1; /栈顶初始化为-1 void push( const T /item 入栈 T pop( ); /出栈 int stackempty( ) const; /判断栈是否为 ; template class T void stack T :push(const T exit(1); top + stop = item; templa
17、te class T T stackT :pop() T temp; if(top=U (2) /U) cout “栈为空,不能出栈操作“ endl; exit(1); temp =stop; top -; return temp; template class T int stack T : stackempty( ) const return top = -1; void main( ) stack int st; int a =1,2,3,4,5; cout “整数栈“ endl; cout “入栈序列:“ endl; for(int i=0;i4;i +) cout ai “ “; U
18、 (3) /U; cout endl “出栈序列“; while(U (4) /U) toutU (5) /U“ “; cout endl; (分数:15.00)_八、B试题八/B(总题数:1,分数:15.00)8.【说明】 下面的程序是从命令行输入 3 个数传递到 public static void main(String args)方法中 (如 java IsTriangle 3 4 5),并判断这 3 个数能否构成三角形的 3 条边,并显示相应的结果。请在程序的每条横线处填入适当的语句,使程序的功能完整。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句
19、。 public class IsTriangle public static void main( String args ) int a =new U(1) /Uargs. U(2) /U; for(int i=0;i3; U(3) /U) ai= U(4) /U if(U (5) /U) System. out. println(a0 +“,“+a1 +“,“+a2“能构成三角形的 3 条边“); else System. out. println(a0 +“,“+a1 +“,“+a2“不能构成三角形的 3 条边); (分数:15.00)_初级程序员下午试题-8 答案解析(总分:120.
20、00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【函数 1.1 说明】 函数 strcpy(char*to,char*from)将字符串 from 复制到字符串 to。 【函数 1.1】 void strcpy(char*to,char*from) while (U (1) /U); 【函数 1.2 说明】 函数 merge(int a,int n,int b,int m,int*c)是将两个从小到大有序数组 a 和 b 复制合并出一个有序整数序列c,其中形参 n 和 m 分别是数组 a 和 b 的元素个数。 【函数 1.2】 void merge(int a
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 答案 解析 DOC
