全国计算机技术与软件专业技术资格(水平)考试



Similar documents
FY.DOC

Microsoft Word - 第3章.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

新・解きながら学ぶJava

untitled

./

chp6.ppt

Java

四川省普通高等学校

Microsoft Word - 01.DOC

Microsoft Word - 小心翼翼的二十一點N.doc

《大话设计模式》第一章

Strings

2010年3月计算机等级考试四级网络工程师笔试

循经指压疗法

Microsoft Word - HERBRECIPES《中國藥膳》.doc

毛主席的猪



附件1.FIT)

新版 明解C++入門編

提问袁小兵:

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

C/C++ - 文件IO

新版 明解C言語入門編

<4D F736F F D20B3CCD0F2D4B12DC9CFCEE7CCE2A3AD3037C9CF>

新・解きながら学ぶC言語

CC213

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

untitled

新・明解C言語入門編『索引』

C/C++程序设计 - 字符串与格式化输入/输出

## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / / $ # ( * *..# 4 #$ 3 ( 5 ) ### 4 $ # 5, $ ## # 4 $# 5 ( %

软件设计师

Microsoft Word - 變形記

!

Microsoft Word - [术数]《八卦象数与疾病预测》黄鉴.doc

!

第 一 章 : 從 中 共 解 放 軍 投 奔 藏 軍 棄 家 從 軍 我 原 名 姜 華 亭, 藏 名 羅 桑 扎 西, 家 在 中 國 山 東 省 萊 陽 縣 九 區 孟 格 莊 村, 父 親 叫 姜 昆, 母 親 叫 李 秀 芳 家 中 以 務 農 為 業 解 放 前 後, 父 親 曾 在 三


Microsoft Word - 成长的痕迹散文集.docx

Microsoft Word - 席慕容散文集.doc

<4D F736F F D20D6D0B9FABDDAC8D5CEC4BBAF2DB5BECCEF2E646F63>

七 以 自 然 風 光 為 紋 飾 第 六 章 中 國 歷 代 民 間 藏 瓷 鑒 定 術 語 第 七 章 中 國 古 瓷 文 獻 選 一 窯 器 說 ( 清 ) 程 哲 著 二 景 德 鎮 陶 歌 序 言 我 與 春 恩 先 生 相 識 經 年, 且 為 同 好, 瓷 道 摯 友 春 恩 為 人

untitled

_汪_文前新ok[3.1].doc

(\244j\257d\276\307\274\351_ C.indd_70%.pdf)

目 录 1 国 务 院 中 央 军 委 关 于 建 立 和 完 善 军 民 结 合 寓 军 于 民 武 器 装 备 科 研 生 产 体 系 的 若 干 意 见 2 国 务 院 关 于 鼓 励 和 引 导 民 间 投 资 健 康 发 展 的 若 干 意 见 >> 国 防 科 工

.' 6! "! 6 "'' 6 7% $! 7%/'& 人 类 非 洲 锥 虫 病 又 称 昏 睡 病 是 布 氏 锥 虫 冈 比 亚 亚 种!! 或 布 氏 锥 虫 罗 得 西 亚 种 "#$$ %! &'!!! 感 染 引 起 的 一 种 寄 生 虫 病 以 采 采 蝇! 为 传 播 ' 媒

一 耀 州 青 瓷 的 裝 飾 手 法 與 紋 飾 種 類 耀 州 窯 的 裝 飾 紋 樣, 豐 富 多 變, 而 且 題 材 內 容 廣 泛, 組 合 形 式 多 樣, 圖 案 形 象 優 美, 令 人 賞 心 悅 目, 並 且 反 映 了 當 時 社 會 的 審 美 趣 味 和 理 想 裝 飾

Microsoft Word - 國文.doc

Microsoft Word - CPE考生使用手冊 docx

Transcription:

全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 )

试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明 ] 假 设 数 组 A 中 的 各 元 素 A(1),A(2),,A(M) 已 经 按 从 小 到 大 排 序 (M 1); 数 组 B 中 的 各 元 素 B(1),B(2),,B(N) 也 已 经 按 从 小 到 大 排 序 (N 1) 执 行 下 面 的 流 程 图 后, 可 以 将 数 组 A 与 数 组 B 中 所 有 的 元 素 全 都 存 入 数 组 C 中, 且 按 从 小 到 大 排 序 ( 注 意 : 序 列 中 相 同 的 数 全 部 保 留 并 不 计 排 列 顺 序 ) 例 如, 设 数 组 A 中 有 元 素 :2,5,6, 7,9; 数 组 B 中 有 元 素 :2,3,4,7; 则 数 组 C 中 将 有 元 素 :2,2,3,4,5,6,7,7, 9 [ 流 程 图 ] 开 始 (1) i, j, k A(i) : B(j) > (2) C(k) i + 1 i k + 1 k (3) C(k) j + 1 j k + 1 k N (4) > M? (5) > N? N Y (6) C(k) j + 1 j k + 1 k Y (7) C(k) i + 1 i k + 1 k N (8) > N? (9) > M? N Y Y 结 束

试 题 二 ( 共 15 分 ) [ 说 明 ] 阅 读 以 下 说 明 和 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); /* 申 请 给 定 单 词 的 复 数 形 式 存 储 空 间 */ if (!pstr n < 2) return NULL; strcpy(pstr,word); /* 复 制 给 定 单 词 */ if ( (1) ) { pstr[n-1] = 'i'; pstr[n] = 'e'; pstr[n+1] = 's'; (2) ; else if(pstr[n-1]=='s' pstr[n-1]== 'h' && ( (3) )) { pstr[n] = 'e'; pstr[n+1] = 's'; pstr[n+2] = '\0'; else { pstr[n] = 's'; pstr[n+1] = '\0'; (4) ; main( ) { int i; char *ps; char wc[9][10] = {"chair","dairy","boss","circus","fly","dog","church","clue","dish"; for(i = 0; i < 9; i++) { ps = (5) ; printf("%s: %s\n",wc[i],ps); /* 输 出 单 词 及 其 复 数 形 式 */ free(ps); /* 释 放 空 间 */ system("pause");

试 题 三 ( 共 15 分 ) 阅 读 以 下 说 明 和 C 程 序, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 [ 说 明 ] 下 面 的 程 序 用 Dole Rob 算 法 生 成 N 阶 (N 为 奇 数 ) 魔 方 阵 ( 各 行 列 对 角 线 数 字 之 和 相 等 ) 该 算 法 的 过 程 为 : 从 1 开 始, 按 如 下 方 法 依 次 插 入 各 自 然 数, 直 到 N 2 为 止 : a. 在 第 一 行 的 正 中 插 入 1; b. 新 位 置 应 当 处 于 最 近 插 入 位 置 的 右 上 方, 若 该 位 置 已 超 出 方 阵 的 上 边 界, 则 新 位 置 取 应 选 列 的 最 下 一 个 位 置 ; 若 超 出 右 边 界, 则 新 位 置 取 应 选 行 的 最 左 一 个 位 置 ; c. 若 最 近 插 入 的 元 素 是 N 的 整 数 倍, 则 选 同 列 的 下 一 行 位 置 为 新 位 置 例 如,3 阶 魔 方 阵 如 下 所 示 : 8 1 6 3 5 7 4 9 2 [C 程 序 ] #include <stdio.h> #include <stdlib.h> #define SIZE 50 main( ) { int row, col, n, value; int a[size+1][size+1]; /* 不 使 用 下 标 为 0 的 元 素 */ printf(" 请 输 入 要 输 出 魔 方 阵 的 阶 数 n( 奇 数, <%d):n=", SIZE); scanf("%d",&n); if (!(n % 2) n < 1 (1) ) { printf(" 输 入 数 据 有 误!\n"); exit(0); row = 1; col = (n+1)/2; value = 1; while(value <= (2) ) { a[row][col] = value; /* 计 算 下 一 位 置 */ if(value%n!= 0){ row--; (3) ; if(row < 1) row = n; if(col > n) (4) ; else row++; value = (5) ; printf("\n%d 阶 魔 方 阵 如 下 所 示 :\n\n",n); for(row = 1; row <= n; row++){ for(col = 1; col <= n; col++) printf("%5d",a[row][col]); printf("\n");

试 题 四 ( 共 15 分 ) 阅 读 以 下 说 明 和 C 函 数, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 [ 说 明 ] 计 算 机 在 处 理 算 术 表 达 式 时, 首 先 将 其 转 换 为 后 缀 表 达 式 例 如, 表 达 式 46+5*(120-37) 的 后 缀 表 达 式 形 式 为 46 5 120 37 - * + 计 算 后 缀 表 达 式 时, 从 左 至 右 扫 描 后 缀 表 达 式 : 若 遇 到 运 算 对 象, 则 压 入 栈 中 ; 遇 到 运 算 符, 则 从 栈 中 弹 出 相 关 运 算 对 象 进 行 计 算, 并 将 运 算 结 果 压 入 栈 中, 重 复 以 上 过 程, 直 到 后 缀 表 达 式 扫 描 结 束 例 如, 后 缀 表 达 式 46 5 120 37 - * + 的 计 算 过 程 为 : a. 依 次 将 46 5 120 37 压 入 栈 中 ; b. 遇 到 -, 取 出 37 120, 计 算 120 37, 得 83, 将 其 压 入 栈 中 ; c. 遇 到 *, 取 出 83 5, 计 算 5*83, 得 415, 将 其 压 入 栈 中 ; d. 遇 到 +, 取 出 415 46, 计 算 46+415, 得 461, 将 其 压 入 栈 中 ; e. 表 达 式 结 束, 则 计 算 过 程 完 成 函 数 computing(char expr[],int *result) 的 功 能 是 基 于 栈 计 算 后 缀 形 式 的 表 达 式 ( 以 串 形 式 存 入 字 符 数 组 expr) 的 值, 并 通 过 参 数 result 返 回 该 值 函 数 的 返 回 值 为 -1/0 分 别 表 示 表 达 式 有 / 无 错 误 假 设 表 达 式 中 仅 包 含 数 字 空 格 和 算 术 运 算 符 号, 其 中 所 有 项 均 以 空 格 分 隔, 且 运 算 符 仅 包 含 加 ( + ) 减 ( - ) 乘 ( * ) 除 ( \ ) 函 数 computing 中 所 用 栈 的 基 本 操 作 的 函 数 原 型 说 明 如 下 : void InitStack(STACK *s): 初 始 化 栈 void Push(STACK *s, int e): 将 一 个 整 数 压 栈, 栈 中 元 素 数 目 增 1 void Pop(STACK *s): 栈 顶 元 素 出 栈, 栈 中 元 素 数 目 减 1 int Top(STACK s): 返 回 非 空 栈 的 栈 顶 元 素 值, 栈 中 元 素 数 目 不 变 int IsEmpty(STACK s): 若 s 是 空 栈, 则 返 回 1 否 则 返 回 0 [C 函 数 ] int computing(char expr[], int *result) { STACK s; int tnum, a,b; char *ptr; InitStack(&s); ptr = expr; /* 字 符 指 针 指 向 后 缀 表 达 式 串 的 第 一 个 字 符 */ while (*ptr!='\0') { if (*ptr==' ') { /* 当 前 字 符 是 空 格 */ (1) ; /* 字 符 指 针 指 向 下 一 字 符 */ continue; else

if (isdigit(*ptr)) { /* 当 前 字 符 是 数 字, 则 将 该 数 字 开 始 的 数 字 串 转 换 为 数 值 */ tnum = (2) ; while (*ptr>= 0 && *ptr <= 9 ) { tnum = tnum * 10 + (3) ; ptr++; Push( (4) ); else /* 当 前 字 符 是 运 算 符 或 其 他 符 号 */ if (*ptr=='+' *ptr=='-' *ptr =='*' *ptr =='/'){ if (!IsEmpty(s)) { a = Top(s); Pop(&s); /* 取 运 算 符 的 第 二 个 运 算 数 */ if (!IsEmpty(s)) { b = Top(s); Pop(&s); /* 取 运 算 符 的 第 一 个 运 算 数 */ else return -1; else return -1; switch (*ptr) { case '+': Push(&s,b+a); break; case '-': Push(&s,b-a); break; case '*': Push(&s,b*a); break; case '/': Push(&s,b/a); break; else return -1; ptr++; /* 字 符 指 针 指 向 下 一 字 符 */ /* while */ if (IsEmpty(s)) return -1; else { (5) = Top(s); Pop(&s); /* 取 运 算 结 果 */ if (!IsEmpty(s)) return -1; return 0;

从 下 列 3 道 试 题 ( 试 题 五 至 试 题 七 ) 中 任 选 1 道 解 答 如 果 解 答 的 试 题 数 超 过 1 道, 则 题 号 小 的 1 道 解 答 有 效 试 题 五 ( 共 15 分 ) 阅 读 下 列 说 明 图 和 C++ 代 码, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 [ 说 明 ] 已 知 对 某 载 客 车 辆 (Car) 进 行 类 建 模, 如 图 5-1 所 示, 其 中 类 Engine 表 示 发 动 机 引 擎, 类 Wheel 表 示 车 轮, 类 Body 表 示 车 身, 类 Driver 表 示 司 机, 类 Passenger 表 示 乘 客 图 5-1 类 图 [C++ 代 码 ] const int (1) = 7; // 定 义 最 多 载 客 数 const int MAX_WHEELS = 5; // 定 义 最 多 轮 胎 数 class Body{ // 此 处 代 码 省 略 ; // 车 身 类 class Passenger{ // 此 处 代 码 省 略 ; // 乘 客 类 class Wheel{ // 此 处 代 码 省 略 ; // 车 轮 类 class Driver{ // 司 机 类 public: string name; // 表 示 第 几 路 公 交 车 司 机 Driver(string dr ivername):name( (2) ; ){; // 构 造 函 数 class Engine{ // 引 擎 类 public: string engineno; // 引 擎 编 号 Engine( string engineno){ (3) ; ->engineno = engineno; // 构 造 函 数

class Car{ // 汽 车 类 protected: Engine * engine; Driver * driver; Body body; Wheel * wheels[max_wheels]; Passenger * passengers[max_passengers]; public: Car(Driver *driver){ // 构 造 函 数 this->driver = driver; engine = new Engine("TX6536 型 号 引 擎 "); for (int index = 0; index < MAX_WHEELS; index++){ wheels[index] = new Wheel(); for (int index = 0; index < MAX_PASSENGERS; index++){ passengers[index] = NULL; virtual ~Car(){ // 析 构 函 数 for (int index=0; index < MAX_WHEELS; index++) delete wheels[index]; delete (4) ; int getpassengernumber(){ // 获 取 车 上 乘 客 数 量 // 此 处 代 码 省 略 void getonpassenger(passenger * apassenger ){ // 乘 客 上 车 // 此 处 代 码 省 略 void run(){ // 开 车 if(driver == NULL){ cout << " 司 机 尚 未 上 车!"; return; // 此 处 代 码 省 略 ; vo id main(){ Driver driver(" 第 五 路 公 交 车 司 机 "); Car car( (5) ); Passenger passengers[max_passengers]; for ( int index = 0 ; index < MAX_PASSENGERS; index ++) // 乘 客 上 车 处 理 car.getonpassenger(&passengers[index]); car.run();

试 题 六 ( 共 15 分 ) 阅 读 以 下 应 用 说 明 以 及 Visual Basic 程 序 代 码, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 [ 应 用 说 明 ] 某 应 用 程 序 可 选 择 打 开 用 户 指 定 的 文 本 文 件, 将 其 内 容 显 示 在 指 定 的 文 本 框 内 供 用 户 编 辑, 并 将 编 辑 后 的 结 果 保 存 在 用 户 指 定 的 文 件 中 运 行 时 的 窗 口 如 图 6-1 所 示, 其 中 有 六 个 标 签 一 个 驱 动 器 列 表 框 一 个 目 录 列 表 框 一 个 文 件 列 表 框 一 个 文 件 类 型 组 合 框 一 个 文 件 编 辑 文 本 框 一 个 文 件 名 文 本 框 以 及 两 个 命 令 按 钮 图 6-1 该 程 序 的 开 发 要 求 如 下 : (1) 通 过 驱 动 器 列 表 框 (Drive1) 目 录 列 表 框 (Dir1) 和 文 件 列 表 框 (File1), 选 择 文 件 (2) 文 件 类 型 组 合 框 (Cmb_type) 设 置 为 下 拉 式 列 表 框, 其 中 有 三 个 供 选 项, 分 别 为 所 有 文 件 (*.*) 文 本 文 件 (*.txt) 和 可 执 行 文 件 (*.exe) 在 文 件 列 表 框 中 列 出 的 文 件 类 型 会 自 动 与 文 件 类 型 组 合 框 中 选 择 的 文 件 类 型 相 匹 配 (3) 在 文 件 列 表 框 中 单 击 一 个 文 件 名 时, 该 文 件 名 会 显 示 在 文 件 名 文 本 框 (Txt_filename) 中 (4) 在 文 件 列 表 框 中 双 击 一 个 文 件 名 时, 若 是 文 本 文 件, 则 在 文 件 编 辑 文 本 框 (Txt_file) 中 显 示 该 文 件 的 内 容 并 可 进 行 编 辑 ; 若 不 是 文 本 文 件, 则 弹 出 一 个 对 话 框, 提 示 请 选 择 文 本 文 件! (5) 对 于 编 辑 后 的 文 本 文 件, 可 在 文 件 名 文 本 框 ( Txt_filename) 中 输 入 新 的 文 件 名, 并 单 击 命 令 按 钮 (Cmd_save) 进 行 保 存 [Visual Basic 程 序 代 码 ] Private Sub Form_Load() Cmb_type.AddItem " 所 有 文 件 (*.*)" Cmb_type.AddItem " 文 本 文 件 (*.txt)"

Cmb_type.AddItem " 可 执 行 文 件 (*.exe)" Cmb_type.ListIndex = 0 File1.Pattern = "*.*": Txt_filename.Text = "" Txt_ file.text = "" End Sub Private Sub Dir1_Change() File1.Path = (1) End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Cmb_type_click() Select Case Cmb_type. (2) Case 0 File1.Pattern = "*.*" Case 1 File1.Pattern = "*.txt" Case 2 File1.Pattern = "*.exe" End Select End Sub Private Sub Cmd_save_Click() usrfile = GetFileName() 函 数 GetFileName 获 得 要 保 存 的 文 件 名 Open usrfile For Output As #1 定 义 usrfile 为 1 号 输 出 文 件 Print #1, Txt_file.Text 输 出 到 1 号 文 件 Close #1 End Sub Private Sub File1_DblClick() If right(file1.filename, 3) <> (3) Then MsgBox " 请 选 择 文 本 文 件!" Exit Sub End If usrfile = GetFileName() 函 数 GetFileName 获 得 要 打 开 的 文 件 名 Open usrfile For Input As #1 定 义 usrfile 为 1 号 输 入 文 件 Txt_file.Text = "" Do While (4) EOF(1) Line Input #1, fcontext 从 1 号 文 件 读 入 一 行 Txt_file.Text = Txt_file.Text + (5) + vbcrlf Loop Close #1 End Sub 其 他 代 码 略

试 题 七 ( 共 15 分 ) 阅 读 下 列 说 明 图 和 Java 代 码, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 [ 说 明 ] 已 知 对 某 载 客 车 辆 (Car) 进 行 类 建 模, 如 图 7-1 所 示, 其 中 类 Engine 表 示 发 动 机 引 擎, 类 Wheel 表 示 车 轮, 类 Body 表 示 车 身, 类 Driver 表 示 司 机, 类 Passenger 表 示 乘 客 图 7-1 类 图 [Java 代 码 ] class Body{ // 此 处 代 码 省 略 ; // 车 身 类 class Passenger{ // 此 处 代 码 省 略 ; // 乘 客 类 class Wheel{ // 此 处 代 码 省 略 ; // 车 轮 类 class Driver{ // 司 机 类 public String name; // 表 示 第 几 路 公 交 车 司 机 public Driver(String drivername){name = drivername; // 构 造 函 数 ; class Engine{ // 引 擎 类 public String engineno; // 引 擎 编 号 public Engine(String engineno){ this.engineno = engineno; // 构 造 函 数 ; public class Car{ // 汽 车 类 static final int (1) = 7; // 定 义 最 多 载 客 数 static final int MAX_WHEELS = 5; // 定 义 最 多 轮 胎 数 protected Engine engine; protected Driver driver; protected Body body = new Body(); protected Wheel[] wheels;

protected Passenger[] passengers; public Car(Driver driver){ // 构 造 函 数 (2).driver = driver; engine = new Engine("TX6536 型 号 引 擎 "); wheels = new Wheel[MAX_WHEELS]; passengers = new Passenger[MAX_PASSENGERS]; for (int index = 0; index < MAX_WHEELS; index++){ wheels[index] = new Wheel(); for (int index = 0; index < MAX_PASSENGERS; index++){ passengers[index] = null; int getpassengernumber(){ // 获 取 车 上 乘 客 数 量 // 此 处 代 码 省 略 void getonpassenger(passenger apassenger ){ // 乘 客 上 车 // 此 处 代 码 省 略 void run(){ // 开 车 if( (3) ){ System.out.println(" 司 机 尚 未 上 车!"); return; // 此 处 代 码 省 略 public static void main(string args[]){ Driver driver = new Driver(" 第 五 路 公 交 车 司 机 "); Car car = new Car( (4) ); for (int index = 0 ; index < MAX_PASSENGERS; index ++) car.getonpa ssenger( (5) Passenger()); car.run();