一、题目要求:
回文串是指正读和反读都一样的字符串。例如,“madam”、“level”和“racecar”都是回文串。编写程序,输入一个正整数n,判断它的二进制表示是否是回文串。
请根据要求完成begin/end间完成代码,不要更改代码中的其他部分。
示例输入和输出:
输入:9
输出:The binary representation of 9 is a palindrome
二、程序代码
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(unsigned int n) {
unsigned int reversed = 0;
unsigned int temp = n;
while (temp > 0) {
///Begin///
unsigned int digit;//定义计算输入的数的二进制位数变量
//计算二进制位数digit
for(digit=0;temp>0;++digit) temp >>= 1;//通过将输入的数每次右移一位,计算出来该数的二进制位数digit
//得到逆向二进制数值
for(temp=n;digit>0;--digit)//在for循环中将输入的数temp二进制数逆序排列为reversed
{
reversed <<= 1;
reversed |= (temp&1);
temp >>= 1;
}
End
}
return (n == reversed);//判断输入的数和逆序排列的数是否相等,如果相等,返回值为1,如果不相等,返回值为0
}
int main() {
unsigned int n;
printf("Enter a positive integer: ");
scanf("%u", &n);
if (isPalindrome(n)) {
printf("The binary representation of %u is a palindrome.\n", n);
} else {
printf("The binary representation of %u is not a palindrome.\n", n);
}
return 0;
}
三、在Dev C++测试运行