1.利用函数查找数组中某个值,找到了返回1,没有找到返回0;
return 0可以 终止 main() 函数,并返回值 0。
int Search_arr(int arr[], int length, int key) {//数组作为形参传入函数之后,会退化成一个指针。所以在函数中对指针进行sizeof,即对一个地址sizeof。在32位系统,因为8位 = 1字节,所以sizeof(地址) = 4。而在64位系统中则等于 8。所以必须增加一个表示数组长度的变量。
for (int i = 0; i < length; i++) {
if (arr[i] == key)
return 1;
}
return 0;
}
int main() {
int brr[] = { 1,2,3,4,5,6 };
int result=Search_arr(brr, 6, 0);
printf("%d",result);
return 0;
}
2.字符串连接,找到字符串一的结尾,复制字符串2进入1尾部。一般不用scanf读取字符再连接。
#include<stdio.h>
/*int main() {
char arr[10] = "abcd";
char brr[] = "xyz";
int i;
int j;
for (i = 0; arr[i] != '\0'; i++);
for ( j = 0; brr[j] != '\0'; j++) {
arr[i+j] = brr[j];
}
arr[i + j] = '\0';
printf("%s", arr);
}
*/
void add_str(char arr[10],char brr[10]) {
int i;
int j;
for (i = 0; arr[i] != '\0'; i++);
for (j = 0; brr[j] != '\0'; j++) {
arr[i + j] = brr[j];
}
arr[i + j] = '\0';
printf("%s", arr);
}
int main() {
char str1[100] = "HELLO";
char str2[100] = "China";
add_str(str1, str2);
}
3.逆转字符串
strlen函数在c语言中的用法是c语言库的一个函数,包含在[string.h]中。它用于计算字符串中的元素数,即从数组头开始计数,直到满足字符串结束符[\0],计数结果不包括[\0]
#include<stdio.h>;
#include<string.h>
void Reverse(char arr[]) {
int len = strlen(arr);
/*for (int i = 0, j = len - 1-i; i < j; i++) { //这个函数是错误的
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}*/
for (int i = 0, j = len - 1; i < j; i++, j--) {
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int main() {
char a[] = "qwertyui";
Reverse(a);
printf("%s", a);
}
4数组转字符串 12345->“54321”->“12345”
#include<stdio.h>;
#include<string.h>
void Reverse(char arr[]) {
int len= strlen(arr);
for (int i = 0, j = len - 1; i < j; i++, j--) {
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
void Change(char str[],int n) {
int i = 0;
while (n != 0) {
str[i++] = n % 10+'0';
n /= 10;
}
str[i] = '\0';
Reverse(str);
}
int main() {
char str[100];
Change(str, 12345);
printf("%s", str);
}
5折半查找 。
形参是数组,不可以使用sizeof(arr) / sizeof(arr[0])。因为数组作为形参传入函数之后,会退化成一个指针。所以在函数中对指针进行sizeof,即对一个地址sizeof。在32位系统,因为8位 = 1字节,所以sizeof(地址) = 4。而在64位系统中则等于 8。
在函数中可以使用sizeof(arr) / sizeof(arr[0])。例如 binsearch(arr,sizeof(arr) / sizeof(arr[0]),1);
#include<stdio.h>
int binsearch(int arr[], int length, int key) {
int low = 0;
int high = length - 1;
int mid;
while (low <= high) { //不可以忘记等于号
mid = (low + high) / 2;
if (arr[mid] == key)
//printf("%d", mid+1);
return mid+1;
else if (arr[mid] > key)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
int main() {
int arr[] = {1,3,5,7,10};
printf("%d", binsearch(arr, 5, 1));
}