各位看代码吧
#include <stdio.h>void place_swap(int *x,int *y)
{
*x=*x^*y;
*y=*x^*y;
*x=*x^*y;
}
void reverse(int s[],int n)
{
int first,last,i;
for(first=0,last=n-1;first<=last;first++,last--)
{
place_swap(&s,&s);
printf("%d %d",s,s);
}
putchar('\n');
for(i=0;i<n;i++)
printf("%d ",s);
}
int main()
{
int a=3,b=3;
int s[]={1,2,3,4,5};
place_swap(&a,&b);
reverse(s,5);
printf("\n%d%d",a,b);
return 0;
}
/****************************************************************************************************************************************************
这是运行结果
5 14 20 0
5 4 0 2 1
33
第一行,for执行了3次,不是应该打印6个数吗?
第三行,结果不应该是0 0吗?(数组的s的结果都是0了)
各位看看,给点看法。 首先是6个数。14是1 4 你没加空格所以黏在一起了,第三行你输出的是s b不关s得事吧 其次你那个用异或交换值的算法有问题,当x y是同一个变量的时候,这个变量就变成0了 迷雾少年 发表于 2019-8-14 18:09
其次你那个用异或交换值的算法有问题,当x y是同一个变量的时候,这个变量就变成0了
这个我知道,所以a,b执行那个算法之后,结果应该就是0 0 啊,但是第三行结果怎么是 3 3 迷雾少年 发表于 2019-8-14 18:06
首先是6个数。14是1 4 你没加空格所以黏在一起了,第三行你输出的是s b不关s得事吧
我忘了第二个要输出的参数加空格了
第三行我要输出的是a,b啊 本帖最后由 迷雾少年 于 2019-8-14 19:59 编辑
jiuyuan 发表于 2019-8-14 18:19
我忘了第二个要输出的参数加空格了
第三行我要输出的是a,b啊
第三行是输出a b啊 a和b都是3啊 这个是你的函数定义:
void place_swap(int *x,int *y)
{
*x=*x^*y;
*y=*x^*y;
*x=*x^*y;
}
这个是条件:
int a=3,b=3;
在函数place_swap(3,3)中,第一行:
*x=*x^*y;
执行之后,*x = 0, *y = 3
然后第二行:
*y=*x^*y;
执行之后,*x = 0, *y = 3
最后,执行第三行:
*x=*x^*y;
各个变量的值:*x = 3, *y = 3
所以最后的输出为:3,3 没有问题啊 wwhywhy 发表于 2019-8-14 21:00
这个是你的函数定义:
void place_swap(int *x,int *y)
{
嗯,我懂了,a,b不是一个变量。
页:
[1]