1、系统函数,即库函数:这是有编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf()。
2、用户定义函数:用以解决用户的专门需要。
7.1库函数的正确调用
1、导入头文件
2、使用库函数,如printf scanf
7.11函数的调用:产生随机数
int main01(void)
{
int i,j;
2、创建随机数种子 time 获取当前系统时间,将当前系统时间作为随机数种子
srand((unsigned int)time(NULL));
3、生成随机数
for(i=0;i<100;i++)
{
printf("%d\n",rand()%100);
}
return 0;
}
小游戏;猜数字 随机一个1~100之间的书 通过键盘输入数据 根据数据输入进行提示
int main(void){
int value;
int num;
srand((unsigned int)time(NULL));
num = rand()%100+1;
while(1)
{
scanf("%d",&value);
if(num>value)
{
printf("您输入的数太小了\n");
}
else if(num<value)
{
printf("您输入的数太大了\n");
}else{
printf("恭喜您,猜对了");
break;
}
}
return 0;
}
7.2函数的定义方法
使用函数的优点,提高代码阅读性 减少代码冗余
函数格式
返回值类型 函数名(函数参数列表)
{
代码体
返回值
}
7.3函数的类型和返回值
函数的返回值是通过函数中的return语句获得的,return后面的值也可以是一个表达式
a)尽量保证return语句中表达式的值和函数返回类型是同一类型
b)如果函数返回的类型和return语句中表达式的值不一致,则以函数返回类型为准,即函数返回类型决定返回值的类型。对数值型数据,可以自动进行类型转换。
注意:如果函数返回的类型和return语句中表达式的值不一致,而它又无法自动进行类型转换,程序则会报错
c)return语句的另一个作用为中断return所在的执行函数,类似于break中断循环,switch语句一样。
d)如果函数带返回值,return后面必须跟着一个值,如果函数没有返回值,函数名字的前面必须写一个void关键字,这时候,我们写代码时也可以通过return中断函数(也可以不用),只是这是,return后面不带内容(分号“;”除外)
7.4形式参数与实在参数,参数值的传递
函数的形参与实参
//值传递 形参不能改变实参的值
//地址传递 形参可以改变实参的值
7.5函数的正确调用,嵌套调用,递归调用
//函数声明 函数执行过程 告诉编译器改函数存在
递归函数必须要有出口,因为递归函数在栈区战友资源会比较多
7.6局部变量和全局变量
auto int a=10
局部变量,只能在函数内部使用,也可以不加auto
作用域,在函数内部,从变量定义到函数结束
在不同函数内的局部变量名可以相同
在函数外部定义变量成为全局变量
extern int a
全局变量作用域是整个项目中所有文件 如果在其他文件中使用需要加入声明
在函数中改变全局变量的值可以改变全局变量的值