进制练习题【找出只出现一次的数字、交换两个变量(不创建临时变量)、统计二进制中1的个数、打印整数二进制的奇数位和偶数位、求两个数二进制中不同位的个数】 找出只出现一次的数字在一个整型数组中只有一个数字出现一次其他数组都是成对出现的请找出那个只出现一次的数字。例如数组中有1 2 3 4 5 1 2 3 4只有5出现一次其他数字都出现2次找出5思路0 ^ n n 、n ^ n 0、通过异或算出最后的结果1^2^3^4^5^1^2^3^4相当于1^10、2^20、3^30、4^40、结果就为5#include stdio.h int f(int arr[], int len) { int ret 0; int i 0; for (i 0; i len; i) { ret ^ arr[i]; } return ret; } int main() { int arr[] { 1,2,3,4,5,1,2,3,4 }; int len sizeof(arr) / sizeof(arr[0]); int dog f(arr, len); printf(%d\n, dog); return 0; }交换两个变量不创建临时变量不允许创建临时变量交换两个整数的内容方法一思路通过异或交换#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //不允许创建临时变量交换两个整数的内容 int main() { int a 5; int b 1; //0101^0001 a a ^ b;//0100 4 //0100^0001 b a ^ b;//0101 5 //0100^0101 a a ^ b;//0001 1 return 0; }方法二思路通过加减法交换不推荐可能会整数溢出因为整数较大时ab可能会超出整数的范围#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //不允许创建临时变量交换两个整数的内容 int main() { int a 5; int b 1; a a b; b a - b; a a - b; return 0; }统计二进制中1的个数写一个函数返回参数二进制中 1 的个数比如 15 0000 1111 4 个 1二进制中1的个数_牛客题霸_牛客网方法一思路 循环进行以下操作直到n被缩减为01. 用该数据模2检测其是否能够被2整除2. 可以则该数据对应二进制比特位的最低位一定是0否则是1如果是1给计数加1 3. 如果n不等于0时继续1int NumberOf1(int n) { // 15 0000 1111 4 个 1 int count 0; unsigned int un (unsigned int)n; while (un ! 0) { if (un % 2 1) { count; } un un / 2; } return count; }方法二方法一效率低思路 一个int类型的数据对应的二进制一共有32个比特位可以采用位运算的方式一位一位的检测int NumberOf1(unsigned int n) { int count 0; int i 0; for(i0; i32; i) { if(((ni)1) 1) count; } return count; }方法三方法二效率也低因为每回都要循环32次思路用相邻的两个数据进行按位与运算int NumberOf1(int n) { int count 0; while(n) { n n(n-1); count; } return count; }打印整数二进制的奇数位和偶数位获取一个整数二进制序列中所有的偶数位和奇数位分别打印出二进制序列思路打印相应位数的数一个二进制通过右移再1#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //获取一个整数二进制序列中所有的偶数位和奇数位分别打印出二进制序列 void NumberOf1(int n) { printf(偶数位); for (int i 31; i 1; i - 2) { printf(%d, (n i) 1); } printf(\n); printf(奇数位); for (int i 30; i 0; i - 2) { printf(%d, (n i) 1); } } int main() { int n 0; scanf(%d, n); NumberOf1(n); return 0; }求两个数二进制中不同位的个数两个整数二进制位不同个数_牛客题霸_牛客网思路先用异或算出两个数找不同的结果的值再把这个值存入temp然后利用循环只要temp不是0的时候就执行循环体用temp (temp-1)把temp里面有多少个1算出来其中的逻辑是每一次少一个1这样就循环一次算出一个1把每次循环算出来的1存入count里#include stdio.h int main() { int a, b; while (scanf(%d %d, a, b) ! EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf(%lld) to int count 0; int temp a ^ b; while(temp){ count; temp temp (temp - 1); } printf(%d\n, count); } return 0; }

相关新闻

最新新闻

不依赖锂钴镍:低成本材料电池技术路线与商业化

不依赖锂钴镍:低成本材料电池技术路线与商业化

如果你关注电池行业,大概率清楚锂电原材料这两年经历了什么。碳酸锂价格从几万块一吨冲到六十万,再快速回落,做储能和电动车的朋友应该记忆犹新。恰恰是这种大起大落,让“New Battery Could Be Made From Abundant Low-Cost Mater…

2026/8/28 12:45:03
三步生成 HTML 幻灯片,还能把 PPT 变成网页演示:frontend-slides 使用完整指南

三步生成 HTML 幻灯片,还能把 PPT 变成网页演示:frontend-slides 使用完整指南

三步生成 HTML 幻灯片,还能把 PPT 变成网页演示:frontend-slides 使用完整指南 【免费下载链接】ECC The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Code…

2026/8/28 12:45:03
LangChain AI 代理框架教程:5分钟跑通你的第一个LLM应用(新手完整指南)

LangChain AI 代理框架教程:5分钟跑通你的第一个LLM应用(新手完整指南)

LangChain AI 代理框架教程:5分钟跑通你的第一个LLM应用(新手完整指南) 【免费下载链接】langchain The agent engineering platform. 项目地址: https://gitcode.com/GitHub_Trending/la/langchain 如果你在自己的产品里接过大模型&a…

2026/8/28 12:45:03
便携式EEG与蓝牙5.0:从数据同步到光谱熵的实战指南

便携式EEG与蓝牙5.0:从数据同步到光谱熵的实战指南

把SmartingPro便携式EEG从背包里拿出来时,实验室同事真的问了一句“这是新款游戏耳机吗”。也就是那一刻我意识到,传统脑电采集设备留给人的印象太深了:一顶塞满电极的帽子、一大捆线、一个信号放大器,最好再配一个电磁屏蔽房间。…

2026/8/28 12:45:03
CC Switch 问题排查终极指南:13 个常见故障如何快速定位与解决

CC Switch 问题排查终极指南:13 个常见故障如何快速定位与解决

CC Switch 问题排查终极指南:13 个常见故障如何快速定位与解决 【免费下载链接】cc-switch A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io 项…

2026/8/28 12:45:03
快速上手 Python 算法库:1300 个算法从入门到实战

快速上手 Python 算法库:1300 个算法从入门到实战

快速上手 Python 算法库:1300 个算法从入门到实战 【免费下载链接】Python All Algorithms implemented in Python 项目地址: https://gitcode.com/GitHub_Trending/pyt/Python pyt/Python 是 GitHub 推荐项目精选中的 Python 算法实现库,用 1385…

2026/8/28 12:40:03