1)系统函数(库函数)
2)用户定义函数
函数调用 5 要素:
#include<time.h>
time_t time(time_t *t);
//功能:获取系统当前时间
//参数:常设置为NULL
//返回值:当前系统时间,time_t 相当于 long 类型,单位为毫秒
# include<stdlib.h>
void srand(unsigned int seed);
//功能:用来产生 rand() 函数产生随机数时的随机种子
//参数:如果每次 seed 相同,rand() 产生的随机数相同
//返回值:无
# include<stdlib.h>
int rand(void);
//功能:返回一个随机数
//参数:无
//返回值:随机数
#include<time.h>
# include<stdlib.h>
# include<stddio.h>
//双色球 6个红球,1-32,不可重复 1个蓝球,1-16,可以和红球号码重复
int arr[7]={0};
srand((unsigned int)time(NULL));
int value=0;
int flag=0;
int j;
for(int i=0;i<6;i++)
{
value=rand()%32+1;
//去重
for(j=0;j<flag;j++)
{
if(value==arr[j])
{
i--;
break;
}
}
if(j==flag)
{
arr[flag]=value;
flag++;
}
}
arr[7]=rand()%16+1;
返回类型 函数名(形式参数列表)
{
函数体(数据定义部分,执行语句部分)
}
//函数定义
int add(int a,int b)
{
int sum=a+b;
return sum;
}
int main()
{
int a=10;
int b=20;
//函数调用
int res=add(a,b);
return 0;
}
1)函数名:见名知意
2)形参列表:在函数没有被调用时,形参不占用内存中的存储单元
3)函数体:函数功能实现的过程
4)返回值:通过函数中的 return 语句获得,return 后面的值也可以是一个表达式
1)进入 main() 函数
2)调用自定义函数
3)自定义函数执行完,main() 会继续往下执行,直到执行 return 0,程序执行完毕
//字符串比较,相同返回0,不同返回 1 或者 -1
int strcmp(char ch1[],char ch2[])
{
int i=0;
while(ch1[i]==ch2[i])
{
//是否到字符串结尾
if(ch1[i]=='\0')
{
return 0;
}
i++;
}
return ch1[i]>ch2[i]?1:-1;
}
//无参函数
void func1()
{
printf("Hello\n");
}
int func2()
{
return rand()%10;
}
int main()
{
func1;
srand((unsigned int)time(NULL));
int randNum=func2();
return 0;
}
1)如果实参列表包含多个实参,则各参数间用逗号隔开;
2)实参与形参应该个数相等,类型匹配(相同或者赋值类型兼容),按顺序对应;
3)实参可以是常量、变量、表达式,无论实参是何种类型的量,在进行函数的调用时,他们应该具有确定的值。
//有参函数
//冒泡排序函数
void bubbleSort(int arr[],int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0lj<len-1-i;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return; //无返回值,return可写可不写
}
int main()
{
int arr[]={9,1,7,4,2,10,3,8,6,5};
bubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}
自定义函数三个过程:
当函数定义在主函数之前,可以直接定义,不比声明;但是当函数定义在主函数之后,就必须在主函数之前声明函数。
//函数声明
extern int add(int a,int b);
//在同一个文件中进行声明和定义,函数声明的时候可以省略 extern
int add(int a,int b);
//还可以省略形参的参数名
int add(int, int );
int main()
{
//函数调用
add(10,20);
return 0;
}
//函数定义
int add(int a,int b)
{
return a+b;
}
1)exit() 函数
exit(0);
01main.c
#include<stdio.h>
#include"02func.h"
int main()
{
int a = 10;
int b = 20;
int res = maxValue(a, b);
printf("%d\n", res);
return 0;
}
02func.c
#include"02func.h"
//函数定义
int maxValue(int a, int b)
{
return a > b ? a : b;
}
02func.h
#pragma once // 防止头文件重复包含
//#ifndef __02_FUNC_H__
//#define __02_FUNC_H__
//全局变量的定义
//函数的声明
//extern int maxValue(int a, int b);
int maxValue(int a, int b);
//int maxValue(int,int);