第八天 学习函数了

函数介绍

首先了解函数就应该知道:C程序是由函数组成的,我们写的代码都是有主函数 main() 开始执行的。函数是 C 程序的基本模块,是用于完成特定任务的程序代码单元

从函数定义的角度来看,函数可以分为系统函数用户定义函数两种

  • 系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf().
  • 用户定义函数:用以解决用户的专门需要
    总之就是这样了,慢慢看总会看懂的,虽然我也不太懂,但官方就是这样说的。

随机数

好了我们来看看搞一个随机数来玩玩吧

#include <stdio.h>
//1、导入两个头文件
#include <stdlib.h>
#include <time.h>
int main(){
	int i;
	/*2、创建随机数种子 time 获取当前系统时间 
	让当前时间作为随机数种子*/
	srand((unsigned int )time(NULL));
	//3、生成随机数
	for(i=0;i<100;i++){
		printf("%d\n",rand()%100);
		//0~100之内的随机数
	}
}

结果一到一百的随机数

猜数字小游戏

//小游戏:猜数字 随机一个1~100之间的数 通过键盘输入数据 根

#include <stdio.h>
#include <stdlib.h>
int main(){
	据数据输入进行提示
	int value;//用户输入的数值
	int num;//随机数
	//srand(unsigned int)time(NULL));
	//这玩意我不知道,那就算了。
	num = rand()%100+1;//0到99
	while(1){//死循环
		scanf("%d",&value);
		if(num>value){
			printf("您输入的数太小了\n");
		} 
		else if(num<value){
			printf("您输入的数太大了\n");
		}
		else{
			printf("恭喜你,猜对了\n");
			break;//break与死循环搭配使用
		}
	}
}

结果自己看看

函数的定义和使用

//pow(x,y)
//使用函数的优点 提高代码阅读性 减少代码冗余
//函数格式
/返回值类型 函数名(函数参数列表)
{
代码体
返回值
}
/
/函数定义(函数的实现过程)如果有多个函数参数
需要使用 ,逗号进行隔开
/
/在函数定义时 函数的参数没有具体的赋值
只有一个数据类型 是一个形式上的参数 简称为形参
/

#include <stdio.h>

int add(int a,int b)
{
	int sum = a + b;
	return sum;//这里是将a+b的值返回给sum
}
int main()
{
	int a=10;
	int b=20;
	//函数调用(函数的使用过程)
	int sum;
	//在函数调用时传递的是函数的实参 有具体的值
	sum=add(a,b);
	printf("%d\n",sum);
	//return 0;
}

结果在这里插入图片描述

函数类型和返回值

无参函数

#include <stdio.h>
//无参函数
//定义格式
void _printf()
{
	printf("hello world\n");
	return;
}
int main(){
	//函数的调用
	_printf();
	return 0;
}

结果在这里插入图片描述

有参函数

#include <stdio.h>
void printf_int(int value){
	printf("%d\n",value);
	return;
}
int main(){
	printf_int(100);
	return 0;
}

结果在这里插入图片描述

函数执行流程

#include <stdio.h>
//在函数中实现了两个变量的交换
void swap(int a,int b){
	int temp = a;
	a = b;
	b = temp;
	printf("交换后的数据:\n");
	printf("a=%d\n",a);
	printf("b=%d\n",b);
}
int main(){
	int a = 10;
	int b = 20;
	printf("交换前数据:\n");
	printf("a=%d\n",a);
	printf("b=%d\n",b);
	swap(a,b);
	//在函数调用结束后 实参变量的值会不会发生变化
	/*printf("交换后的数据:\n");
	printf("a=%d\n",a);
	printf("b=%d\n",b);//如果放到这里就不会交换*/
}

结果在这里插入图片描述

函数调用

//函数执行过程
//1、函数声明
//2、函数定义
//3、函数调用

#include <stdio.h>
//函数声明 告诉编译器该函数存在
//extern int max(int a,int b);
//extern 声明 可以忽略不写
//int max(int a,int b);
int max(int,int);
int main(){
	int a=10;
	int b=20;
	int value;
	value = max(a,b);
	printf("最大值为:%d\n",value);
	return 0;
}
int max(int a,int b){
	return a>b?a:b;
}

20

函数版冒泡排序

#include <stdio.h>
//int bubble_sort() //命名规则
//函数版冒泡排序
	int bubblesort(int arr[], int len){
	int i,j;
	int temp;
	for(i=0;i<len-1;i++){
		for(j=0;j<len-i-1;j++){
			if(arr[j]>arr[j+1]){ 
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
	return 0;
}
	int main(){
	int i;//先定义后使用
	int arr[] ={8,1,9,5,2,7,10,6,4,3};

	bubblesort(arr,10);
	for(i=0;i<10;i++){
		printf("%d\n",arr[i]);
	}
	return 0;
}

1到10

函数嵌套和递归

函数嵌套

#include <stdio.h>
int testB(int a,int b){
	return a+b;
}
int testA(int a,int b){
	return testB(a,b);
}
int main(){
	int a=10;
	int b=20;
	int sum;
	sum = testA(a,b);
	printf("%d\n",sum);
		return 0;
}

结果在这里插入图片描述

函数的递归

//函数的递归调用指的是调用函数本身
//正在函数递归调用时需要有函数的出口
//递归函数的在栈区中占有资源会比较多
//如果在考试中没有特殊要求不建议大家使用递归函数

#include <stdio.h>
void fun(int a){
	//函数的出口
	if(a==0)
		return;
	fun(a-1);
	printf("%d\n",a);
}
int main(){
	int a=10;
	fun(a);
	return 0;
}

结果1到10
好了,今天就到这里了,我还是得考虑去买一本书来看看的,不早了,早点休息,明天再继续记载每一天的代码时光。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值