c语言 输入两个数,交换他们的值输出 只用两个变量
时间: 2023-05-23 22:05:11 浏览: 107
A:
```
#include <stdio.h>
int main() {
int a, b;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
printf("交换前:a=%d, b=%d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("交换后:a=%d, b=%d\n", a, b);
return 0;
}
```
相关问题
在c语言中能否只用两个变量就将两个值互换
在C语言中,确实可以用两个变量来交换两个数的值,无需额外的临时变量。这是通过简单的算术操作实现的,利用加法和减法的性质。下面是一个常见的技巧:
```c
#include <stdio.h>
void swap(int *a, int *b) {
// 使用 a 和 b 的地址来进行操作
*a = *a + *b; // a 现在包含 a 和 b 的和
*b = *a - *b; // a 获得原始 b 的值(即原 a 的值)
}
int main() {
int x = 5;
int y = 10;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x, &y); // 传入变量的地址
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
```
在这个例子中,`swap`函数接收两个整数的地址,通过连续赋值操作实现了值的交换。运行后,你会看到 x 和 y 的值已经被成功互换了。
c语言四个数比较大小,使用中间变量t
在C语言中,如果你想比较四个数a、b、c和d的大小,并使用一个中间变量t来进行临时存储以便交换数值,你可以采用这样的方法:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
int main() {
int a, b, c, d;
// 假设你已经有了这四个数的值
a = ...;
b = ...;
c = ...;
d = ...;
// 首先比较前两个数
if (a > b) {
if (a > c && a > d) { // 如果a最大,则不需要交换
printf("a is the largest.\n");
} else {
swap(&a, &c); // 如果a不是最大,就让c取代a成为第二大的
if (c > d) {
swap(&c, &d); // 如果c还是第二大的,再让它取代d
}
}
} else if (b > c && b > d) { // 同理,比较b
printf("b is the largest.\n");
} else if (c > d) { // 如果c是最大的
swap(&c, &d);
printf("c is the largest.\n");
} else {
printf("d is the largest.\n");
}
return 0;
}
```
在这个例子中,我们首先通过嵌套的if条件判断来确定最大值,然后通过`swap`函数更新变量的顺序,直到找到最大值。这种方法可以保证只用到一个中间变量`t`。
阅读全文