一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以买多少汽水

1.一个数组中只有两个数字是出现一次,
其他所有数字都出现了两次。
找出这两个数字,编程实现。
我的想法:除了两个数字是单次出现外,其他都是都是两个成对出现。那我们可以先遍历数组,找出在这个数组中没有跟它相等的,然后输出就OK了。

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <stdlib.h>
void Find(int arr[10],int len)
{
	for (int i = 0; i < len; i++)
	{
		int count = 0;
		for (int j = 0; j < len; j++)
		{
			if (arr[i] == arr[j]&&i!=j)
			{
				count++;
			}
		}
		if (count == 0)
		{
			printf("%d\n", arr[i]);
		}
	}
}

int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 4, 6, 3, 1, 5 };
	int a = sizeof(arr) / sizeof(int);
	Find(arr,a);
	system("pause");
	return 0;
}

2.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
给20元,可以买多少汽水。
编程实现。
我的想法:先把钱全部买汽水。然后空瓶继续换。把这样当成一个循环,直到换不了汽水为止。

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <stdlib.h>

void Soad()
{
	int a = 0;//汽水数
	int b = 0;//空瓶数
	int m = 0;//给的钱数
	int count = 0;//能买到的总数
	printf("请输入钱数->");
	scanf("%d", &m);
	while (m >= 1 || b >= 2 || a >= 2)
	{
		if (m > 0)//用钱买汽水
		{
			a = m;
			m = 0;
			b = a;
			count += a;
		}
		if (a >= 0)//汽水变成空瓶
		{
			b = a;
		}
		if (b >= 2)//空瓶换汽水
		{
			a = b / 2;
			b = b - 2 * a;
			count += a;
		}
	}
	printf("%d\n", count);
}
int main()
{
    Soad();
	system("pause");
	return 0;
}

3.模拟实现strcpy
首先要知道strcpy是什么,它是将一个字符串复制到另一个字符串里面。

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <stdlib.h>

char* Strcpy(char arr1[],char arr2[])
{
	int i = 0;
	for (; arr1[i] != '\0';i++)
	{
		arr1[i] = arr2[i];
	}
	arr1[i] = '\0';
	return arr1;
}

int main()
{
	char arr1[1024] = "abcd";
	char arr2[] = "ABCD";
	Strcpy(arr1, arr2);
	printf("%s\n", arr1);
	system("pause");
	return 0;
}

4.模拟实现strcat
strcat:将两个字符串结合起来。

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <stdlib.h>

char* Strcat(char arr1[], char arr2[])
{
	int i = 0;
	for (; arr1[i] != 0; i++);
	for (int j = 0; arr2[j] != '\0'; j++,i++)
	{
		arr1[i] = arr2[j];
	}
	arr1[i] = '\0';
	return arr1;
}

int main()
{
	char arr1[1024] = "abcd";//数组范围大点就不用担心访问越界
	char arr2[] = "ABCD";
	Strcat(arr1, arr2);
	printf("%s\n", arr1);
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/be_gin_ner/article/details/86431982