|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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[first],&s[last]);
- printf("%d %d",s[first],s[last]);
- }
- putchar('\n');
- for(i=0;i<n;i++)
- printf("%d ",s[i]);
- }
- 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
3 3
第一行,for执行了3次,不是应该打印6个数吗?
第三行,结果不应该是0 0吗?(数组的s[2]的结果都是0了)
各位看看,给点看法。
这个是你的函数定义:
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 没有问题啊
|
|