[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷5及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷5及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷5及答案与解析.doc(12页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 5及答案与解析 1 阅读下列说明和流程图,将应填入 (n)处的语句写在对应栏内。【说明】 下列流程图用于从数组 K中找出一切满足: K(I)+K(J)=M的元素对 (K(I),K(J)(1IJN)。假定数组 K中的 N个不同的整数已按从小到大的顺序排列, M是给定的常数。 【流程图】 此流程图 1中,比较 “K(I)+K(J):M”最少执行次数约为(5)。 2 阅读下列函数说明和 C代码,把应填入其中 (n)处的字句写在答卷的对应栏内。 【函数 1.1说明】 函数 strcpy(char*to, char*from)将字符串 from复制到字
2、符串 to。 【函数 1.1】 void strcpy(char*to, char*from) while (1); 【函数 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 ,int n,int b ,int m,int * c) int i,j; for(i=j=0;i n ) *c+=ai bj?ai+:bj+; while(2)*c+=ai+; while(3)*c+=
3、bj+; 【函数 1.3说明】 递归函数 sum(int a, int n)的返回值是数组 a的前 n个元素之和。 【函数 1.3】 int sum(int a ,int n) if( n 0) return (4); else (5); 3 阅读下列函数说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 该程序运行后,输出下面的数字金字塔 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;
4、for( max = 1; max = 9; max + +) for(i=1;i =20-(1);+i) printf(“ “); for(next =(2);next =(3);next +) printf(“ %c“ ,next); for(next=(4);next =(5);next-) printf(“ %c“ ,next); printf(“ n“ ); 4 阅读下列函数说明和 C代码,将应填 入 (n)处的字句写在对应栏内。 【说明】 函数 diff的功能是:根据两个由整数 (都大于 -32768)按升序构成的单链表 L1和L2(分别由 A, B指向 )构造一个单链表 L3(由
5、 *r指向 ),要求 13中的所有整数都是L1,并且不是 L2中的整数,还要求 L3中的所有整数都两两不等。 【函数】 #include malloc. h typedef struct node int d; struct node * next Node; void diff(Node *A,Node * B,Node * * r) int lastnum; Node * p; *r = NULL; if( ! A) return; while(1) if(A- d B - d) lastnum =A - d; p= ( Node * ) malloc( sizeof(Node) ); p
6、- d = lastnum; p- next= *r;(2); do A = A - next; while(3); else if(A- d B- d) B=B- next; else (4); lastnum=A - d; while ( A while(A) lastnum=A- d; p=( Node * ) malloc( sizeof(Node) ); p- d = lastnum; (5); *r=p; while (A 5 阅读下列程序说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件
7、均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件名、文件长度和在合并文件中的位置 (偏移量 )。其结构为: typedef struct char fname 256 /*原始文件名 */ long length; /*原始文件长度 (字节数 )*/ long offset; /*原始文件在合并文件中的位置 (偏移量 )*/ FileInfo; 在合并文件最后存储如下一个特殊的标志信息作为合并文件的结束标记: FileInfo EndFlag=“Combined File“, 0, _offset; 其中 _offset是第一个原始文件的控制信
8、息在合并文件中的位置 (偏移量 )。 启动本程序的命令行的格式是: 程序名 合并文件名 原始文件名 如果不指定原始文件名,默认恢复合并文件中的所有原始文件。 程序中涉及的部分文件操作的库函数简要说明如下: int fread(void * buffer, int size, int count, FILE * fbin):从二进制文件流 fbin中读取 count块长度为 size字节的数据块到 buffer指向的存储区。返回值 为实际读取的数据块数。 int fwrite(void * buffer, int size, int count, FILE * fbin):各参数和返回值的意义与
9、 fread相同,但对文件进行写操作。 int fseek(FILE * fbin, long offset, int position):将文件流 fbin的读 /写位置以position为基准移动 offset字节。 position的值可以是 SEEK_SET(文件头 ),SEEK_CUR(当前位置 ), SEEK_END(文件尾 ); offset为正, 表示向文件尾方向移动,为负表示向文件头方向移动,为零表示到基准位置。 long ftell(FILE * fbin):返回文件流 fbin的当前读 /写位置 (相对于文件头的偏移量 )。上述偏移量均以字节为单位,即偏移字节数。 【程序
10、】 #include stdio. h #include string. h typedef struct char fname256;long lengt;long offset; Filelnfo; void copyfile( FILE*fin, FILE * fout,int fsize) char buf1024;int siz=1024; while(fsize !=0) /*每次复制 siz个字节,直至复制完 fsize个字节 */ if(siz fsize) (1); fread(buf,1,siz,fin); fwrite(buf,1,siz,fout); fsize=(2)
11、; int dofile(FILE * fin,Filelnfo * inp) long offset; FILE * fout; if ( fout = fopen ( inp - fname ,“wb“ )=NULL) printf(“创建文件错误 : %sn“ , inp - fname); return 1; offset=(3); /*保留合并文件读 /写位置 */ fseek(4); /*定位于被恢复文件首 */ copyfile ( fin, fout, inp - length); fclose(fout); printf(“n -文件名 : %n 文件长 : %ld. n“,
12、inp - fname, inp - length); (5); /*恢复合并文件读 /写位置 */ return 0; int main( int argc, char * argv ) Filelnfo finfo; char fname256 ;FILE * fcmbn; if(argc 2) printf(“输入合并文件名 :“ ) ;scanf(“%s“ ,fname); else strcpy(fname,argv1); if(fcmbn = fopen(fname,“rb“ ) = NULL) printf(“文件打开错误 : %sn“ ,fname);return 1; fse
13、ek(fcmbn, -sizeof(Filelnfo),SEEK_END); /*定位于合并文件末尾的标志信息*/ fread( if(finfo. length!=0|strcmp(finfo. fnane,“ CombinedFile“ ) printf(“指定的文件不是合法的合并文件 n“); fclose (fcmbn); return 2; fseek(fcmbn,finfo. offset,SEEK_SET); /*定位于首个原始文件的控制信息 */ for(;) /*恢复一个 (argc 2)或全部 (argc=2)原始文件 */ fread ( if(finfo, length
14、 =0) break; if (argc 2 if (dofile ( fcmbn, fcolse(fcmbn);return 0; 6 阅读以下说明及 Visual Basic程序代码,将应填入 (n)上处的字句写在对应栏内。说明 字符组合:程序界面如图示,在文本框 Text1中输入若干个任意字符,单击“颠倒 ”按钮,将这些字符按相反 的顺序显示在标签 Lable1 中,并在标签 Labs1 2处显示字符的个数。例如:输入 abcabc2,显示为 2cbabca,组成字符数为 4。 Visual Basic 代码 Private Sub cmdshow_ Click ( Dim n As I
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 答案 解析 DOC
