函数介绍
首先了解函数就应该知道: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;
}
函数版冒泡排序
#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;
}
函数嵌套和递归
函数嵌套
#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;
}
结果
好了,今天就到这里了,我还是得考虑去买一本书来看看的,不早了,早点休息,明天再继续记载每一天的代码时光。