1,函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int sum = Add(a, b);
printf("%d\n", sum);
return 0;
}
2,牢记字符串结束后有\0在作为结束标志
strcpy函数使用
#define _use_c
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "bit";
char arr2[20] = "###########";
strcpy(arr2,arr1);//---括号里第一位放目的地,第二位放要拷贝的内容
//strcpy - string copy - 字符串拷贝
//strlen - string length - 字符串长度有关
printf("%s\n", arr2);
return 0;
}
3,memset函数
#include <stdio.h>
#include <string.h>
//
//memset
//memory -- 内存 set -- 设置
int main()
{
char arr[] = "hello world";
memset(arr,'*',5);
printf("%s\n", arr);
return 0;
}
“*”ASCII码值
4.自定义函数
例子1
//定义函数
int get_max(int x, int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int a = 10;
int b = 20;
//函数的使用场景
int max = get_max(a, b);
printf("max = %d\n", max);
return 0;
}
例子2
/*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;
//int tmp = 0;
printf("a=%d b=%d\n", a, b);
//Swap1(a, b);
Swap2(&a, &b);
/*tmp = a;
a = b;
b = tmp;*/
printf("a=%d b=%d\n", a, b);
return 0;
}
/*int main()
{
int a = 10;
int* pa = &a;//pa指针变量
*pa = 20;//解引用操作
printf("%d/n", a);
return 0;
}*/
传值调用
传值址调用
例子1
//是素数返回一,不是素数返回0
#include <math.h>
int is_prime(int n)
{
int j = 0;
for(j=2;j<=sqrt(n);j++)
{
if(n%j==0)
return 0;
}
return 1;
}
int main()
{
//打印100-200之间的素数
int i = 0;
for(i=100; i<=200; i++)
{
if(is_prime(i) ==1)
printf("%d\n", i);
}
return 0;
}
例子2
int is_leap_year(int y)
{
if((y%4==0&&y%100!=0) ||(y%400==0))
return 1;
else
return 0;
}
int main()
{
int year=0;
for(year=1000; year<=2000; year++)
{
//判断year是否为闰年
if(1 == is_leap_year(year))
{
printf("%d ",year);
}
}
}
例子3
#include <stdio.h>
int binary_search(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[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7;
int sz = sizeof(arr)/sizeof(arr[0]);
int ret = binary_search(arr, k, sz);
if(ret == -1)
{
printf("找不到指定的数字\n");
}
else
{
printf("找到了,下标是:%d\n", ret);
}
return 0;
}
例子4
void Add(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("num = %d\n", num);//1
Add(&num);
printf("num = %d\n", num);//2
Add(&num);
printf("num = %d\n", num);//2
return 0;
}
5,函数的嵌套调用和链式访问
函数和函数之间可以有机的组合的
(1)嵌套调用
(2)链式访问
例子1
#include <string.h>
int main()
{
int len = 0;
len = strlen("abc");
//1
printf("%d\n", len);
//2
printf("%d\n", strlen("abc"));
return 0;
}
例子2
int main()
{
printf("%d", printf("%d", printf("%d",43)));
return 0;
}
调用函数
//函数声明
int Add(int x, int y);
int main()
{
int a =10;
int b = 20;
int sum = 0;
//函数调用
sum = Add(a, b);
printf("%d\n", sum);
return 0;
}
//函数的定义
int Add(int x, int y)
{
int z = x+y;
return z;
}