编写函数实现:(1)声明3个整型变量var1, var2, var3,变量的值由键盘输入;(2)通过三个指针变量ptr_var1、ptr_var2和ptr_var3实现3个变量的顺序交换,即var1的值交换给var2,var2的值交换给var3,var3的值交换给var1;(3)必须输出变量var1、var2和var3的原始输入值及变量的地址,并输出交换完成后的新值。
回答了,但是好像在审核
这一题,首先考察的是指针的使用,然后结合了前面所讲的两个值的交换知识(值传递和地址传递的区别),三个值的交换就是在两个值交换基础上,多交换了两次,算法思想上没有变化。
#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; }