[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷37及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷37及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷37及答案与解析.doc(8页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 37及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1) (9),将解答填入对应栏内。 说明 假设数组 A中的各元素 A(1),A(2),A(M) 已经按从小到大排序 (M1);数组 B中的各元素 B(1),B(2),B(N) 也已经按从小到大排序 (N1)。执行下面的流程图后,可以将数组 A与数组 B中所有的元素全都存入数组 C中,且按从小到大排序(注意:序列中相同的数全部保留并不计排列顺序 )。例如,设数组 A中有元素:2,5,6,7,9;数组 B中 有元素: 2,3,4,7;则数组 C中将有元素: 2,2,3,4,5,6,
2、7,7,9。 流程图 2 阅读以下说明和 C程序,将应填入 (n)处的字句写在答题纸的对应栏内。 说明 下面的程序按照以下规则输出给定名词的复数形式: a若名词以 “y”结尾,则删除 y并添加 “ies”; b若名词以 “s”、 “ch”或 “sh”结尾,则添加 “es”; c其他所有情况,直接添加 “s”。 C语言程序 # include stdio.h # include string.h char *plural (char *word) int n; char *pstr; n=strlen(word); /*求给定单词的长度 */ pstr=(char *) malloc(n+3);
3、 /*申请给定单词的复数形式存储空间 */ if (!pstr|n 2) return NULL; strcpy (pstr,word);/*复制给定单词 */ if(1) pstrn-1 = i-; pstrn=e; pstrn+1=s;(2); else if(pstrn-1=s |pstrn-1=h pstrn+1=s; pstrn+2= 0; else pstrn=s; pstrn+1= 0; (4); main ( ) int i; char *ps; char wc910=“chair“, “dairy“, “boss“, “circus“, “fly“, “dog“, “chur
4、ch“, “clue“, “dish“); for(i=0; i 9; i+) ps=(5); printf(“%s: %s n“,wci,ps); /*输出单词及其复数形式 */ free (ps);/*释放空间 */ system (“pause“); 3 阅读以下说明和 C函数,将应填入 (n)处的字句写在对应栏内。 说明 若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对 m行 n列的稀疏矩阵 M,进行转置运算后得到 n行 m列的矩阵 MT,如图 3-1所示 为了压缩稀疏矩阵的存储空间,用三元组 (即元素所在的行号、列号和元素值、表示稀疏矩阵中的一个非零元素,再用一维数
5、组逐 行存储稀疏矩阵中的所有非零元素也称为三元组顺序表 )。例如,图 3-1所示的矩阵 M相应的三元组顺序表如表 3-1所示。其转置矩阵 MT的三元组顺序表如表 3-2所示。 函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵 M进行转置运算。 对 M实施转置运算时,为了将 M中的每个非零元素直接存入其转置矩阵MT三元组顺序表的相应位置,需先计算 M中每一列非零元素的数目 (即 MT中每一行非零元素的数目 ),并记录在向量 num中;然后根据以下关系,计算出矩阵 M中每列的第一个非零元素在转置矩阵 MT三元组顺序表中的位置: cpot0=0 cpotj
6、=cpotj-1+numj-1) /*j为列号 */ 类型 ElemType, Triple和 Matrix定义如下: typedef int ElemType; typedef struct /*三元组类型 */ int r,c; /*矩阵元素的行号、列号*/ ElemType e; /*矩阵元素的值 */ Triple; typedef struct /*矩阵的元组三元组顺序表存储结构 */ int rows,cols,elements; /*矩阵的行数、列数和非零元素数目 */ Triple dataMAXSIZE; Matrix; C语言函数 int TransposeMatrix(M
7、atrix M) int j,q,t; int *num, *cpot; Matrix MT; /*MT是 M的转置矩阵 */ num=(int*)malloc(M.cols*sizeof(int); cpot=(int*)malloc(M.cols*sizeof(int); if(!num |cpot) return ERROR; MT.rows=(1); /*设置转置矩阵 MT行数、列数和非零元素数目*/ MT.cols=(2); MT.elements=M.elements; if(M.elements 0) for (q=0 ; q M. cols ; q+) numq=0; for
8、(t=0; t M.elements;+t) /*计算矩阵 M中每一列非零元素数目 */ num M.datat.c+; /*计算矩阵 M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置 */ (3); for(j=1;j M.cols;j+) cpotj=(4); /*以下代码完成转置矩阵 MT三元组顺序表元素的设置 */ for(t=0;t M.elements;t+) j=(5); /*取矩阵 M的一个非零元素的列号存入 j*/ /*q为该非零元素在转置矩阵 MT三元组顺序表中的位置 (下标 )*/ q=cpotj; MT.dataq.r=M.datat.c; MT.dataq.c=
9、M.datat.r; MT.dataq.e=M.datat.e; +cpotj; /*计算 M中第 j列的下一个非零元素的目的位置*/ /*for*/ /*if*/ free(num); free(cpot); /*此处输出矩阵元素,代码省略 */ return OK; /*TransposeMatrix*/ 4 阅读以下说明和 C语言函数,将应填入 (n)处的字句写在答题纸的对应栏内。 说明 假设一个剧场有 N*N个座位,顾客买票时可以提出任意有效的座号请求。下面用二维数组 aNN模拟剧场中的座位, aij等于 0表示第 i排第 j列 (0i,jN-1)的票尚未售出。 函数 int Find
10、(intaN,int R,int *row, int *col)的功能是:在部分票已售出的情况下,找出剧场中的 R*R个空座位,要求这些座位的排列形成一个正方形。若找到满足要求的一个座位排列,则函数返回 1,并算出该正方形左上角的行、列号;若未找到,则返回 0。 例如,一个 77个座位的剧场如下图 (a)所示,已售出部分座位的剧场如下图 (b)所示,图中阴影部分表示已售出的座位,从图 (b)中找出的 33正方形空座位如图 (c)中斜线区所示。 C语言函数 int Find(int aN,int R,int *row,int *col) int i,j,k,c,t; int FOUND=0; f
11、or(i=0; !FOUND i+) /*从第 0排开始查找 */ (1); while(j N-R+1 (2) k+); /*查找第 i排连续的 R个座位 */ if(k =R) /*找到第 i排连续的 R个空座位 */ for(c=0;c R;c+) /*查找其余的 R*(R-1)个座位 */ for(t=1;t R;t+) if(a(3)j+c!=0)break; if(t R)break; /*for*/ if(4)FOUND=1; /*if*/ (5); /*while*/ /*for i*/ if(FOUND) *row=i-1; *col=j-1; /*计算正方形区域的左上角坐标
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 37 答案 解析 DOC
