17

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 

找出这两个数字,编程实现。

#include<stdio.h>  
Find_Num(int arr[], int sz, int * num1, int *num2)
{
	int i = 0;
	int ret = 0;
	int count = 0;
	int tem = 0;
	for (i = 0; i < sz; i++)
	{
		ret ^= arr[i];  
	}
	tem = ret;
	while (ret)
	{
		if (ret % 2 == 1)
		{
			break;
		}
		count++; 
		ret /= 2;
	}
	for (i = 0; i < sz; i++)
	{
		if ((arr[i] >> count) & 1)
		{
			*num1 ^= arr[i];
		}
	}
	*num2 = tem^*num1;
}
int main()
{
	int num1 = 0;
	int num2 = 0;
	int arr[] = { 1, 2, 3, 4, 5, 1, 2, 3, 4, 8 };
	int sz = sizeof (arr) / sizeof(arr[0]);
	Find_Num(arr, sz, &num1, &num2);
	printf("%d,%d\n", num1, num2);
	return 0;
}

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。

 #include<stdio.h>
int  Heqishui(int n)
{
	int ret = n;
	while (n > 1)
	{
		ret = ret + n / 2;
		n = n / 2 + n % 2;
	}
	return ret;
}
int main()
{
	int money = 20;
	printf("可以喝到%d瓶汽水\n", Heqishui(money));
	return 0;
}

模拟实现strcpy

#include <stdio.h>  
#include<assert.h>  
char * my_strcpy(char *dest, const char *src)
{
	assert(dest != NULL);
	assert(src != NULL);
	char *ret = dest;
	while (*dest++ = *src++)
	{
		;
	}
	return ret;
}


int main()
{
	char a[10]; 
	char *q = "bcdef";
	printf("%s\n", my_strcpy(a, q));
	return 0;
}

模拟实现strcat

#include <stdio.h>
#include <assert.h>
void my_strcat(char *dest, const char *src)
{
	assert(dest);
	assert(src);
	while (*dest != '\0')
	{
		dest++;
	}
	while (*dest++ = *src++)
	{
		;
	}
}
int main()
{
	char a[20] = "abcdef";
	char b[] = "abdt";
	strcat(a, b);
	printf("%s\n", a);
	return 0;
}
阅读更多
个人分类: 菜鸟
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭