| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 848 人关注过本帖
标题:新人求教,一个简单的排序问题,,不知道哪里出错了
只看楼主 加入收藏
天天空空
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-6-7
收藏
 问题点数:0 回复次数:12 
新人求教,一个简单的排序问题,,不知道哪里出错了
程序代码:
# include <stdio.h>
int max(int i, int j);

int main(void)
{
    int a, b, c;

    printf("请输入三个整数:\n");
    scanf("%d %d %d", &a, &b, &c);

    max(a, b);
    max(b, c);
    max(a, c);
   

    printf("三者从大到小排序为:%d %d %d\n", a, b, c);
    return 0;
}

int max(int i, int j)
{
    int t;

    if (i < j)
    {
        t = j;
        j = i;
        i = t;
    }

    printf("i = %d j = %d\n", i, j);

    return (i,j);
}
刚学C不久,望大神赐教
max函数可以进行大小比较,但是没把比较后的数值返回给a,b,c,是return语句的问题吗?实在想不明白,求教


[ 本帖最后由 天天空空 于 2015-6-7 12:02 编辑 ]
2015-06-07 11:59
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
printf("i = %d j = %d\n", i, j);   去掉。

函数返回只能返回一个值,返回return (i,j);   改成return i;

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 12:10
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
这个函数只能比较两个数的大小,你有三个数,从新设计函数试着用数组指针做。。。。



int a[10];
......//赋值进入数组
void max(*a)
{
int i;
int j;
int tem;
for(i=0;i<9;i++)
{
    for(j=0;j<9-i;j++)
    {
        if(a[i]<a[j])
        {
            tem=a[i];
            a[i]=a[j];
            a[j]=tem;
        }
    }
}
}

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 12:20
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
请多指教,谢谢

#include<stdio.h>
void input(void);
int main(void)
{

    input_num();
    return 0;
}

void input_num(void)
{
    int a,b,c,t;
    printf("请输入三个数:\n");
    scanf("%d%d%d",&a,&b,&c);
    if(a<b){t=a;a=b;b=t;}
    if(a<c){t=a;a=c;c=t;}
    if(b<c){t=b;b=c;c=t;}
    printf("三者从大到小排序为:%d %d %d",a,b,c);
}

2015-06-07 13:20
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 4楼 hjx1120
程序代码:
# include <stdio.h>
void max(int &i, int &j);
int main(void)
{
    int a, b, c;

    printf("请输入三个整数:\n");
    scanf("%d %d %d", &a, &b, &c);
    max(a, b);
    max(b, c);
    max(a, c);
    printf("三者从大到小排序为:%d %d %d\n", a, b, c);
    return 0;
}

void max(int &i, int &j){
    if (i < j){
        i = i+j;
        j = i-j;
        i = i-j;
    }
}

剑栈风樯各苦辛,别时冰雪到时春
2015-06-07 13:33
xinsen
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2014-9-14
收藏
得分:0 
你这个好像排不了序吧
2015-06-07 14:05
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 5楼 林月儿
版主大人,能注释下你的代码嘛~!有点看不懂
2015-06-07 14:19
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 7楼 hjx1120
程序代码:
# include <stdio.h>
void swap(int &i, int &j);
int main(void)
{
    int a, b, c;

    printf("请输入三个整数:\n");
    scanf("%d %d %d", &a, &b, &c);
    swap(a, b);
    swap(b, c);
    swap(a, c);
    printf("三者从大到小排序为:%d %d %d\n", a, b, c);
    return 0;
}

void swap(int &i, int &j){
    if (i < j){
        i = i+j;
        j = i-j;
        i = i-j;
    }
}

这样就明白了吧,就是个变量交换的函数,不一样的是这里的swap函数变量的交换对实参有影响

剑栈风樯各苦辛,别时冰雪到时春
2015-06-07 15:10
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 8楼 林月儿
1.
void swap(int &i, int &j);
void swap(int &i, int &j)
&地址符无法通过编译

2.
if (i < j){
        i = i+j;
        j = i-j;
        i = i-j;

    }
这种比较我好像在那见过,忘了是什么原理,请多指教,TKS

2015-06-07 15:18
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 9楼 hjx1120
可能源自这里https://bbs.bccn.net/viewthread.php?tid=445710&page=1#pid2492589
通不过可能编译器的原因吧
我的没问题

剑栈风樯各苦辛,别时冰雪到时春
2015-06-07 15:25
快速回复:新人求教,一个简单的排序问题,,不知道哪里出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029446 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved