问答详情
源自:3-1 gdb工具的使用

谁能教教我!

编写函数实现:(1)声明3个整型变量var1, var2, var3,变量的值由键盘输入;(2)通过三个指针变量ptr_var1、ptr_var2和ptr_var3实现3个变量的顺序交换,即var1的值交换给var2,var2的值交换给var3,var3的值交换给var1;(3)必须输出变量var1、var2和var3的原始输入值及变量的地址,并输出交换完成后的新值。

提问者:因为红 2017-10-24 12:45

个回答

  • Atlantis15
    2017-10-24 21:11:31

    回答了,但是好像在审核

  • Atlantis15
    2017-10-24 21:02:33

    这一题,首先考察的是指针的使用,然后结合了前面所讲的两个值的交换知识(值传递和地址传递的区别),三个值的交换就是在两个值交换基础上,多交换了两次,算法思想上没有变化。

  • Atlantis15
    2017-10-24 20:21:24

    #include <stdio.h>
    void swap(int *p1,int *p2,int *p3)
    {
        int temp;
        temp = *p1;
        *p1 = *p2;
        *p2 = temp;
        
        temp = *p2;
        *p2 = *p3;
        *p3 = temp;
        
        temp = *p3;
        *p3 = *p1;
        *p1 = temp;
    }
    int main()
    {
        int var1,var2,var3;
        int *ptr_var1,*ptr_var2,*ptr_var3;
        scanf("%d%d%d",&var1,&var2,&var3);
        ptr_var1 = &var1;
        ptr_var2 = &var2;
        ptr_var3 = &var3;
        printf("Original value:\n");
        printf(" var1 = %d\n var2 = %d\n var3 = %d\n",var1,var2,var3);
        printf("\n");
        printf("Address before swap:\n");
        printf(" var1 = %x\n var2 = %x\n var3 = %x\n",&var1,&var2,&var3);
        printf("\n");
        swap(ptr_var1,ptr_var2,ptr_var3);
        printf("Value after swap:\n");
    	printf(" var1 = %d\n var2 = %d\n var3 = %d",var1,var2,var3);
        return 0;
    }