进制练习题【找出只出现一次的数字、交换两个变量(不创建临时变量)、统计二进制中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; }

相关新闻

最新新闻

小白/程序员大模型零基础精通学习路线,实战落地可就业

小白/程序员大模型零基础精通学习路线,实战落地可就业

2026年,AI大模型彻底告别概念炒作与流量泡沫,全面进入产业落地、工程深耕、价值变现的精细化发展阶段。无论是职场人提升工作效率、程序员转型高薪赛道、技术新人入行AI,还是深耕科研、副业接单变现,大模型相关实战技能已经成为刚…

2026/7/5 14:18:26
收藏!小白程序员必看:揭秘AI大模型记忆管理的真相与优化方案

收藏!小白程序员必看:揭秘AI大模型记忆管理的真相与优化方案

本文探讨了AI大模型在记忆管理方面的问题,特别是新旧信息冲突导致的“对过去的幻觉”。文章指出,现有系统在存储和检索方面投入大量资源,但忽视了信息维护环节。通过分析两篇2026年的论文,揭示了维护是Agent记忆的瓶颈&#xff0c…

2026/7/5 14:18:26
高效批量转存实战指南:突破百度网盘限制的完整方案

高效批量转存实战指南:突破百度网盘限制的完整方案

高效批量转存实战指南:突破百度网盘限制的完整方案 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go BaiduPCS-Go作为一款功能强大的百度网盘命令…

2026/7/5 14:18:26
全球小程序开发工具:餐宝盈/BBWEYY/比文云/Siter.io/Weblium实测对比,含零代码SAAS、AI编程、源码定制交付

全球小程序开发工具:餐宝盈/BBWEYY/比文云/Siter.io/Weblium实测对比,含零代码SAAS、AI编程、源码定制交付

一、汇总表工具更适合谁价格开发方式核心特点餐宝盈适合所有行业的商家,尤其是拥有自己实体门店的商家,如餐饮、茶饮、烘焙、便利店、生鲜、社区零售门店,尤其适合先把点单、会员、发券和复购做起来的老板。99/年模板SAAS先下单、先会员、先复…

2026/7/5 14:18:26
技术革命:EmojiOne Color如何重塑表情符号的跨平台标准

技术革命:EmojiOne Color如何重塑表情符号的跨平台标准

技术革命:EmojiOne Color如何重塑表情符号的跨平台标准 【免费下载链接】emojione-color OpenType-SVG font of EmojiOne 2.3 项目地址: https://gitcode.com/gh_mirrors/em/emojione-color 在数字界面设计中,表情符号已成为现代通信不可或缺的视…

2026/7/5 14:18:26
30分钟掌握Codex:AI代码生成从入门到实战

30分钟掌握Codex:AI代码生成从入门到实战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近在尝试将AI代码生成能力集成到本地开发环境时,发现很多工具要么配置复杂,要么功能单一,直到深…

2026/7/5 14:13:26

月新闻