交换C-列印

时间:2019-03-02 16:22:46

标签: c

我刚刚实现了交换功能,但没有打印任何内容。您知道行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);
}

2 个答案:

答案 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中的ymain仍然不受影响。

在这种情况下,使用指针会有所帮助

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