用C语言将任意两个整数交换,需子函数写,不要用指针
时间: 2024-04-29 10:21:46 浏览: 86
可以采用按位异或运算的方法,代码如下:
```c
#include <stdio.h>
void swap(int a, int b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d, b = %d\n", a, b);
}
int main() {
int x = 10, y = 20;
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;
}
```
输出结果为:
```
Before swap: x = 10, y = 20
a = 20, b = 10
After swap: x = 10, y = 20
```
可以看到,子函数中交换了两个整数的值,但在主函数中,它们的值并没有被交换。这是因为在C语言中,函数参数传递是按值传递的,即函数得到的是实参的副本,而不是实参本身。因此,如果要在子函数中交换两个整数的值,需要使用指针或者引用。
相关问题
用c语言设计一个子函数,将任意2个整数交换,并在主函数中调用此函数
好的,以下是用C语言设计一个交换两个整数的子函数,并在主函数中调用此函数的示例代码:
```c
#include <stdio.h>
// 定义交换两个整数的子函数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("Before swapping: x = %d, y = %d\n", x, y);
// 调用子函数交换x和y的值
swap(&x, &y);
printf("After swapping: x = %d, y = %d\n", x, y);
return 0;
}
```
运行结果如下:
```
Before swapping: x = 10, y = 20
After swapping: x = 20, y = 10
```
在上面的代码中,我们定义了一个名为`swap`的子函数,它接受两个指向整数的指针作为参数。在函数内部,我们使用一个临时变量`temp`来存储`a`指针所指向的整数的值,然后将`a`指针所指向的整数赋值为`b`指针所指向的整数的值,最后将`b`指针所指向的整数赋值为`temp`。 这样,我们就成功地交换了`a`和`b`指针所指向的两个整数的值。
在主函数中,我们声明了两个整型变量`x`和`y`,并将它们的初始值分别设置为`10`和`20`。然后,我们打印出交换前的`x`和`y`的值,调用`swap`函数交换它们的值,最后再次打印出交换后的`x`和`y`的值。
请用C语言编写如下程序:设计一个子函数,将任意2个整数交换,并在主函数中调用此函数。
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1, num2;
printf("请输入两个整数:\n");
scanf("%d %d", &num1, &num2);
printf("交换前:num1=%d, num2=%d\n", num1, num2);
swap(&num1, &num2);
printf("交换后:num1=%d, num2=%d\n", num1, num2);
return 0;
}
```
注意:在 `swap` 函数中,使用指针来传递变量的地址,实现对变量的交换。在调用 `swap` 函数时,需要将变量的地址传递给函数,即 `swap(&num1, &num2)`。
阅读全文