首先大家看一下两段代码
折半查找
//折半查找
#include<stdio.h>
int main()
{
int arr[10] = { 2,3,5,6,7,9,14,21,25,26 };
int k = 26;
int size = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = size - 1;
while (left<=right)
{
int mid = (left + right) / 2;
if (arr[mid]<k)
{
left = mid + 1;
}
else if (arr[mid]>k)
{
right = mid - 1;
}
else
{
printf("找到了,下标是%d\n", mid);
break;
}
}
if (left>right)
{
printf("找不到");
}
return 0;
}
折半查找时,求数组大小用的是
int size = sizeof(arr) / sizeof(arr[0])
用数组整体大小除以元素大小,得出元素个数
字符从两边分开
//字符从两边向中间展开
#include<stdio.h>
#include<Windows.h>
int main()
{
char arr1[] = "mo yu yi shu jia niu bi !!!";
char arr2[] = "***************************";
int left = 0;
int right = strlen(arr1) - 1;
/*int right= sizeof(arr1)/sizeof(arr1[0])-2*/
while (left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(99);
left++;
right--;
}
return 0;
}
在这段代码中,用的是strlen(), ( sizeof()代码已写出 )
总结
#include<stdio.h>
int main()
{
int arr1[] = { 4,5,6,3,2,1,5,6,9 };
char arr2[] = "moyuyishujia";
int a1 = strlen(arr1);
//strlen只能求字符串长度,不包含结尾空字符\0
int b1 = strlen(arr2);
//标准的strlen求字符串长度 预测输出为 12
int a2 = sizeof(arr1) / sizeof(arr1[0]);
//求数组元素个数 预测输出为 9
int b2 = sizeof(arr2) / sizeof(arr2[0]);
//求字符串个数,由于sizeof包含最后空字符\0,故预测结果为 13
printf("a1=%d b1=%d a2=%d b2=%d", a1, b1, a2, b2);
return 0;
}
sizeof()函数用于计算数据类型或变量的大小,可以用于任何类型的计算,返回的是字节数。
strlen()函数用于计算字符串的长度,只能用于以空字符结尾的字符串,返回的是字符个数。