一道关于函数指针的题:return a>b 怎么能做函数的返回值,居然还是int型。。。

不重要的地方都不写了,程序目的为:对学生成绩进行排序,升序降序的选择由键盘输入,并输出排序结果。这个程序的重点在于利用【函数指针】只用一个函数来执行升序和降序,下面是比较... 不重要的地方都不写了,程序目的为:对学生成绩进行排序,升序降序的选择由键盘输入,并输出排序结果。这个程序的重点在于利用【函数指针】只用一个函数来执行升序和降序,下面是比较关键的语句。函数指针我是能理解的,就是不太理解在调用的函数中怎么能用a>b和a<b做返回值,居然tm是int 型。。。
……
void SelectionSort(int a[],int n,int (*compare)(int a,int b));
int Ascending(int a,int b);
int Descending(int a,int b);
int main()
{
……
printf("Enter 1 to sort in ascending order ,\n");
printf("Enter 2 to ……);
scanf("%d",&order);
……
if(order==1)
}
selectionSort(score,n,Ascending);
}
else
{
SelectionSort(score,n,Descending);
}
……
return 0;
}
/*函数功能:通用的交换法排序*/
void SelectionSort(int a[],int n,int (*compare)(int a,int b))
{
……
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if((*compare)(a[j],a[k]))
{
k=j;
}
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
int Ascending(int a,int b)
{
return a<b;
}
int Dscending(int a,int b)
{
return b<a;
}
谢谢各位大神了!!!鄙人freshman刚学c不太懂,如果讲得细致一定加分!
展开
 我来答
ok洛阳水席
推荐于2017-09-28 · TA获得超过1839个赞
知道小有建树答主
回答量:580
采纳率:50%
帮助的人:527万
展开全部

return一般都有这么几种用法:

return b常用于b为一个数据的时候,

而return(b)常用于b是一个表达式的时候,这个时候采用这个能让人读起来更容易理解!

return只是用于返回值为void的函数中断函数运行用,


LZ的问题就应该采用第二种,return(a<b);即可。


给你个例子吧,自己敲的哦,觉得好请采纳,亲!

#include<stdio.h>
bool bijiao(int a,int b)
{
    return a>b;//注意这里!
}
//取最大值使用return b
int max(int a,int b)
{
    if(bijiao(a,b))
        return a;
    else
        return b;
}
//求和使用return(b)
int sum(int a,int b)
{
    return (a+b);
}
//排序使用return
void sort(int &a,int &b)
{
    int temp;
    if(a>b)
        return;//当a>b成立的时候,不需要排序了,直接用return 中断函数运行
    else
    {
        temp = a;
        a = b;
        b = temp;
    }
}
int main()
{
    int a,b;
    printf("输入a和b:");
    scanf("%d,%d",&a,&b);
    printf("a和b中最大值为:%d\n",max(a,b));
    printf("a和b的和为:%d\n",sum(a,b));
    sort(a,b);
    printf("a和b从大到小为:%d,%d\n",a,b);
    return 1;
}

加括号其实这不并影响结果,只是为了读起来更易懂!

你的问题里return a<b的时候将bool型提升到了int型

bool型与int型的关系,可以在网上找

例如:http://wenku.baidu.com/view/d22f40d633d4b14e852468ae.html

我会尽最大努力帮助你的,亲!

cossbow
2013-05-13 · TA获得超过697个赞
知道小有建树答主
回答量:798
采纳率:100%
帮助的人:224万
展开全部
b<a 是个逻辑运算表达式,运算的结果是1或0,分别表示真或假,而且的确是int型的
return b<a; 就返回这个结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kkkwing
2013-05-13 · TA获得超过1221个赞
知道小有建树答主
回答量:267
采纳率:90%
帮助的人:257万
展开全部
其实就是返回比较的结果:

如果 a<b 成立则返回1,a < b不成立则就会0

其实返回值的类型不重要,不要认为int只能存储数值,char只能存储字符,这只是表面的。
其实无论数值还是字符,最终存储在计算机中的就是二进制数,数据类型的区别只在于它占用了几个Byte(几个Bit)地址空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式