2008年5月程序员下午试卷

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) ) { 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\\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

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4