在C中使用功能NOT WORKING交换程序

时间:2018-09-06 05:33:11

标签: c printf swap

/ 输入的数字应交换并显示。对我来说,这个简单的程序看起来不错,但事实并非如此。我曾尝试使用printf(“%d%d”)起作用,但在堆栈上使用默认值。但是它无法使用此代码。我尝试了不同的编译器,例如TurboC ++,CodeBlocks(GCC)。有人可以帮我解释一下吗?预先感谢 /

#include <stdio.h>
#include <stdlib.h>
void swap(int,int );
int main()

{
    int x,y;
    printf("Two Numbers: ");
    scanf("%d\n%d",&x,&y);
    swap(x,y);
    printf("%d%d",x,y);//printf("%d%d"); makes the program work but not genuinely 
    return 0;
    getch();
}
void swap(int x,int y)
{
    int temp;
    temp=y;
    y=x;
    x=temp;
}

2 个答案:

答案 0 :(得分:3)

您仅更改仅在方法swap内部存在的x,y的值。 swap方法创建的对象x,y仅具有用于swap方法的新内存映射。它们不存在于方法交换之外。您需要传递值的内存地址引用,以便对原始值的内存地址进行操作。交换需要接受值的内存引用,并将它们存储在指针中,指针将对原始值的内存位置执行操作。

#include <stdio.h>
#include <stdlib.h>
void swap(int*,int* );
int main()

{
    int x,y;
    printf("Two Numbers: ");
    scanf("%d\n%d",&x,&y);
    swap(&x,&y);
    printf("%d%d",x,y);//printf("%d%d"); makes the program work but not genuinely 
    return 0;

}
void swap(int *x,int *y)
{
    int temp;
    temp=*y;
    *y=*x;
    *x=temp;
}

答案 1 :(得分:-1)

Bro,正确的代码应该是这样的

#include <stdio.h>
#include <stdlib.h>

void swap(x,y);
int main()

{
    int x,y;
    printf("Two Numbers: ");
    scanf("%d\n%d", &x, &y);
    swap(x,y);
    //If you put print("%d%d", x, y); here it will not print swapped value because the swap(x,y) function only passing the value of x,y...
    return 0;
    getch();
}
void swap(int x,int y)
{
    int temp;
    temp=y;
    y=x;
    x=temp;
    printf("%d%d",x,y);
}