C语言 函数
时间:2024.11.10-11.11
一、学习内容
1、什么是函数
函数:程序中独立的功能。将反复书写的代码,又不确定什么时候回用到的代码打包起来。
2、函数的基本格式
函数的定义格式(写在main函数外)
void 函数名()
{
函数体;
}
函数里的代码不会主动运行,如果想要使用函数,必须进行函数的调用。
函数的调用方式
函数名();
3、带有形参的函数(只定义不赋值)
//问题:书写代码时,相加的数字不确定
void sum()
{int a=10,b=20;int c=a+b;printf("%d\n",c);
}//改进:只定义不赋值
void sum(int a,int b)
{int c=a+b;printf("%d\n",c);
}//调用
sum(10,20);
4、带有返回值的函数
//改进:只定义不赋值
void sum(int a,int b)
{int c=a+b;printf("%d\n",c);
}//调用
sum(10,20);问题:打印的结果没有交给调用处,而是直接输出到了打印台//改进:加上return关键字,将void改为int,void表示没有返回值,int...与返回值类型对应
//作用:1.结束函数 2.把后面的数据交给调用处
int sum(int a,int b)
{int c=a+b;return c;
}
#include<stdio.h>
int sum(int a,int b){
int sum=a+b;
return sum;}int main(){
int c=sum(93,10);
int d=sum(87,9);
if(c>d){
printf("小慧慧总分更高");}
else if(c<d){
printf("小丹丹总分更高");}
else if(c>d){
printf("两个人总分一样高");}return 0;}
使用函数的好处:
1、提高了代码的复用性
2、提高了代码的可维护性
5、定义函数的终极绝杀
三个问题:
1.定义函数,是为了干什么事情? 函数体
2.干这件事情,需要什么才能完成? 形参
3.干完了,调用处是否需要继续使用? 返回值类型
需要继续使用 , 必须写;不需要返回,用void
6、函数的注意事项
7、C语言中的常见函数(math.h、time.h)
函数查询访问网站
http://zh.cppreference.com
math.h:pow() 幂sqrt() 平方根ceil() 向上取整(进一法)floor() 向下取整(去尾法)abs() 绝对值time.h:time() 获取当前时间
//形参:表示获取的当前时间是否需要在其他地方进行存储一般来讲,不需要在其他地方进行存储的,NULL(大写)time(NULL);
//返回值:long long类型
//结果是什么呢?
//从1970年1月1日 0:0:0开始过了...秒的那个时间点
long long res = time(NULL);
printf("%lld\n",res);
8、随机数
随机数<stdlib.h> standard library 标准库
获取随机数
1.设置种子 srand()初始值,因为每一个随机数都是通过前一个数字再结合一系列复杂的计算得到的2.获取随机数int num= rand()3.输出打印
#include<stdio.h>
#include<stdlib.h>int main(){
//设置种子
srand(time(NULL));
//获取随机数
int num=rand();
//输出打印
printf("%d\n",num);return 0;
}
TIPS:x想要获取多个随机数,可以多次执行rand(),可以将rand()放入循环体里
9、随机数的两个小弊端
随机数结果固定的解决方案:让种子不固定
让一个变化的数据去充当种子 时间
srand(time(NULL));
TIPS:
如果忘记设置种子了,代码不会报错,程序默认的种子是1
绝招:用于生成任意范围之内的随机数
1.把这个范围变成包头不包尾,包左不包右的
举例:目标范围1-100
实际设置1-101
2.拿着尾巴 - 开头 101-1
3.修改代码
#include<stdio.h>
#include<stdlib.h>int main(){
//设置种子
srand(time(NULL));
//获取随机数
int num=rand()%100 +1;
//输出打印
printf("%d\n",num);return 0;
}
二、练习
1、练习1-两数之和
#include <stdio.h>
void sum()
{int a=10,b=20;int c=a+b;printf("%d\n",c);
}int main(){
sum();return 0;
}
2、练习2-带返回值的函数练习
#include<stdio.h>
int sum(int a,int b,int c)
{ int sum=a+b+c;return sum;}
int main(){
int sum1=sum(10,20,15);
int sum2=sum(20,30,17);
int sum3=sum(19,17,20);
int sum4=sum(23,21,19);
int arr[4]={sum1,sum2,sum3,sum3};
int max=0;
for(int i=0;i<4,i++)
{if(arr[i]>max)
{ max=arr[i];}}
printf("%d\n",max);
return 0;
}
2、练习2-猜数字小游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() {//设置种子srand(time(NULL));//获取随机数int num = rand() % 100 + 1;int n;for(int i=1;i<100;i++){scanf("%d", &n);if (n == num) {printf("你猜对了\n");break;}else if (n > num) {printf("你猜大了\n");}else if (n < num) {printf("你猜小了\n");}}return 0;
}
三、知识点和小技巧
1.如何查看函数的原型(定义)
按住ctrl键不放,用鼠标左键放在函数名上,再点击函数名
TIPS:方法和keil查看头文件的类似