进制转换
题目
十进制转化为二进制
思路:
将输入的十进制数,利用除2取余法,将每次遍历得到的余数存入数组中,最后逐个输出数组中的元素(倒序输出)
代码:
c
#include <stdio.h>
void change(int i){
int arr[100]={0};
int j = 0;
while(i > 0){
arr[j] = i%2;
i /= 2;
j ++;
}
for(int k = j-1;k >= 0;k --){
printf("%d", arr[k]);
}
}
int main()
{
int i = 20;
change(i);
return 0;
}
数字反转
题目:1234->4321
思路 :不断取最后一位乘倍率;
4+3* 10+2* 100+1* 1000;
代码:
c
#include <stdio.h>
void func(int a) {
int sum = 0; // 用来存储反转后的数字
while (a > 0) {
int x = a % 10; // 取最后一位
sum = sum * 10 + x; // 反转数字
a /= 10; // 去掉最后一位
}
printf("%d\n", sum);
}
int main() {
int t = 278;
func(t); // 输出 872
return 0;
}
反转两次
思路:
对于整数:反转两次一定等于原数,但末尾有 0 的数不成立。
比如 120 -> 21 -> 12
c
#include <stdio.h>
int reverse(int n)
{
int r = 0;
while (n) /和上一道题一样
{
r = r * 10 + n % 10;
n /= 10;
}
return r;
}
int main()
{
int x = 120;
if (reverse(reverse(x)) == x)
printf("true\n");
else
printf("false\n");
}