輸入一個整數(如 371),輸出其數字逆序(173)。
#include <stdio.h>
int reverse_decimal(int n) {
int rev = 0;
int sign = n < 0 ? -1 : 1;
n = n < 0 ? -n : n; // 處理負數
while (n != 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev * sign;
}
int main() {
int n; printf("輸入整數: "); scanf("%d", &n);
printf("逆序: %d\n", reverse_decimal(n));
return 0;
}
#include <string.h>
void reverse_str(char *s) {
int len = strlen(s);
for (int i = 0, j = len - 1; i < j; ++i, --j) {
char t = s[i]; s[i] = s[j]; s[j] = t;
}
}
int main() {
char s[20]; scanf("%19s", s);
if (s[0] == '-') { reverse_str(s+1); printf("-%s\n", s+1); }
else { reverse_str(s); printf("%s\n", s); }
return 0;
}
// 32位整數位逆序
uint32_t reverse_bits(uint32_t x) {
x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1);
x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2);
x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4);
x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8);
x = (x >> 16) | (x << 16);
return x;
}
rev * 10 + digit 可能超出 INT_MAX,建議用 long long 計算後檢查範圍。