cppreference.com
cplusplus.com
函数的基本表达式:
类型 函数名(参数)
{
语句;
}
写一函数交换两个整形变量的值:
void change(int*pa,int*pb)
{
int tmp;
tem=*pa //交换a,b的地址
*pa=*pb;
*pb=tmp;
}
int main()
{
int a=10,b=20;
change(&a,&b);
printf("%a,%b",a,b);
}
这里将a,b的地址传给change函数,称为传址调用,可以与外部变量产生联系。
若不使用第三个变量,也可以用以下两种方法:
int main()
{
int a = 3, b = 5;
a = a + b; //a存放a+b的值
b = a - b; //将a+b-b的值赋予b
a = a - b; //将a+b-a的值赋予a
printf("a=%d b=%d", a, b);
return 0;
}
^为按二进制位异或运算(相同为0,相异为1)
int main()
{
int a = 3, b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d b=%d", a, b);
return 0;
}
写一函数打印出1000-2000年的闰年:
int is_leap_year(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) //判断闰年
return 1;
else
return 0;
}
int main()
{
int year = 0;
for (year = 1000; year <= 2000; year++) //循环体
{
if(is_leap_year(year)==1)
{
printf("%d ", year);
}
}
return 0;
写一函数利用二分查找法,查找数字下标:
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;
printf("请输入查找的数字:");
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
int ret=binary_search(arr, k,sz);
if (ret == -1)
{
printf("找不到");
}
else
{
printf("找到了,下标是%d ", ret);
}
return 0;
}
写一函数,使每次使用函数,num的值增加1
void Add(int*p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("num=%d\n", num);
Add(&num);
printf("num=%d\n", num);
Add(&num);
printf("num=%d\n", num);
return 0;
}
函数的声明,调用与定义:
int Add(int, int ); //函数声明(一般放在头文件,先声明,后使用)
int main()
{
int a = 10, b = 20, sum;
sum = Add(a, b); //函数调用
printf("%d", sum);
return 0;
}
int Add(int x,int y) //函数定义(一般放在另一个源文件中)
{
int z;
z = x + y;
return z;
}
如需include自定义库,需用" "