函数的基本使用和递归
1.函数是什么
2.库函数
3.自定义函数
4.函数参数
5.函数调用
6.函数的嵌套调用和链式访问
7.函数的声明和定义
函数是什么
C语言中函数的分类
1.库函数
2.自定义函数
库函数:
简单的总结,C语言常用的库函数都有:
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = { 0 };
char arr2[] = "hello bit";
strcpy(arr1, arr2);
printf("%s\n",arr1);//打印arr1这个字符串%s - 以字符串的格式打印
return 0;
}
int main()
{
char arr[] = "hello bit";
memset(arr,'x', 5);
printf("%s\n", arr);
return 0;
}
自定义函数
//Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝
//改变形参,不能改变实参
void Swap1(int x,int y)//传值调用
{
int z = 0;
z = x;
x = y;
y = z;
}
void Swap2(int* pa, int* pb)//传址调用
{
int z = 0;
z = *pa;
*pa = *pb;
*pb = z;
}
int main()
{
int a = 10;
int b = 20;
printf("交换前:a=%d b=%d\n", a, b);
Swap2(&a, &b);
printf("交换后:a=%d b=%d\n", a, b);
return 0;
}
函数的调用
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//
//void menu()//无返回值函数
//{
// printf("**************************\n");
// printf("******** 1.play *******\n");
// printf("******** 0.exit *******\n");
// printf("**************************\n");
//
//}
//
//void game()
//{
//
// int guess;
// int ret = rand() % 100 + 1;//产生1-100的随机数
// while (1)
// {
// printf("请猜一个数字:<");
// scanf("%d", &guess);
// if (guess < ret)
// {
// printf("猜小了\n");
// }
// else if (guess > ret)
// {
// printf("猜大了\n");
// }
// else
// {
// printf("恭喜你,猜对了\n");
// break;
// }
// }
//}
//#include <string.h>
//int main()
//{
// char arr1[20] = { 0 };
// char arr2[] = "hello bit";
// strcpy(arr1, arr2);
//
// printf("%s\n",arr1);//打印arr1这个字符串%s - 以字符串的格式打印
// return 0;
//}
//
//int main()
//{
// char arr[] = "hello bit";
//
// memset(arr,'x', 5);
//
// printf("%s\n", arr);
//
// return 0;
//}
Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝
改变形参,不能改变实参
//void Swap1(int x,int y)//传值调用
//{
// int z = 0;
// z = x;
// x = y;
// y = z;
//}
//
//void Swap2(int* pa, int* pb)//传址调用
//{
// int z = 0;
// z = *pa;
// *pa = *pb;
// *pb = z;
//}
//
//
//
//
//int main()
//{
// int a = 10;
// int b = 20;
//
// printf("交换前:a=%d b=%d\n", a, b);
// Swap2(&a, &b);
//
// printf("交换后:a=%d b=%d\n", a, b);
//
// return 0;
//}
//#include <math.h>
//int is_prime(int x)
//{
// //2-x-1
// int j = 0;
// for (j = 2; j <=sqrt(x); j++)
// {
// if (x % j == 0)
// {
// return 0;
// }
//
// }
//
// return 1;
//
//}
//
//
//int main()
//{
// //100-200之间的素数
// int i = 0;
// int count = 0;
// for (i = 100; i <= 200; i++)
// {
// //判断i是否为素数
// if (is_prime(i) == 1)
// {
// printf("%d ", i);
// count++;
// }
// }
//
// printf("\ncount=%d ", count);
// return 0;
//}
//int is_leap_year(int x)
//{
// if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0))
// {
// return 1;
// }
// else
// return 0;
//}
//
//
//
//int main()
//{
// int y = 0;
// for (y = 1000; y <= 2000; y++)
// {
// if (is_leap_year(y) == 1)
// {
// printf("%d ", y);
// }
//
// }
//
// return 0;
//}
//int binary_search(int* a,int key1)
int binary_search(int arr1[],int key1,int n1)
{
int left = 0;
int right = n1 - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr1[mid] < key1)
{
left = mid + 1;
}
else if (arr1[mid] > key1)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int key = 7;
int n = sizeof(arr) / sizeof(arr[0]);
//找到了就返回找到的位置的下标
//找不到就返回-1
//数组arr传参,实际传递的不是数组本身
//仅仅传过去了数组首元素的地址
int ret=binary_search(arr,key,n);
if (ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标是: %d\n", ret);
}
return 0;
}