扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
正如楼上所说,这个方法是很多的。我举一个例子:
成都创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元尼勒克做网站,已为上家服务,为尼勒克各地企业和个人服务,联系电话:18982081108
#includestdio.h
void swap(double *x,double *y)//定义交换函数
{
double temp;
temp=*x;
*x=*y;
*y=temp;
}
main()
{
int i,j;
double st[]={5,3,1,6,2};
for(i=0;i=3;i++) //冒泡排序
for(j=0;j=3-i;j++)
if(st[j]st[j+1])
swap(st[j],st[j+1]);
for(i=0;i5;i++) //输出
printf("%f\t",st[i]);
}
这个程序只能给5,3,1,6,2排序,要想给任意的数排序稍微改动一下就行了,请楼主自己完成,不会的话随时可以问我。
首先 这个 答案 是错的 ,
这样写 会直接 segmentation fault 先给你解释下
char *s1="abc"; 编译器会先 把 “abc” 这个 字符串 放到 ”常量区“ (值不能改) ,
在 分配一个 指针 s1 指向 “abc” 的 开头 也就是 ‘a’ 这个 字符 ,
那就是了 swap() 要改 常量区 的 东西 , 所以 会直接 segmentation fault
现在 把 char *s1="abc" 改成 char s1[]="abc"; 或者 假设 那个 内存可读
然后说后面的
刚才讲了 指针 只能 指向一个 地址 也就是 只能指向 一个 ‘点’
所以 s1 其实 是 指向 ‘a’ 这个 字符 *s1 操作的其实 是 ‘a’ 这个 字符
所以 第一个 字符 互相 交换了
C语言中swap函数是自定义的函数,C标准库里没有swap函数。swap函数是用来交换的函数,经常在C语言中排序中会用到。
代码示例:
#includestdio.h
void
swap(int
*a,
int
*b){
int
t;
t
=
*a;
*a
=
*b;
*b
=
t;
}
int
main()
{
int
a=23,b
=
43;
printf("输入的两个要交换的数为:%d,%d\n",a,b);
swap(a,b);
printf("交换后的数为:%d,%d\n",a,b);
return
0;
}
程序运行:
扩展资料
C语言中使用swap()函数,要注意的是,想要交换a,b的值,其实就是相当于要在函数中改变变量的值,要做到这一点,就需要向形式参数传递实际参数的地址了,因为这样把变量的地址复制到函数中的变量里,它们指向的是内存中的同一个地方,在函数中改变这个地方的值,那么外部的变量的值也就改变了。
参考资料:搜狗百科-C语言
swap函数一般是一个程序员自定义函数。通常是实现两个变量数值的交换。比如
int a = 2;
int b =3;
swap(a,b); //一般用到变量数值交换,交换后a=3 b = 2;
实现的方法多种多样。比如下面几种写法:
1、通过使用临时变量实现交换。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
2、通过临时指针变量实现交换。
void swap2(int *x,int *y)
{
int *temp;
temp=x;
x=y;
y=temp;
}
3、借助指针加入临时变量来实现交换。
void swap3(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
#include stdio.h
#define N 10
void Swap ( int *a, int *b, int n);
int main(void)
{
int *a, *b;
int num1[N], num2[N];
for (a = num1; a num1 + N; a++)
scanf ("%d", a);
for (b = num2; b num2 + N; b++)
scanf ("%d", b);
a = num1;//重新指向首地址
b = num2;//重新指向首地址
Swap (a, b, N);
printf ("*********交换后**********\n");
for (a = num1; a num1 + N; a++)
printf ("%3d", *a);
printf ("\n");
for (b = num2; b num2 + N; b++)
printf ("%3d", *b);
return 0;
}
void Swap (int *a, int *b, int n)
{
int temp;
int i;
for (i = 0; i n; i++)
{
temp = *(a + i);
*(a + i) = *(b + i);
*(b + i) = temp;
}
}
要用函数实现两个数的交换,则函数参数必须定义为指针形式,否则函数中对数值的修改将不会影响主调函数,这是C语言的规则。
所以,以整型为例,自定义函数书写如下:
void swap_int(int*a,int*b)
{
int t;
t = *a;
*a=*b;
*b=t;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流