北理工乐学44. 判断二进制对称数
44. 判断二进制对称数
一个数的等于它的反序数,则为对称数,编程:从键盘输入一个大于0的正整数,判断其二进制表示是否为对称数,若是,输出“Yes!”,并输出该数和对应的二进制;否则,输出“No.”。 例如:
输入:5
输出:
Yes!
5=101
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
代码如下:
#include <stdio.h> #include <stdbool.h> #include <string.h> void to_binary(int n, char ch[]); int main(void) { /*读入整数n * 将n转为二进制binary_n * 用字符的形式储存二进制数,便于后续判断 * 发现二进制的第一位是n%2,然后n = n/2; * 第二位n%2,继续 n = n/2; * n==0时停止 * warning,其实还需要逆序,如果依照这个思路,但是如果是回文数,那么打印的时候正序逆序结果相同,因此省略 * 判断这个二进制是不是对称数 * char[i] = char[len-1-i] * i-->len/2-1;i<len/2 * 以1221为例 */ int n; scanf("%d", &n); char ch[200] = { 0 }; to_binary(n, ch); int len = strlen(ch); bool palindrome = true; for (int i = 0; i < len / 2; i++) if (ch[i] != ch[len - 1 - i]) { palindrome = false; break; } if (palindrome) { printf("Yes!\n" "%d=%s\n", n, ch); } else printf("No.\n"); return 0; } void to_binary(int n, char ch[]) { int i; for (i = 0; n!=0; i++) { ch[i] = (n % 2 ? '1':'0'); n /= 2; //printf("i = %d, ch[%d] = %c, n = %d\n", i, i, ch[i], n); } ch[i] = '\0'; //printf("i = %d, ch[%d] = %c\n", i, i, ch[i]); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」