我刚刚实现了交换功能,但没有打印任何内容。您知道行printf为什么不执行吗?
#include <stdio.h>
int swap(int x, int y) {
scanf("%d", &x);
printf("%d, x is",x);
scanf("%d", &y);
int temp = x;
x = y;
y = temp;
printf("After Swapping: x = %d, y = %d", x, y);
return 0;
}
int main() {
swap(6,5);
}
答案 0 :(得分:2)
您不应在swap
函数内部接受用户输入。其目的应该是仅交换两个整数。您可以将scanf
语句移至main
函数。
#include <stdio.h>
int swap(int x, int y){
int temp = x;
x = y;
y = temp;
printf("After Swapping in swap function: x = %d, y = %d", x, y);
return 0;
}
int main(void){
int x, y;
scanf("%d", &x);
printf("%d, x is", x);
scanf("%d", &y);
printf("%d, y is", y);
swap(x, y);
printf("After Swapping in main function: x = %d, y = %d", x, y);
}
但是上面的代码有一个主要问题。尽管swap
函数会打印交换时传递的整数,但事实是x
中的y
和main
仍然不受影响。
在这种情况下,使用指针会有所帮助
void swap(int *ptrx, int *ptry){
int temp = *ptrx;
*ptrx = *ptry;
*ptry = temp;
}
在main
函数中,将swap
称为swap(&x, &y);
答案 1 :(得分:1)
使用此代码进行交换。
#include <stdio.h>
void swap(int x, int y)
{
int z;
z = x;
x = y;
y = z;
printf("After Swapping: x = %d, y = %d", x, y);
}
int main()
{
swap(6,5);
return 0;
}
我不明白为什么您需要扫描x&y