| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1024 人关注过本帖
标题:程序运行正确,但是 a 与 b 的值没有交换,为什么?
只看楼主 加入收藏
chenziguo
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2013-10-25
结帖率:58.33%
收藏
 问题点数:0 回复次数:15 
程序运行正确,但是 a 与 b 的值没有交换,为什么?
#include "stdio.h"
int sum (int x,int y)
{int z;
    z=x+y;
    return(z);
}
void swap (int x,int y)
{
    int t;
    t=y;y=x;x=t;}
main()
{int a,b,s;
    printf("input a and b:");
    scanf("%d%d",&a,&b);
    swap(a,b);
    s=sum(a,b);
    printf("%d",s);
    printf("%4d%4d",a,b);
}
搜索更多相关主题的帖子: include return 
2014-08-06 11:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你在问为什么运行正确?

授人以渔,不授人以鱼。
2014-08-06 11:41
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
这是标准的错误代码 我建议你找本书看看 书里讲过 C语言是传值的
2014-08-06 11:43
乖乖0943
Rank: 2
等 级:论坛游民
帖 子:33
专家分:42
注 册:2014-8-1
收藏
得分:0 
#include <stdio.h>
int sum (int x,int y)
{   int z;
    z=x+y;
    return(z);
}
void swap (int *x,int *y)
{    int t;
    t=*y;
    *y=*x;
    *x=t;
}
main()
{   int a,b,s;
    printf("input a and b:");
    scanf("%d %d",&a,&b);
    swap(&a,&b);
    s=sum(a,b);
    printf("%d",s);
    printf("%d %d",a,b);
}
你试试看可以不?

[ 本帖最后由 乖乖0943 于 2014-8-6 14:43 编辑 ]
2014-08-06 14:40
licai123
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 1 楼 chenziguo
其实调用swap函数时传入的a,b在该函数中进行了交换,但出了这个函数a,b的值不会改变,这就是值传递.
在这个代码中,你要明白一个东西:虽然a值赋给了x,但是a变量并不是x变量哦。我们对x任何的修改,都不会改变a变量。

[ 本帖最后由 licai123 于 2014-8-6 19:50 编辑 ]
2014-08-06 19:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
期望的结果都不对,他还说“程序运行正确”呢。

授人以渔,不授人以鱼。
2014-08-06 19:49
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
楼主以后措辞可得精准些,版主都不知道怎么回答才合适了,呵呵

梦想拥有一台龙芯3A-4000
2014-08-06 21:57
iBreathebsb
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2014-7-20
收藏
得分:0 
局部变量     
值传递
2014-08-06 22:06
步向巅峰
Rank: 5Rank: 5
来 自:河南
等 级:贵宾
威 望:17
帖 子:110
专家分:371
注 册:2013-4-26
收藏
得分:0 
单向值传递,详细的楼主可以百度
2014-08-07 12:30
qq771964904
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2013-11-19
收藏
得分:0 
a b 应该传地址  对其进行更改

既不回头、何必不忘,既然无缘、何须誓言,今日种种、似水无痕,明夕何夕、君已陌路
2014-08-07 15:15
快速回复:程序运行正确,但是 a 与 b 的值没有交换,为什么?
数据加载中...
 
   



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

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