[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷21及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷21及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷21及答案与解析.doc(21页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 21及答案与解析 1 阅读以下函数说明和 C程序,将 C程序中 (1) (6)空缺处的语句补充完整。 【说明】 喜迎 2008年北京奥运会 !以下【 C程序】能将一个给定汉字 (例如,奥运会的“会 ”字 )的点阵逆时针旋转 90,并输出旋转前后的点阵数据及字形。 图 1-15是汉字 “会 ”字的 1616点阵字形,用数字 0表示空白位置,用数字 1表示非空白位置,“会 ”字的第 1行即可表示成如下的 0, 1序列: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 如果把它 看做一个字的 16个位, “会 ”字的第 1行可以用十
2、六进制数 0100来表示。同理, “会 ”字的第 2行可以用十六进制数 0240表示,第 3行可以用十六进制数 0420表示 依此类推,用 16个双字节整型数即可存放一个汉字点阵字形。 “会 ”字的点阵数据及字形如图 1-15的左半部分所示。 将一个汉字逆时针旋转 90,就是把该汉字点阵的最右列作为旋转后新点阵的第 1行,次最右列作为旋转后新点阵的第2行 依此类推来形成一个旋转后的点阵字形。图 1-15的右半部分就是将 “会 ”字逆时针旋转 90后的点阵数据和字形 (提示:读者可将书本顺时 针旋转 90,以查看旋转 90后的点阵字形 )。 在【 C程序】中,数组 old存放着 “会 ”字的 1
3、6个双字节整型点阵数据。函数 turnleft能将该点阵数据逆时针旋转 90,旋转后的点阵数据存放在数组 new中。函数 display能将旋转前后的点阵数据加以编辑,用字符 “.”表示值为 0的位,用字符 “x”表示值为 1的位,从而将旋转前后的点阵按行输出其十六进制的数据和字形,如图 1-15所示。 【 C程序】#include stdio.h #define EMPTY .#define NONEMPTY x#define LEFT 0#define RIGHT 1main () static unsigned old16= 0x0100,0x0240,0x0420,0x0810,0x1
4、004,0x23c2, 0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800, 0xl000,0x2004,0x7ffe,0x0001 ; unsigned new16; turnleft (old, new); display (old,new);turnleft (old,new)unsigned old,new; int row, k; for (row=0;row 16;row+) for (1);k 16;k+) newrow|=(oldk (2)display (old, new)unsigned *old,*new; char out2 17,let
5、ter2; int row, col; letterO = EMPTY; letter1 = NONEMPTY; outLEFT 16=outRIGHT 16=(4); for (row = 0;row 16;row+,old+,new+) for (col = 0;co1 16;+col) outLEFT col = letter (5) outRIGHT col = letter (6) printf(“n %4x %s“,*old, printf(“%4x %s“,*new, 2 阅读以下应用程序说 明和 C程序,将 C程序段中 (1) (7)空缺处的语句填写完整。 【说明】 以下【 C
6、程序】能将自然数 1, 2, , N2按蛇形方式逐个存入 N阶矩阵。换言之,程序从 anO开始到 aOn。为止 (n=N-1)顺序填入自然数,交替地对每一斜列从左上元素向右下元素或从右下元素向左上元素存数。 例如,当 N=5时,程序输出结果如图 2-12所示;当 N=8时,程序输出结果如图 2-13所示。 【 C程序】 #include stdio.h #define SIZE 10int aSIZESIZE, k;main() int i, j, n, N; for (N = 3; N =SIZE; N+) k = 1; makeArray (n = N-1); printf (“nN =
7、%d;n“, n+1); for (i = 0; i =n; i+) for (j = 0; j =n; j+) printf(“%4d“, ai j); printf (“n“); makeline (int row_start, int col_start, int row end) /*完成矩阵一条斜线的整数 填写 */ int i, j, sign =(1); for (i = row_start, j = col start;(2); i += sign, j += sign) ai j = k+;makeArray (int n) /*完成矩阵每条斜线的整数填写 */ int d;
8、 for (d = 1; d =(3); d+) if (d = n) if (d%2) makeline (4); else makeline (5); else if (d%2) makeline (6); else makeline (7); 3 阅读以下应用程序说明和 C程序,将 C程序段中 (1) (7)空缺处的语句填写完整。 【说明】 某超市集团为发展业务向社会公开招聘 N个工种的工作人员,每个工种各有不同的编号 (1至 M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该集团公司将按应聘者的成绩从高分至低分的顺序进行排队录取。具体录取原则是:从高分到低分依次对每
9、位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去 5分后,重新排队,并按其第二志愿录 取。 以下 C程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都作了录取处理后跳出。 C程序中,类型 STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组 rzl)的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。 【 C程序】 #include #define N 36 #define EDMARK 5 typedef struct stu int no, total, z2, sortm,
10、zi; struct stu *next; STU; struct rznode int lmt, count; STU *next; rz N; STU *head = NULL, *over = NULL; int all FILE *fp; char dataf = “zp2008.dat“ ; print(STU *p) for (;p!=NULL; p = p- next) printf( “%d(%d) t“ , p- no, p- total insert(STU *p, STU *u) STU *v, *q; for (q = *p;q != NULL; v = q , (1)
11、 ) if (q- sortm u- sortm) break; if ( q = *p) (2); else (3); u- next = q ; main ( ) int zn, i, no, total, zl, z2 ; STU *p, *v, *q; fp = fopen(dataf, “r“ ); if (fp = NULL) printf (“Cant open file %s.kn“ ,dataf); exit (0); fscanf (fp, “%d“ , for (all = 0, i = 1; i = zn; i+) fscanf (fp, “%d“, rzi.count
12、 = 0; rzi.next = NULL; all +=(4); for (;) if ( fscanf(fp, “%d%d%d%d“ , p = ( STU *) malloc (sizeof (STU); p- no = no; p- total = p- sortm = total; p- zi = 0; p- z0 = z1; p- z1 = z2; (5); fclose (fp); for (;all ) p = head; head = head- next; if (rzp- zp- zi.count (6) rzp- zp- zi.count +; insert( all-
13、; continue; if (p- zi = 1 ) p- next = over; over = p; continue; p- sortm -= DEMARK; (7); insert( for (i = 1; i = zn; i+ ) printf(“%d:n“ ,i); print( rzi .next); printf(“ n“); printf( “over:n“ ); print(head); print(over); printf(“ n“); 4 阅读以下程序说明和 C程序,将程序段中 (1) (7)空缺处的语句填写完整。 【说明】 【 C程序 1】用回 溯算法来产生由 0
14、或 1组成的 2m个二进位串,使该串满足以下要求。 视串为首尾相连的环,则由 m位二进制数字组成的 2m个子序列,每个可能的子序列都互不相同。例如,如果 m=3,在串 11101000首尾相连构成的环中,由 3位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是 111, 110, 101, 010, 100, 000, 001, 011,如图 2-14所示。 【 C程序 2】是求 “背包问题 ”的一组解的递归算法程序。 “背包问题 ”的基本描述是:有一个背包,能盛放的物品总重量为S,设有 N件物品,其重量分别为 W1, W2, , Wn,希望从 N件物品中选择若干件物品,所选物
15、品的重量之和恰能放入该背包,即所选物品的重量之和等于 S。【 C程序 1】 #define N 1024#define M 10int b N+M-1int equal(int k, int j int m) int i; for(i=0; i m; i+ if ( b k + i (1) ) return 0; return 1; int exchange (int k, int m, int v) while ( b k + m - 1 ) = v ) b kncm-i=! v (2); (3)=v; return k;init ( iht v) int k for( k = 0;K =
16、N + M - 1;k+) bk = v;main ( ) int m, v, k, n, j; printf (Enter m (lm 10) , v v=0, v=1) n“) ; scanf (“ %d%d , n = 0x01 m; init (!v); k=0; while(4) n) for (j=0;j k;j+) if (equal (k, j, m) k=exchange (k, m, v) j=(5); for (k= 0 ;k n ;k+ ) print (“ %d n“ , bk) ; 【 C程序 2】 #include stdio. h #define N 7#def
17、ine S 15int wN+1 = 0, 1, 4, 3, 4, 5, 2, 7;int knap (int S, int n) if (S = 0) return 1; if (s 0 | (s 0 if (6) printf( “4d“, wn); return 1; return (7) main ( ) if (knap (S, N) printf(“OK:n“); else printf(“NO!n“) 5 阅读以下关于某绘图系统的技术说明、部分 UML类图及 Visual Basic程序,将Visual Basic程序中 (1) (6)空缺处的语句填写完整。 【说明】 某绘图系统
18、定义了一个抽象类 Ishape,现有 3个类 Cpoint, CLine和 Ccircle,它们都具有 IShape界面。相应的类图关系如图 5-11所示。 已知某第三方库已经提供了 XCircle类,且完全满足 CCircle图元显示时所需的功能。【 Visual Basic代码 6-1】是抽象类 IShape类模块内容。【 Visual Basic代码 6-2】实现了类 CCircle的 IShape界面,并使用了 XCircle提供的显示功能。 XCircle提供的显示功能方法接口为 displayIt。 【 Visual Basic代码 6-1】 Publie Color As Lon
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 21 答案 解析 DOC
