首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C代码,回答问题,将解答写入对应栏内。 【说明】 函数bubbleSort(int arr[],int n,int(*compare)(int,int))的功能是根据调用时传递的比较函数compare对数组arr的前n个元素进行排序。
阅读以下说明和C代码,回答问题,将解答写入对应栏内。 【说明】 函数bubbleSort(int arr[],int n,int(*compare)(int,int))的功能是根据调用时传递的比较函数compare对数组arr的前n个元素进行排序。
admin
2021-03-13
41
问题
阅读以下说明和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-1-i;j++)
if(compare(arr[j+1],arr[j])) {
swap(arr[j+1],arr[j]);
swapped=1;
}
}
}
【问题】
设有如下数组定义:
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);
选项
答案
(1)1 2 3 4 6或{1,2,3,4,6} (2)6 4 3 2 1或{6,4,3,2,1} (3)6 4 2 3 1 或{6,4,2,3,1}
解析
本题考查C程序基本控制逻辑、函数调用及其应用。
函数bubbleSort(int arc[],int n,int(
*
compare)(int,int))的第一个参数表示arr是一个数组,第二个参数n表示数组的前n个元素,第三个参数compare是函数指针,在函数体中实现compare(arr[j+1],arr[j])的具体结果需要根据调用bubbleSort时的第3个实参来确定。
对于调用bubbleSort(data1,5,less),arr表示的是data1数组,在排序时compare(arr[j+1],arr[j])操作实质实现的是less(arr[j+1],arr[j]),也就是arr[j+1]<arr[j]时返回值为1,从而需要交换arr[j+1]和arr[j]的值,其结果是较小的值换至下标小的数组元素中,因此bubbleSort实现了data1数组的全部5个元素从小到大的排列。
对于调用bubbleSort(data2,5,larger),arr表示的是data2数组,compare(arr[j+1],arr[j])操作实质实现的是larger(arr[j+1],arr[j]),也就是arr[j+1]<arr[j]时返回值为1,从而需要交换arr[j+1]和arr[j]的值,其结果是较大的值换至下标小的数组元素中,因此bubbleSort实现了data2数组的全部5个元素从大到小的排列。
对于调用bubbleSort(data3,3,larger),arr表示的是data3数组,compare(arr[j+1],arr[j])操作实质实现的是larger(arr[j+1],arr[j]),也就是arr[j+1]>arr[j]时返回值为1,从而需要交换arr[j+1]和arr[j]的值,其结果是较大的值换至下标小的数组元素中,因此bubbleSort实现了data3数组的前3个元素从大到小的排列。
转载请注明原文地址:https://kaotiyun.com/show/j2jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel2010的A1单元格中输入函数“=IF(1<>2,1,2)”,按回车键后,A1单元格中的值为________________。
某个字段的数据是原始数据计算的结果,该字段的宽度和小数位数对数据的精度有影响。一般来说,小数位数的确定需要考虑______。
在Excel中,函数“=AVERAGE(A1,.B4)”的含义是()。
在Access2007中,若要想查询所有姓名为2个汉字的学生记录,应在准则中输入______。
某工厂信息处理技术员设计了如下统计表:该表设计中包含的问题以及改进方法是______。
下面记录的是某班36人期末考试的数学成绩:971009596100879610089100936999891008188
在数据库中能够唯一地标识一个记录被称为______。
现在,企业数字化转型已是大势所趋。以下关于企业数字化转型的叙述中,不正确的是_________。
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。说明某公司内部有一个采用TCP/IP作为传输协议的100BASE-TX局域网,包括1台服务器和20台客户机,通过一台16端口的交换机与一台8端口共享集线器级连,其网络结构如图11所
随机试题
道德一般可分为__________、__________、__________三类。
A.半慢胰岛素锌混悬液B.慢胰岛素锌混悬液C.中性精蛋白锌胰岛素D.低精蛋白锌胰岛素E.特熳胰岛素锌混悬液长效胰岛素是
Peutz-Jegher综合征指
在自然疫源地和可能是自然疫源地的地区兴办的大型建设项目开工前,建设单位应当申请当地卫生防疫机构对施工环境进行
关于房屋转租,不正确的表述是()。
我国现行税法规定,一般纳税人从小规模纳税人处购进的货物,一律不得计算进项税额抵扣销项税额。()
太阳照射大地,一片光明。相对地,月光就显得那么柔和、暗淡。月光之所以没有太阳光线强,主要是因为:
全口义齿的基托边缘位置不应位于()。
阿德莱德大学的研究人员在一项食用大蒜的实验研究中,将受试者分为两组。第一组的受试者在3~6个月中每天服用600~900毫克含有蒜素的营养补充剂,对照组人员服用安慰剂。研究结果显示,服用蒜素营养补充剂的高血压患者的高压平均降低了8.4毫米汞柱,低压平均降低了
中国民主主义革命经历了旧民主主义革命和新民主主义革命两个革命阶段,区别新、旧民主主义革命的根本标志是
最新回复
(
0
)