指针上总结以及练习

 
 
 
 
 
 
//3:模拟实现strcpy (字符串拷贝)
#include<stdio.h>
#include<windows.h>
#include<assert.h>
//#include<string.h>(char *strcpy( char *strDestination, const char *strSource )的头文件)
//#pragma warning (disable:4996)
char*my_strcpy(char *dest,  const char *src)
{
	assert(dest);//检验数组
	assert(src);
	while (*dest=*src)
	{
		dest++;
		src++;
	}
	return dest;
}
int main()
{
	const char str[32] = "abcdefg";//将其定义为数组或者指针都可以
	char buf[32];
	my_strcpy(buf, str);//后者拷贝给前者
	printf("%s\n", buf);
	system("pause");
	return 0;
}
 
 
//4.模拟实现strcat (字符串拼接)
#include<stdio.h>
#include<windows.h>
//#include<string.h>
#include<assert.h>
//#pragma warning (disable:4996)
char*my_strcat(char*dest,  const char*src)
{
	assert(dest);
	assert(src);
	while (*dest)
	{
		dest++;
	}//让dest指向最后一个字符
	while (*dest = *src)
	{
		dest++;
		src++;
	}
	return dest;
}
int main()
{
	 char str[32]= "abcdefg";//将其改为指针形式就中断,因为要拼接需要空间
	 char *buf= "123456789";
	 my_strcat(str, buf);//后者拼接在前者上
	 printf("%s\n", str);
	 system("pause");
	 return 0;
}
 
 
//1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 
//找出这两个数字,编程实现。
#include<stdio.h>
#include<windows.h>
void my_nums( int arr[10],int size )
{
	int i = 0;
	int ret = 0;
	int num1 = 0;
	int num2 = 0;
	int flage = 0;
	for (i=0; i < size; i++)
	{
		ret ^= arr[i];
	}
	for (i=0; i < 32; i++)
	{
		if (((ret >> i) & 1) != 1)//找异或之后这个数字最先出现1的位置
		{
			flage++;
		}
		else 
			break;
	}
	for (i=0; i < size; i++)
	{
		if (((arr[i] >> flage) & 1) == 1)
		{
			num1 ^= arr[i];
		}
		else num2 ^= arr[i];
	}

	printf("%d  %d\n", num1, num2);

}
int main()
{
	int arr[10] = { 1, 2, 1, 2, 3, 5, 6, 5, 6, 4 };
	int size = sizeof(arr) / sizeof(arr[0]);
	my_nums(arr,size);
	system("pause");
	return 0;
}
 
 
//2.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
#include<stdio.h>
#include<windows.h>
int my_water(int mymoney, int watermoney)
{
	int n =0;
	n = mymoney / watermoney;
	int ret = n;
	while (n > 1)
	{
		ret += n / 2;
		n = n / 2 + n % 2;
	}
	return  ret;
}
int main()
{
	int mymoney = 20;
	int watermoney = 1;
	int n=0;
	n = my_water(mymoney, watermoney);
	printf("汽水瓶数:%d", n);
	system("pause");
	return 0;
}



猜你喜欢

转载自blog.csdn.net/pigdwh/article/details/80292351