eg.从两边向中间覆盖打印

//##############

// 逐步覆盖

//hello C world!

//我的错误示范
//#include<windows.h>
//int main()
//{
//	char arr1[] = "##############";
//	char arr2[] = "hello C world!";
//
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//
//	printf("%s", arr1);
//	int i = 0;
//	for (i = 0; i <= sz/2; i++)
//	{
//		
//		arr1[i] = arr2[i];
//		Sleep(1000);
//	}
//
//	printf("%s", arr1);
//	for (i = 0; i < sz; i++)
//		printf("%c", arr1[i]);
//
//	return 0;
//}


//答案
#include<Windows.h>
#include<string.h>
int main()
{
	char arr1[] = "##############";
	char arr2[] = "hello C world!";
	int left = 0;
	//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;
		//[a, b, c, \0]
		// 0  1  2      下标
	int right = strlen(arr1) - 1;
	while (left < right) {
		arr1[left] = arr2[left];
		arr1[right] = arr2[right];
		printf("%s\n", arr1);
		Sleep(1000);
		//休息1s
		system("cls");
		//系统函数,清空屏幕,达到覆盖作用
		left++;
		right--;
	}

	printf("%s\n", arr1);

	return 0;
}


折半查找/二分查找

//折半查找算法/二分查找算法
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 7;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] > k)
			right = mid - 1;
		else if (arr[mid] < k)		
			left = mid + 1;
		else
		{
			printf("找到了,下标是:%d\n", mid);
			break;
		}
		
	}
	if (left > right)
	{
		printf("找不到了!");
	}

	return 0;
}

折半查找自己写:

//折半查找(自己写)
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10,18 };

	int k = 0;
	printf("请输入要查找的数字:>");
	scanf("%d", &k);

	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] > k)
		{
			right = mid -1;
		}
		else if (arr[mid] < k) {
			left = mid + 1;
		}
		else
		{
			printf("找到了,下标为%d\n", mid);
			//不用k-1,用mid--k-1有局限性
			break;
		}
			
	}
	
	if(left > right)
		printf("没找到!\n");

}