全国软考真题(初级)程序员
2019年上半年下午 考试真题及答案解析
(案例分析)
试题一(共20分)
阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
如果n位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字将递减(非增),则称该数为拱形回文数。例如, 12235753221就是一个拱形回文数。显然,拱形回文数中不含数字0。
下面的流程图用于判断给定的n位数(各位数字依次存放在数组的各个元素A[i]中,i=1,2, ...,n)是不是拱形回文数。流程图中,变量T动态地存放当前位之前一位的数字。当n是奇数时,还需要特别注意中间一位数字的处理。
【流程图】
注1: “循环开始”框内给出循环控制变量的初值、终值和增值(默认为1),格式为: 循环控制变量=初值,终值[,增值]
注2: 函数int(x)为取x的整数部分,即不超过x的最大整数。
【问题1】
阅读以下说明和流程图,填写流程图中的空缺,将解答填入答题纸的对应栏内。
试题二(共 15 分)
阅读下列说明和 C 函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。
【说明】
程序员和编程员的区别
函数bubbleSort(int arr[], int n, int (*compare)(int,int))的功能是根据调用时传递的比较函数compare对数组arr的前n个元素进行排序。
【C代码】
#define swap(a, b) { a = a^b; b = a^b; a = a^b;} //交换a与b的值
int less(int x,int y)
{
return ((x<y) ? 1 : 0);
}
int larger(int x, int y)
{
return ((x>y) ? 1 : 0);
}
void bubbleSort(int arr[ ], int n, int (*compare)(int,int))
{ int i,j;
int swapped = 1;
for( i=0; swapped; i++) {
swapped = 0;
for(j=0; j<n-l-i; j++)
if ( compare( arr[j+1], arr[j])) {
swap( arr[j+1], arr[j]);
swapped =1;
}
}
}
 
【问题2】阅读以下说明和C代码,回答问题,将解答写入答题纸的对应栏内。
设有如下数组定义:
int data1[ ] = {4, 2, 6, 3, 1};
int data2[ ] = {4, 2, 6, 3, 1};
int data3[ ] = {4, 2, 6, 3, 1};
请分别给出下面的函数调用执行后,数组data1、data2和data3各自的元素序列。
(1)bubbleSort(data1, 5, less);
(2) bubbleSort(data2, 5, larger);
(3) bubbleSort(data3, 3, larger);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。