1.一个数组中只有两个数字是出现一次,
其他所有数字都出现了两次。
找出这两个数字,编程实现。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Find_two(int* arr,int* pa,int* pb,int len)
{
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
if ((arr[i]==arr[j])&&(i!=j))
{
arr[i] = 0;
arr[j] = 0;
break;
}
}
}
for (int i = 0; i < len; i++)
{
if ((arr[i] != 0))
{
if (*pa==0)
{
*pa = arr[i];
}
else
{
*pb = arr[i];
}
}
}
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 4, 3, 2 };
int a = 0;
int* pa = &a;
int b = 0;
int* pb = &b;
int len = sizeof(arr) / sizeof(arr[0]);
Find_two(arr,pa,pb,len);
printf("%d,%d\n", a, b);
system("pause");
return 0;
}
2.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
给20元,可以多少汽水。
编程实现
20+10+5+2+1=38
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Soda(int money)
{
unsigned int bottle = money; //空瓶子
unsigned int num = bottle; //多少瓶
while (bottle)
{
num += bottle / 2;
bottle /=2;
}
return num;
}
int main()
{
int money = 0;
printf("有多少钱:");
scanf("%d", &money);
printf("%d", Soda(money));
system("pause");
return 0;
}