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值不能交换,这是为什么呢 哈哈 展开
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值不能交换,这是为什么呢 哈哈 展开
4个回答
展开全部
因为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);不需要修改,因为这样传入的是变量本身。
你应该用传入这两个变量的指针
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);不需要修改,因为这样传入的是变量本身。
追问
如果指针做形参,实参传进去,也不是指针的拷贝吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
形参不能传回实参,可以改成
# 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;
}
# 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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你子程序里面没返回函数吧。
你在主程序里面定义了ab,但是在子程序里面调用,这些都没问题,
问题在于你调用程序完毕之后,应该把ab的值返回去啊。不返回,主程序咋识别?
你在主程序里面定义了ab,但是在子程序里面调用,这些都没问题,
问题在于你调用程序完毕之后,应该把ab的值返回去啊。不返回,主程序咋识别?
更多追问追答
追问
void swap(int a,int b)
{
int k;
k=a;
a=b;
b=k;
}
返回a,b 值如何写了
追答
结尾有一个返回语句run打头的还是tun打头的,自己翻书。这种问题第一时间就应该翻书。好像程序刚新建的时候就有。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没多大区别,写成单独的程序的话下次用到可以直接调用,方便很多。
结构会更清晰。
因为你没返回a和b
结构会更清晰。
因为你没返回a和b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询