云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 08年上半年程序员下午试卷

08年上半年程序员下午试卷

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 11:33:32

www.4juan.com 自考及各类其他考试历年试题免费免注册下载 超过2万套word文档试题和答案

2008年5月软考程序员下午试卷

试题一(共 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。

[流程图]

试题二(共 15 分)

阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

2008年5月软考程序员下午试卷

1

www.4juan.com 自考及各类其他考试历年试题免费免注册下载 超过2万套word文档试题和答案

[说明] 下面的程序按照以下规则输出给定名词的复数形式: a. 若名词以“y”结尾,则删除 y 并添加“ies”;

b. 若名词以“s”、“ch”或“sh”结尾,则添加“es”; c. 其他所有情况,直接添加“s”。 [C 程序]

#include #include

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] =

{\for(i = 0; i < 9; i++) { ps = (5) ;

printf(\%s\\n\/*输出单词及其复数形式*/ free(ps); /*释放空间*/ }

system(\}

试题三(共 15 分)

阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明]

2008年5月软考程序员下午试卷

2

www.4juan.com 自考及各类其他考试历年试题免费免注册下载 超过2万套word文档试题和答案

下面的程序用 Dole Rob 算法生成 N 阶(N 为奇数)魔方阵(各行、列、对角线数字 之和相等)。该算法的过程为:从 1 开始,按如下方法依次插入各自然数,直到 N2 为止: a. 在第一行的正中插入 1;

b. 新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新 位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个 位置;

c. 若最近插入的元素是 N 的整数倍,则选同列的下一行位置为新位置。 例如,3 阶魔方阵如下所示: 8 1 6 3 5 7 4 9 2 [C 程序]

#include #include #define SIZE 50 main( )

{ int row, col, n, value;

int a[SIZE+1][SIZE+1]; /*不使用下标为 0 的元素*/ printf(\请输入要输出魔方阵的阶数 n(奇数, <%d):n=\ SIZE); scanf(\if (!(n % 2)||n < 1 || (1)n>SIZE ) { printf(\输入数据有误!\\n\exit(0); }

row = 1; col = (n+1)/2; value = 1; while(value <= (2)n*n ) { a[row][col] = value; /*计算下一位置*/ if(value%n != 0){

row--; (3)col++ ; if(row < 1) row = n; if(col > n) (4)col=1 ; }

else row++;

value = value+1 (5) ; }

printf(\ 阶魔方阵如下所示:\\n\\n\for(row = 1; row <= n; row++){ for(col = 1; col <= n; col++) printf(\printf(\} }

试题四(共 15 分)

阅读以下说明和 C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明]

计 算 机 在 处 理 算 术 表 达 式 时 , 首 先 将 其 转 换 为 后 缀 表 达 式 。 例 如 , 表 达 式

“46+5*(120-37)”的后缀表达式形式为“46 5 120 37 - * +”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇

到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中,重复以上过 程,直到后缀表

2008年5月软考程序员下午试卷

3

www.4juan.com 自考及各类其他考试历年试题免费免注册下载 超过2万套word文档试题和答案

达式扫描结束。例如,后缀表达式“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)ptr++ ; /*字符指针指向下一字符*/ continue; } else

if (isdigit(*ptr)) {

/*当前字符是数字,则将该数字开始的数字串转换为数值*/ tnum =0 (2);

while (*ptr>=’0’ && *ptr <=’9’) { tnum = tnum * 10 + (*ptr-48) (3) ; ptr++; }

Push( (4)&s,tnum ); }

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;

2008年5月软考程序员下午试卷

4

搜索更多关于: 08年上半年程序员下午试卷 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

www.4juan.com 自考及各类其他考试历年试题免费免注册下载 超过2万套word文档试题和答案 2008年5月软考程序员下午试卷 试题一(共 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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com