写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;也就是实现这样一个函数
boolean isPalindrome(int x);

分析一下,该题目主要是通过移位来实现,二进制模式从正向看和反向看是一样的,说明这个二进制数两边是对称的,

画个图看看:

代码如下:

boolean isPalindrome(int x)
{
 int flag = 1,i,j,temp;
    while(1){
        if(num&(0x1<<flag)){
            flag++;
        }else{
            break;
        }
    }
    printf("%dbits\n",flag);
      
    if(flag%2){
        i = flag/2+1;
    }else{
        i = flag/2; 
    }
    for(j=0;j<i;j++){
        temp |= ((num&(1<<j))<<(flag-2*j-1))|((num&(1<<(flag-j-1)))>>(flag-2*j-1));
    }
    if(temp == num){
        return TRUE;
    }else{
        return FALSE;
    }
}

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;,布布扣,bubuko.com

时间: 2024-10-03 09:16:28

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;的相关文章

c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表. 解:程序: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Student *next; }; int n; struct Student *creat(void)//定义函数返回一个指向链表头的指针 { struct Student *head

【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_stri

c++实现写一个函数,求2个整数的和,要求在函数体内不得使用+,-* /

#include <iostream> using namespace std; int add(int x, int y) { return x+y; } int addmove(int a, int b) { if (b==0) { return a; } else { int sum = a ^b; //处理移位 11 = 0, 10 = 1,00 = 0 int jinwei = (a & b) <<1; //11 = 0; 10 = 1,00 = 0 return

编写一个函数判断一个整数是否为回文数。如果一个属从正的方向读和从反的方向读的结果相同,则该数就是回文数。

bool palindrome(int b){ int k = 0; char a[1000]; do { int c; c = b % 10; char d; for (int i = 0; i <= 9; i++) { if (c == i) { d = '0' + i; break; } } a[k++] = d; b = b / 10; } while (b != 0); // k = 字符长度 int j = 0; if (k == 1) { return true; } else {

C中怎么利用指针实现一个函数输入一个数组且输出一个数组

1 #include<stdio.h> 2 3 int num[]={1,3,5,45,67,18,64,82,34,62}; 4 5 int *pnum; 6 7 int *Fun(int *num);//该函数可以实现输入一个数组且输出一个数组的功能 8 9 void main() 10 { 11 char i=0; 12 //num=Fun(num);//这样写是错误的,因为num是一个指针常量,不能被赋值 13 pnum=Fun(num); 14 for(i=0;i<10;i++

写一个函数实现数组中的元素随机乱序排序

//原生JS写一个函数实现一个shuffle方法,将数组中的元素随机乱序排序 var shuffle = function(arr){ var len,t,rand; for(var i =0;len = arr.length,i<len;i++){ rand = parseInt(Math.random()*len);//parseInt(Math.random()*(len-1-0)+1);或者rand = Math.floor(Math.random()*(len-1-0)+1);即Mat

通过一个函数,操作一个结构体,实现对应函数功能

指针结构体一直是我的盲点,所以今天有必要整“清理门户”.此种通过一个函数操作一个结构体,实现对应函数功能,用法十分巧妙,使用得当可以使得代码可移植性和易懂性大大的增加,有人说过“代码注释的最高境界是程序的自述,而不是双斜杠然后后面跟着中英文的注释”.哈哈,说远了,下面开始进入今天的加油站,补充体力了. 1 // 头文件 2 #include <stdio.h> 3 4 // 函数声明 5 typedef struct _halDeviceFuncs_t 6 { 7 void (*pfnInit

【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

/* 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数.负整数) 例如:"12" 返回12 "-123" 返回-123 函数原型:int my_atof(char *str) */ #include <stdio.h> int my_atof(char *str) { int flag=0; int m=0; if(*str=='-') { flag=1; str++; } while(*str!='\0') { if(*str<

写一个函数找到给定字符串的位置

题目 给你一个排好序的并且穿插有空字符串的字符串数组,写一个函数找到给定字符串的位置. 例子:在字符串数组 [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”,“”, “dad”, “”, “”] 中找到”ball”,返回下标4. 例子:在字符串数组 [“at”, “”, “”, “”, “”, “ball”, “car”, “”, “”, “dad”, “”, “”] 中找到”ballcar”,查找失败,返回-1. 解答 字符串数组已经是有序的了,所以,还