首页 > 其他分享 >北理工乐学44. 判断二进制对称数

北理工乐学44. 判断二进制对称数

时间:2022-11-28 18:34:49浏览次数:62  
标签:二进制 44 北理工 char 乐学 对称 Yes include

44. 判断二进制对称数

一个数的等于它的反序数,则为对称数,编程:从键盘输入一个大于0的正整数,判断其二进制表示是否为对称数,若是,输出“Yes!”,并输出该数和对应的二进制;否则,输出“No.”。 例如:

输入:5

输出:
Yes!
5=101

  测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示
  1. 5↵
以文本方式显示
  1. Yes!↵
  2. 5=101↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 128↵
以文本方式显示
  1. No.↵
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]);
}

 

标签:二进制,44,北理工,char,乐学,对称,Yes,include
From: https://www.cnblogs.com/alien-han/p/16932986.html

相关文章

  • 北理工乐学 43. 【日期】黑色星期五(数组)
    43.【日期】黑色星期五(数组)在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫"黑色星期五”。......
  • 北理工mooc火锅火锅和火锅
    火锅火锅和火锅(10分)题目内容:众所周知,沫沫以火锅为生。在E8的聚餐活动中,他经常卖萌卖无辜领着大家吃火锅。。有一天,沫沫听说学校附近的哺呷哺呷在某现充的赞助下有一......
  • S1 - Lesson 43 - 44
    单词 ofcoursecertainlyofcoursenot kettlelittleanelectrickettleIuseanelectrickettletoboilwater. behindTheboyisstandingbehindthet......
  • 题解 P4448
    如果这不是一道原题,这道题出的还不错,是个比较毒瘤的数数。由于我太菜了反正我自己没有做出来后面的dp,zyf巨佬教的。不过听说合肥六中某巨佬当年也没做出来,平衡了雾但问......
  • pod启动时报错:failed to set bridge addr: "cni0" already has an IP address differe
    今天创建pod的时候,一直不running,describepod后看到报错:Failedcreatepodsandbox:rpcerror:code=Unknowndesc=failedtosetupsandboxcontainer"bb8a1493......
  • LeetCode 448.找到所有数组中消失的数字(简单)
    题目描述:给你一个含​​n​​​个整数的数组​​nums​​​,其中​​nums[i]​​​在区间​​[1,n]​​​内。请你找出所有在​​[1,n]​​​范围内但没有出现......
  • LOJ #6044 题解——完全二分图的生成树计数
    LOJ#6044显然就是要求有多少左边有\(K\)个点,右边有\(N-K\)个点的完全二分图的生成树个数,但是我不会!所以我们想一想怎么算左边\(n\)个点,右边\(m\)个点的完全二分......
  • leetcode 344. 反转字符串 js实现
    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解......
  • windows上安装mysql-5.6.44-winx64
     配置MySQL配置文件my.ini。datadir一般和安装目录是分开存放的[mysqld]#设置3306端口port=3306#设置mysql的安装目录---这里输入你安装的文件路径----basedir=......
  • 北理工慕课4.7循环的综合应用讨论题2
    打印图形以下图形用什么算法实现程序最简单?你会考虑哪些测试用例来保证程序的正确性和坚固性?请给出你的实现程序。(图中n=5) 这题颇有意思,本人代码如下供参考#inclu......