【C】喝汽水,找单身狗问题

?博客主页: XIN-XIANG荣
?系列专栏:【从0到1 , C语言学习】
?一句短话:你若盛开 , 蝴蝶自来!
?博客说明:尽己所能 , 把每一篇博客写好 , 帮助自己熟悉所学知识 , 也希望自己的这些内容可以帮助到一些在学习路上的伙伴 , 文章中如果发现错误及不足之处 , 还望在评论区留言 , 我们一起交流进步!
文章目录二. 喝汽水 结语
前言
俩道比较锻炼编程思维和逻辑思维的基础题目 , 使用C语言实现
一. 找单身狗 1. 题目内容:
一个数组中只有两个数字是出现一次 , 其他所有数字都出现了两次;找出这两个只出现一次的数字 。
2. 解题思路
思路1:
思路2:
3. 代码实现
//方法一#includeint main(){int arr[] = { 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,7,9,10 };int count = 0;int sz = sizeof(arr) / sizeof(arr[0]);int i = 0;int j = 0;for (i = 0; i < sz; i++){for (j = 0, count = 0; j < sz; j++){if (arr[i] == arr[j]){count++;}}if (count == 1){printf("%d ", arr[i]);}}printf("\n");return 0;}//方法二#includevoid Find_single_num(int arr[], int sz, int* num1, int* num2){int i = 0;int ret = 0;//首先将所有数字异或for (i = 0; i < sz; i++){ret ^= arr[i];}//找出异或后的结果第几位出现1int pos = 0;for (pos = 0; pos < 32; pos++){if (((ret >> pos) & 1) == 1){break;}}//分组异或for (i = 0; i < sz; i++){if (((arr[i] >> pos)&1) == 1){*num1 ^= arr[i];}else{*num2 ^= arr[i];}}}int main(){int arr[] = { 1,2,3,4,5,1,2,3,4,6 };int sz = sizeof(arr) / sizeof(arr[0]);int num1 = 0;int num2 = 0;Find_single_num(arr, sz, &num1, &num2);printf("%d %d\n", num1, num2);return 0;}
二. 喝汽水 1. 题目内容:

【C】喝汽水,找单身狗问题

文章插图
喝汽水 , 1瓶汽水1元 , 2个空瓶可以换一瓶汽水 , 给20元 , 可以喝多少汽水 。
2. 解题思路
思路1:
思路2:
3. 代码实现
//方法一:#includeint main(){int money = 0;int total = 0;int empty = 0;scanf("%d", &money);total = money;empty = money;while (empty > 1){total += empty / 2;empty = empty / 2 + empty % 2;}printf("total = %d\n", total);return 0;}//方法二#includeint main(){int money = 0;int total = 0;int empty = 0;scanf("%d", &money);if (money <= 0){total = 0;}else{total = money * 2 - 1;}printf("total = %d\n", total);return 0;}
结语
【【C】喝汽水,找单身狗问题】各位小伙伴 , 看到这里就是缘分嘛 , 希望我的这些内容可以给你带来那么一丝丝帮助 , 可以的话三连支持一下呗!!! 感谢每一位走到这里的小伙伴 , 我们可以一起学习交流 , 一起进步!!!加油!!!