一道关于函数指针的题: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不太懂,如果讲得细致一定加分!
2026年09月28日 05:44
有3个网友回答
网友(1):

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

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

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

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


LZ的问题就应该采用第二种,return(a


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

#include
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

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

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

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

网友(2):
网友(3):

其实就是返回比较的结果:

如果 a
其实返回值的类型不重要,不要认为int只能存储数值,char只能存储字符,这只是表面的。
其实无论数值还是字符,最终存储在计算机中的就是二进制数,数据类型的区别只在于它占用了几个Byte(几个Bit)地址空间。