不用第3个变量,实现两个输的互换。 #include <stdio.h> int main() { int a,b; printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); 2 分 2 分 1 分 printf("a=%d,b=%d",a,b); return 0; }
时间: 2024-03-08 07:46:01 浏览: 21
可以使用加减法实现两个数的互换,如下所示:
```c
#include <stdio.h>
int main() {
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
a = a + b;
b = a - b;
a = a - b;
printf("a=%d,b=%d",a,b);
return 0;
}
```
或者使用异或运算实现,如下所示:
```c
#include <stdio.h>
int main() {
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d,b=%d",a,b);
return 0;
}
```
相关问题
这个程序为什么没有互换成功,#include <stdio.h> void swap1(int a,int b) {int t; t=a; a=b; b=t; } void main() { int a=3; int b=5; if(a<b) swap1(a,b); printf("互换后结果为%d %d\n",a,b); }
这个程序没有成功地进行互换是因为在函数 `swap1` 中,传递的是变量 `a` 和 `b` 的值的副本,而不是变量本身。因此,函数内部对传递进来的 `a` 和 `b` 进行的操作不会影响到 `main` 函数中的变量 `a` 和 `b`。如果想要成功互换,可以将函数 `swap1` 改为使用指针进行操作,或者将函数返回值赋给 `a` 和 `b`。例如:
```
#include <stdio.h>
void swap1(int* a, int* b) {
int t;
t = *a;
*a = *b;
*b = t;
}
int main() {
int a = 3;
int b = 5;
if (a < b) {
swap1(&a, &b);
}
printf("互换后结果为 %d %d\n", a, b);
return 0;
}
```
这样,传递给 `swap1` 函数的是指向 `a` 和 `b` 的指针,函数内部对指针所指向的内容进行操作,可以实现成功的互换。
#include<stdio.h> #include<stdlib.h> void swap2(int *p1,int *p2) { int *t; t=p1; p1=p2; p2=t; } void main() { int a=3; int b=5; int *pa=&a,*pb=&b; printf("俩个数据值为%d %d\n",a,b); if(a<b) swap2(pa,pb); printf("互换后的结果为%d %d\n",a,b); system("pause"); }为什么互换不成功
这个程序中的 `swap2` 函数并没有真正交换指针所指向的变量的值,而是只交换了指针本身的值。因此,当 `swap2` 函数返回后,`pa` 和 `pb` 指向的变量并没有发生交换,因此互换不成功。
要让函数真正交换指针所指向的变量的值,应该改为这样:
```
void swap2(int *p1,int *p2) {
int t = *p1;
*p1 = *p2;
*p2 = t;
}
```
这样就可以成功交换 `pa` 和 `pb` 指向的变量的值了。