誰能教教我!
編寫函數實現:(1)聲明3個整型變量var1, var2, var3,變量的值由鍵盤輸入;(2)通過三個指針變量ptr_var1、ptr_var2和ptr_var3實現3個變量的順序交換,即var1的值交換給var2,var2的值交換給var3,var3的值交換給var1;(3)必須輸出變量var1、var2和var3的原始輸入值及變量的地址,并輸出交換完成后的新值。
編寫函數實現:(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
舉報
2017-10-24
回答了,但是好像在審核
2017-10-24
這一題,首先考察的是指針的使用,然后結合了前面所講的兩個值的交換知識(值傳遞和地址傳遞的區別),三個值的交換就是在兩個值交換基礎上,多交換了兩次,算法思想上沒有變化。
2017-10-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; }