#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//改变数组的库函数
int main()
{
char arr[] = { "hello world" };
memset(arr, '#', 5);//memset(需要改变的数组,'要变成什么字符',改变多少位)
printf("%s", arr);
return 0;
}
//函数
//函数返回类型 函数名 接受数据
int max(int x,int y)
{
if (x > y)
return x;
else
return y;
}
int main()
{
int a = 10;
int b = 20;
int max_1 = max(a, b);
int max_2 = max(200, 100);
printf("%d\n", max_1);
printf("%d\n", max_2);
return 0;
}
// 交换a与b位置的函数
void Swap1(int x, int y)
{
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
void Swap2(int *pa,int *pb)
{
int tmp = 0;
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("a=%d b=%d\n", a, b);
传值调用是将数值传送到函数中,函数的形参和实参分别占有不同内存块,对形参的修改不会影响到实参
Swap1(a,b);
printf("a=%d b=%d\n", a, b);
传址调用是把外部创建变量的内存地址传递给函数的一种函数调用方式,
这种传参方式可以让函数和函数外部的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量
Swap2(&a, &b);
printf("a=%d b=%d\n", a, b);
}
//当实参传递给形参的时候
//形参其实是实参的一份拷贝
//对形参的修改不能影响到实参
//判断是否是素数的函数
int sushu(int n)
{
for (int j = 2; j < n; j++)
{
if (n % j == 0)
return 0;
}
return 1;
}
int main()
{
for (int i = 100; i <= 200; i++)
{
if (sushu(i) == 1)
printf("%d\n", i);
}
return 0;
}
//二分查找
//在一个有序数组中找到某个数字
// 如果找到了返回这个数的下标,没找到返回-1
int binary_search(int arr[], int k,int sz)
{
//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)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,6,7,8,9,21 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, k,sz);
if (ret == -1)
printf("没有找到指定数字");
else
printf("找到了,下标为:%d\n", ret);
return 0;
}
//函数是可以嵌套调用的
//链式访问
//把一个函数的返回值作为另一个函数的参数
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
return 0;
}