函数:
库函数(学会查文档并使用库函数)
自定义函数
举例: strcpy 字符串拷贝
int main()
{
char arr1[20] = "abcdef";
char arr2[20] = { 0 };
strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;
}
memset 设置
char arr1[] = "hello world";
memset(arr1, 'x', 2);
printf("%s\n", arr1);
用函数实现交换两个值
不能传值过去,形参是实参的拷贝,形参的改变不影响实参,要传地址
void swap(int* x, int* y)//用指针接收
{
int t = *x;
*x = *y;
*y = t;
}
int main()
{
int a = 0, b = 0;
scanf("%d %d", &a, &b);
printf("%d %d\n", a, b);
swap(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
判断是否是素数
int isp(int i)
{
for (int j = 2;j < i;j++)
{
if (i % j == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int i = 0;
int count = 0;
for (i = 100;i <= 200;i++)
{
if (1 == isp(i))
{
count++;
printf("%d ", i);
}
}
printf("\n%d\n", count);
}
实现有序数组的二分查找
int binary(int arr[], int k, int sz)
{
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[10] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
int s = binary(arr, k, sz);
printf("找到了%d", s);
return 0;
}
实现调用一次加一
void Add(int* n)
{
*n += 1;
}
int main()
{
int num = 0;
Add(&num);
printf("%d", num);
return 0;
}
函数先声明后使用
void Add(int *n);//函数的声明,一般放在头文件中
int main()
{
int num = 0;
Add(&num);
printf("%d", num);
return 0;
}
//函数的定义
void Add(int* n)
{
*n += 1;
}
递归:函数自己调用自己(从哪里调用就回到哪里 大事化小 )
- 存在限制条件
- 每次递归后,越来越接近限制条件
接收一个整型值,按照顺序打印每一位
// 1234
//p(123) 4
//p(12) 3 4
//p(1) 2 3 4
void print(unsigned int n)
{
if (n > 9)
{
print(n / 10);
}
printf("%d ", n % 10);
}
int main()
{
unsigned int num = 0;
scanf("%d", &num);
print(num);
return 0;
}
不创建变量,求字符串长度
int my_strlen(char *arr)
{
if(*arr != '\0')
{
return 1 + my_strlen(arr+1);
}
return 0;
}
int main()
{
char arr[10] = "abcdef";
int len = my_strlen(arr);
printf("%d", len);
return 0;
}
内存划分为一个个内存单元,每个单元是一字节
每个字节都有一个地址
求n的阶乘
int fac(int n)
{
if (n <= 1)
{
return 1;
}
return n * fac(n - 1);
}
int main()
{
int n = 0;
scanf("%d", &n);
int c = fac(n);
printf("%d", c);
return 0;
}
求第n个斐波那契数列
int fib(int x)
{
if (x <= 2)
{
return 1;
}
return fib(x - 1) + fib(x - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
int c = fib(n);
printf("%d\n", c);
return 0;
}
int fib(int n)
{
int a = 1;
int b = 1;
int c = 0;
while (n >= 3)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d", &n);
int c = fib(n);
printf("%d\n", c);
return 0;
}
使用命令行关机
shutdown -s -t 60 一分钟后关机
shutdown -a 关闭命令