| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5994 人关注过本帖
标题:用函数交换两数
只看楼主 加入收藏
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
结帖率:0
收藏
 问题点数:0 回复次数:13 
用函数交换两数
求助:
编写一个函数来实现两数的交换

#include<stdio.h>

fun(int x,int y)
{
    int m;
    m=x;
    x=y;
    y=m;
    return x,y;
}

main()
{
    printf("请输入整数x和整数y:\n");
    scanf("%d,%d",&a,&b);
    fun(a,b);
    printf("整数x为%d,整数y为%d",a,b);
}


我是新手,不知道这样对不对

[ 本帖最后由 smileRan 于 2011-4-4 13:37 编辑 ]
搜索更多相关主题的帖子: return 
2011-04-04 13:35
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
这就是函数参数的问题了,运行程序,进入函数后执行x=a,y=b,只是交换了x,y的值,并没有改变a,b的值,这就是所谓的传值,实参本身没什么变化,如果将fun(int x,int y)改为fun(int *x,int *y),这样就会执行x=&a,y=&b,然后将a,b的地址进行交换,就能实现a,b值的交换了

我的地盘
2011-04-04 14:20
安然之风
Rank: 2
等 级:论坛游民
帖 子:43
专家分:23
注 册:2011-1-6
收藏
得分:0 
这个是有问题的!!首先return 只返回一个值,你返回了两个值;然后函数类型最好加上;
可改为这样:
#include<stdio.h>
void fun(int x,int y)
{
    int m;
    m=x;
    x=y;
    y=m;
    printf("整数x为%d,整数y为%d\n",x,y);
}
void main()
{
    printf("请输入整数x和整数y:\n");
    int a,b;
    scanf("%d,%d",&a,&b);
    fun(a,b);
}
2011-04-04 14:21
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
收藏
得分:0 
回复 2楼 hnuhsg1226
恩,谢谢
2011-04-04 14:46
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
收藏
得分:0 
回复 3楼 安然之风
恩,谢谢!!!!
还有些问题想请教,就是如果不说函数类型,就是fun前不加void是不是就是错的?
2011-04-04 15:05
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
回复 5楼 smileRan
void 不加编译器又不知道你那是函数

[ 本帖最后由 pcbaichi 于 2011-4-4 15:45 编辑 ]

免费赠送河蟹一只
2011-04-04 15:43
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
由于函数被限制只能返回一个值, 所以, 这就需要用到指针啦!~, 比如下面例子:
程序代码:

root@~ #cat 1.c
#include <stdio.h>

int main (void) {

        void exchange (int * const pint1,int * const pint2);
        int i1=12,i2=13,*p1=&i1,*p2=&i2;
        printf ("Before exchange i1=%i,i2=%i\n",i1,i2);
        exchange(p1,p2);
        printf ("After exchange i1=%i,i2=%i\n",i1,i2);
        return 0;

}
void exchange (int * const pint1,int * const pint2) {
        int temp;
        temp=*pint1;
        *pint1=*pint2;
        *pint2=temp;
}
root@~ #./1
Before exchange i1=12,i2=13
After exchange i1=13,i2=12
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-04 16:15
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
收藏
得分:0 
回复 6楼 pcbaichi
恩,谢谢!!
2011-04-04 19:21
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
收藏
得分:0 
回复 7楼 ansic
谢谢!!!
2011-04-04 19:21
dyrtt
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2011-3-29
收藏
得分:0 
回复 6楼 pcbaichi
在c语言中,凡是不加类型说明的函数,自动按整形处理。
2011-04-05 13:43
快速回复:用函数交换两数
数据加载中...
 
   



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

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