1.调整奇偶数顺序
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
void move(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while (left < right)
{
//从左向右找一个偶数,停下来
while ((left < right) && (arr[left] % 2 == 1))
{
left++;
}
//从右向左找一个奇数,停下来
while (((left < right)) && (arr[right] % 2 == 0))
{
right--;
}
//交换奇数和偶数
if (left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
}
int main()
{
int arr[10] = { 0 };
//输入
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
//scanf("%d", &arr[i]);
scanf("%d", arr + i);
}
//1 2 3 4 5 6 7 8 9 10
//调整
move(arr, sz);
//输出
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
2.写一个函数返回参数二进制中1的个数
#include<stdio.h>
int counts(int n)
{
int count = 0;
while(n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
int n = counts(num);
printf("%d\n", n);
return 0;
}
3.喝汽水
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
#include<stdio.h>
int main()
{
int money = 0;
scanf("%d", &money);
int total = money;
int empty = money;
//置换
while (empty >= 2)
{
total += empty / 2;
empty = empty / 2 + empty % 2;
}
if (money > 0)
printf("%d\n", 2 * money - 1);
else
printf("%d\n", 0);
return 0;
}