与整数二进制序列有关的编程题

1.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列

#include<stdio.h>

int main()

{

inti,j,n,m;

chara[32]={0};

printf("peleaseinput the number:");

scanf("%d",&n);

for(m=0;m<32;m++)

{

i=(unsignedint)n%2;

j=(unsignedint)n/2;

n=j;

a[m]=i;

}

printf("此数的二进制序列为:\n");

for(m=31;m>=0;m--)

{

printf("%d",a[m]);

}

printf("\n二进制奇数位序列为:\n");

for(m=31;m>=0;m=m-2)

{

printf("%d",a[m]);

}

printf("\n二进制偶数位序列为:\n");

for(m=30;m>=0;m=m-2)

{

printf("%d",a[m]);

}

printf("\n");

rwturn0;

}

2.写一个函数返回参数二进制中一的个数

#include<stdio.h>

int count_one_bits(unsigned int value)

{

unsignedint bitnum=0;

while(value>0)

{

value&=(value-1);

bitnum++;

}

returnbitnum;

}

int main()

{

ints,value;

intcount_one_bits(unsigned int value);

scanf("%d",&value);

s=count_one_bits(value);

printf("%d\n",s);

}

注: 公式value&=(value-1)在value>0的情况下没每&一次就会将二进制位中的一个1变为0,value变为0,相&的次数即为二进制中一的个数。

3.求两个无符号数二进制位中有多少位不同。

思路:上题用m&=(m-1)求了二进制位中1的个数,而两个数进行异或运算时,相异为1,所以两数异或结果中1的个数即为两数二进制位中不相同位的个数。

#include<stdio.h>

#include<stdlib.h>

int count_one_bits(unsigned int value)

{

unsigned int bitnum = 0;

while (value>0)

{

value &= (value - 1);

bitnum++;

}

return bitnum;

}

int count_differbit( unsigned int m, unsigned int n)

{

unsigned int ret;

unsigned int a;

a = m ^ n;

ret = count_one_bits(a);

return ret;

}

int main()

{

int c, d;

int result;

printf("请输入两个整数:\n");

scanf_s("%d%d", &c, &d);

result=count_differbit(c, d);

printf("两数的二进制表达中有%d位不同!",result);

system("pause");

return 0;

}

时间: 2024-08-20 15:36:54

与整数二进制序列有关的编程题的相关文章

中国MOOC_零基础学Java语言_期末考试的编程题_1二进制的前导的零

期末考试的编程题 返回 这是期末考试的编程题,在60分钟内,你可以多次提交,直到正确为止. 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成绩. 1 二进制的前导的零(10分) 题目内容: 计算机内部用二进制来表达所有的值.一个十进制的数字,比如18,在一个32位的计算机内部被表达为00000000000000000000000000011000.可以看到,从左边数过来,在第一个1之前,有27

编程题:指针变量作函数参数,将两个整数按由大到小的顺序输出。

分析:通过指针变量作函数参数,无需返回值和全局变量,主调函数就可以使用被调用函数改变的值. #include<stdio.h> void swap(int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } void main() { int a=3,b=4; int *ptr1,*ptr2; ptr1=&a;ptr2=&b; if(a<b) swap(ptr1,ptr2); printf("%d,%d\n",

编程题:输入10个整数,输出最大数。

#include<stdio.h> void main() { int i,array[10],big;     /*给数组中所有元素赋值*/ for(i=0;i<10;i++) scanf("%d",&array[i]); /*找出数组中最大的元素*/ big=array[0]; for(i=1;i<10;i++) if(array[i]>big) big=array[i]; printf("The biggest is %3d\n&q

POJ C++程序设计 编程题#4:计算整数平方和

编程题#4:计算整数平方和 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 1024kB 描述 下列程序每次读入一个整数N,若N为0则退出,否则输出N和N的平方. #include <iostream> using namespace std; // 在此处补充你的代码 int main(int argc, char* argv[]) { CType obj; int n; c

上机操作编程题

一.写一个简单的缓存系统 1 package com.wisezone.demo; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 /** 6 * 上机操作: 7 * 面试题--写一个简单的缓存系统 8 * @author 王东海 9 * @2017年6月5日 10 */ 11 public class CacheDemo 12 { 13 private Map<String, Object> map = new HashMap&

京东校招笔试(C++方向)编程题

这次笔试是今年校招我参加的第一次笔试..出了很多状况,基础知识不扎实,导致选择题耽误了太多时间,导致后面的题目没做完,编程题也没有在 时间内写出来,基本没有面试机会了.不过我继续研究第二个编程题,在10几分钟后做了出来. 这个题目具体已经不记得了,但是大概意思还是记得,我们把由4和7组成的数,按小大排序,例如:4 7 44 47 74 77 444 447 474 477 744 747 774 777 他们的序号依次为1,2,3,4.....,题目的输入是每行输入一个整数,可以很大(好像是最大

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

POJ C++程序设计 编程题#5 计算数组的低3位之和

编程题#5:计算数组的低3位之和 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 1024kB 描述 输入一个正整数构成的数组a[0], a[1], a[2], ... , a[n-1], 计算它们的二进制低3位之和. #include <iostream> #include <vector> #include <algorithm> using nam

蘑菇街2016研发工程师在线编程题

传送门 第一题: [编程题] 搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子: 1 题解转自:ixiaomo 思路很简单,千万别想复杂了 无论圆桌如何移动,都必须在圆