文档介绍: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) 处的字句写在答题纸的对应栏内。
[说明] 下面的程序按照以下规则输出给定名词的复数形式: 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] =
{"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 开始,按如下方法依次插入各自然数,直到 N2 为止:
a. 在第一行的正中插入 1;
b. 新位置应当处于最