c语言入门(四)

函数:

库函数(学会查文档并使用库函数)

自定义函数

举例: 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    关闭命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值