首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和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
59
问题
阅读以下说明和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://www.kaotiyun.com/show/j2jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel2010的A1单元格中输入函数“=IF(1<>2,1,2)”,按回车键后,A1单元格中的值为________________。
删除Windows中某个应用程序的快捷方式,意味着(39)。
在Excel2007中,若在单元格A1中输入函数“=ROUNDUP(3.1415926,2)”,按回车键后,则A1单元格中的值为______。
在Excel2010中,设单元格A1、A2、A3、A4中的值分别为20、3、16、20,若在单元格B1中输入函数“=PR0DUCT(ApA2)/MAX(A3,A4)”,按回车键后,则B1单元格中的值为(
在Excel2007的A1单元格中输入函数“=LEFT(“CHINA”,1)”,按回车键后,则A1单元格中的值为()。
在WindowsXP中,删除某个应用程序在桌面上的快捷方式,则(42)。
某工厂信息处理技术员设计了如下统计表:该表设计中包含的问题以及改进方法是______。
在Word编辑状态下,移动鼠标至某段左侧,当鼠标光标变成箭头时连击左键3下,结果会选中文档的(45)。
在网页中创建一个如下图所示的表单控件的HTML代码是(26)。
随机试题
GirlsPlayingonBoys’SportsTeamsIntheUStoday,morethan100,000girlsplaysportsonceconsideredtobe"boysonly".
龈谷的组织学特点是
下列哪项不是亚急性甲状腺炎的临床表现
法定存款准备金率是指根据法律规定,商业银行等将其所吸收的存款和发行的票据存放在中央银行的()比率。
企业持有交易性金融资产的时间超过一年后,应将其重分类为可供出售金融资产()
旅游团在旅游期间遇到治安事故,导游员应首先()
在某次心理咨询中,咨询师邀请一位同事和他一起,利用某求助者的几幅油画作品对其做出评估。这位心理咨询师()。
袋子里有红球白球若干,若每次拿出6个红球、4个白球,则最终剩5个红球;若每次拿出7个红球、3个白球,则最终剩25个白球。问:袋子里红球有几个?
设有课程关系模式:R(C#,Cn,T,TA)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址),并且假定不同课程号可以有相同的课程名,每门课程只有一位任课教师,但每位教师可以有多门课程。关系R范式最高达到
A:「昨日から熱があるんですが。」B:「それはいけませんね。病院へ行ったら、________。」
最新回复
(
0
)