#include <math.h>
// رقم با ایندکس مشخص را بر میگرداند
long FindValue ( long num, int index1)
{
long tmp1;
num /= pow(10,index1);
num %=10;
return num;
}
int main()
{
long tmp1, tmp2, num=123456, tmp=0;
int c=0, index1=1, index2 =4; // revers number 2, 5
tmp1 = FindValue ( num, index1); // رقم با ایندکس را پپیدا میکند
tmp2 = FindValue ( num, index2);
// عدد را جابجا میکند
tmp = 0;
while (num!=0)
{
tmp *=10;
if( c==index1 )
tmp += tmp2;
else
if( c==index2 )
tmp += tmp1;
else
tmp += num%10;
num /=10;
C++;
}
// در اینجا عدد برعکس شده آنرا به حالت اول بر میگرداند
num = tmp;
tmp = 0;
while (num!=0)
{
tmp *=10;
tmp += num%10;
num /=10;
}
num = tmp;
printf("%ld", num);
getch();
}
روش بازگشتی
long tmp=0, tmp1, tmp2;
int index1=1, index2=4;
long GetNum( long num, int index)
{
if( num!=0 ){
if( index==index1 )
tmp1 = num%10;
else
if( index==index2 )
tmp2 = num%10;
GetNum(num/10, index+1);
}
tmp *=10;
if( index==index1 )
tmp += tmp2;
else
if( index==index2 )
tmp += tmp1;
else
tmp += num%10;
return tmp;
}
int main()
{
// revers numbers 2 in number value
long num=123456;
printf(" %ld", GetNum( num, 0) );
getch();
}