c语言中,a和b值交换程序,写成单独函数和写在main函数的中区别

a和b值交换分析如下图:1、写在主函数中#include<stdio.h>voidmain(void){inta=3,b=5;intk;printf("交换前,a=%db... a和b值交换分析如下图:

1、写在主函数中
#include<stdio.h>
void main(void)
{
int a=3,b=5;
int k;
printf("交换前,a=%d b=%d\n",a,b);
k=a;
a=b;
b=k;
printf("交换后,a=%d b=%d\n",a,b);
}

2、写成单独函数
#include<stdio.h>
void swap(int a,int b);
void main(void)
{
int a=3,b=5;
printf("交换前,a=%d b=%d\n",a,b);
swap(a,b);
printf("交换后,a=%d b=%d\n",a,b);

}
void swap(int a,int b)
{
int k;
k=a;
a=b;
b=k;
}
写在main函数中a和b的值是可以交换,单独写成函数调用a和b值不能交换,这是为什么呢 哈哈
展开
 我来答
百度网友27b8b4e
2012-07-17 · TA获得超过2381个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:374万
展开全部
因为c语言的函数调用传入参数传入的不是变量本身,而是变量的拷贝。

你应该用传入这两个变量的指针
swap(&a,&b);
函数这样写
void swap(int *a,int *b)
{
int k;
k=*a;
*a=*b;
*b=k;
}

如果是c++的话
修改
void swap(int &a,int &b)
{
int k;
k=a;
a=b;
b=k;
}

调用swap(a,b);不需要修改,因为这样传入的是变量本身。
追问
如果指针做形参,实参传进去,也不是指针的拷贝吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dfaggtb
2012-07-17 · TA获得超过525个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:216万
展开全部
形参不能传回实参,可以改成
# include<stdio.h>
int main()
{
void swap(int *p1,int *p2);
int *p1,*p2,a=3,b=5;
printf("交换前,a=%d,b=%d\n",a,b);
p1=&a;
p2=&b;
swap(p1,p2);
printf("交换后,a=%d b=%d\n",a,b);
return 0;
}
void swap(int *p1,int *p2)
{
int k;
k=*p1;
*p1=*p2;
*p2=k;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一路的泪
2012-07-17 · TA获得超过562个赞
知道小有建树答主
回答量:673
采纳率:0%
帮助的人:252万
展开全部
你子程序里面没返回函数吧。

你在主程序里面定义了ab,但是在子程序里面调用,这些都没问题,

问题在于你调用程序完毕之后,应该把ab的值返回去啊。不返回,主程序咋识别?
更多追问追答
追问
void swap(int a,int b)
{
int k;
k=a;
a=b;
b=k;
}
返回a,b 值如何写了
追答
结尾有一个返回语句run打头的还是tun打头的,自己翻书。这种问题第一时间就应该翻书。好像程序刚新建的时候就有。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liute000321
2012-07-17 · TA获得超过175个赞
知道答主
回答量:74
采纳率:0%
帮助的人:60.6万
展开全部
没多大区别,写成单独的程序的话下次用到可以直接调用,方便很多。
结构会更清晰。
因为你没返回a和b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式