指针与函数的应用
调整该数组中数字的顺序的两种方法
输入一个整数数组,实现一个函数来调整该数组中数字的顺序;
使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
//输入一个整数数组,实现一个函数
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
//所有偶数位于数组的后半部分。
void sort1(int *parr, int n)
{
int tem;
int count = 0;
while (count < n)
{
if ((*parr) % 2)
{
parr++;
count++;
}
else
{
tem = *(parr + n - 1);
*(parr + n - 1) = *parr;
*parr = tem;
}
n--;
}
}
void sort2(int* parr, int n)
{
int* left = parr;
int* right = parr + n - 1;
while (left < right)
{
if ((*left % 2 == 0) && (*right % 2 == 1))
{
int tem = *left;
*left = *right;
*right = tem;
right--;
left++;
}
if (*left % 2)
{
left++;
}
if (*right % 2 != 0)
{
right--;
}
}
}
void main()
{
int arr1[] = { 1,2,3,4,5,6,7,8,9,0 };
int n1 = sizeof(arr1) / sizeof(arr1[0]);
for (int i = 0; i < n1; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
sort1(arr1, n1);
for (int i = 0; i < n1; i++)
{
printf("%d ", arr1[i]);
}
printf("\n-------------------------\n");
int arr2[] = { 0,2,3,4,5,67,1,5,7 };
int n2 = sizeof(arr2) / sizeof(arr2[0]);
for (int i = 0; i < n2; i++)
{
printf("%d ", arr2[i]);
}
printf("\n");
sort1(arr2, n2);
for (int i = 0; i < n2; i++)
{
printf("%d ", arr2[i]);
}
}
汽水数量问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水
给20元,可以多少汽水
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水
//给20元,可以多少汽水
int water_num(int money)
{
int num = money;
int empty = 0;
int yu = 0;
for (empty = money; empty > 1; empty = empty / 2 + yu)
{
num += empty/2;
yu = empty % 2;
}
return num;
}
void main()
{
int money = 20;
int waterNum = water_num(money);
printf("%d元能喝到%d瓶汽水\n", money, waterNum);
}
本文探讨了两种调整整数数组中奇偶数顺序的方法,一种使用双指针,另一种通过交换。同时,提出了一个关于汽水兑换的问题,通过算法计算在给定金额下能喝到的汽水总数。涉及数组操作、条件判断和循环控制等概念。
1169

被折叠的 条评论
为什么被折叠?



