有一位大于十的正整数,要求将其个位和十位进行互换,例如10 ,互换后为01,124,互换后为142,具体代码实现如下
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num > 9) { // 确保输入的数大于一位数
int last = num % 10; // 获取个位数
int second = num / 10 % 10; // 获取十位数
int swapNum = num - (last + second * 10) + (second + last * 10);
//交换个位和十位
printf("互换后的数为:%d\n", swapNum);
} else {
printf("输入的数不符合要求!\n");
}
return 0;
}
原理就先将整数的个位和十位通过取模运算分别提取出来,然后再用原来的数减去它原本的个位和十位再加上个位乘10和十位即可,eg:1234-34+4*10+3=1243
同理,如果你想将一位正整数的个位和百位互换,那就先将个位,十位,百位分别求出来,然后再用比如1234-234+4*100+3*10+2即可!通过这个原理,我们可以将一位整数的任意位数和你想要互换的位数(除了最大位数)进行互换!
一下是代码的一些测试结果
...............