✨博客主页: XIN-XIANG荣
✨系列专栏:【从0到1,C语言学习】
✨一句短话:你若盛开,蝴蝶自来!
✨博客说明:尽己所能,把每一篇博客写好,帮助自己熟悉所学知识,也希望自己的这些内容可以帮助到一些在学习路上的伙伴,文章中如果发现错误及不足之处,还望在评论区留言,我们一起交流进步!😊
😽俩道比较锻炼编程思维和逻辑思维的基础题目,使用C语言实现
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次;找出这两个只出现一次的数字。
思路1:
思路2:
//方法一
#include
int 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;
}
//方法二
#include
void 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];
}
//找出异或后的结果第几位出现1
int 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瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水。
思路1:
思路2:
//方法一:
#include
int 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;
}
//方法二
#include
int 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;
}
各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗😁!!! 感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步😉!!!加油🏃!!!
