资源描述:
《2008上半年程序员考试下午试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2008年上半年程序员考试下午试题试题一(共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。
2、[流程图]10试题二(共15分) 阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。[说明] 下面的程序按照以下规则输出给定名词的复数形式: a.若名词以“y”结尾,则删除y并添加“ies”; b.若名词以“s”、“ch”或“sh”结尾,则添加“es” c.其他所有情况,直接添加“s”。[C程序]#include#includechar*plural(char*word) { intn; char*pstr; n=strlen(word);/*求给定单词的长度*/ pstr=(char*)malloc(n+3);/*申请给定单词的复数形式存储空间*
3、/ if(!pstr
4、
5、n<2) returnNULL; strcpy(pstr,word);/*复制给定单词*/ if((1)) {pstr[n-1]='i';pstr[n]='e';pstr[n+1]='s';(2); } else if(pstr[n-1]=='s'
6、
7、pstr[n-1]=='h'&&((3))) { pstr[n]='e';pstr[n+1]='s';pstr[n+2]=' '; } else{pstr[n]='s';pstr[n+1]=' '; }(4); } main() { inti;char*ps;charwc[9][10]=
8、{"chair","dairy","boss","circus","fly","dog","church","clue","dish"}; for(i=0;i<9;i++) { ps=(5);printf("%s:%s",wc[i],ps);/*输出单词及其复数形式*/ free(ps);/*释放空间*/ } system("pause"); }试题三(共15分) 阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。[说明说明]说明说明下面的程序用DoleRob算法生成N阶(N为奇数)魔方阵10(各行、列、对角线数字2之和相等)。 该算法的
9、过程为:从1开始,按如下方法依次插入各自然数,直到N为止: a.在第一行的正中插入1; b.新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置; c.若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。例如,3阶魔方阵如下所示:8 1 63 5 74 9 2[C程序程序]#include #include#defineSIZE50 main(){ introw,col,n,value; inta[SIZE+1][SIZE+1];
10、 /*不使用下标为0的元素*/ printf("请输入要输出魔方阵的阶数n(奇数,<%d):n=",SIZE); scanf("%d",&n); if(!(n%2)
11、
12、n<1
13、
14、 (1)){ printf("输入数据有误!"); exit(0); } row=1; col=(n+1)/2; value=1; while(value<= (2)){ a[row][col]=value; /*计算下一位置*/
15、 if(value%n!=0){ row--; (3); if(row<1)row=n; if(col>n) (4); } elserow++; value= (5); } printf("%d阶魔方阵如下所示:",n); for(row=1;row<