目录
一、函数的概念
二、库函数
1.标准库和头文件
- C语⾔的国际标准ANSIC规定了⼀些常⽤的函数的标准,被称为标准库(库函数),那不同的编译器⼚商根据ANSI提供的C语⾔标准就给出了⼀系列函数的实现。
库函数的种类如下:
2.库函数的使⽤⽅法
库函数的学习和查看工具如下:
库函数相关头⽂件:https://zh.cppreference.com/w/c/header
C/C++官⽅的链接:https://zh.cppreference.com/w/c/header
2.1库函数的一般格式
下面以查找sqrt为例:
实践:
include<stdio.h>
#include <math.h>
int main()
{
double d = 16.0;
double r = sqrt(d);
printf("%lf\n", r);
return 0;
}
结果
三、自定义函数
虽然给了库函数,但是不能实现我们生活中想要的功能,这个时候就要程序员自己,创造函数为程序添加一些新奇的功能——自定义函数。
1.函数的语法格式
ret_type fun_name(形式参数)
{
}
- ret_type是函数返回类型
- fun_name是函数
- 括号中的是形式参数
- {}这个是函数体
比喻:
我们可以把函数想像成银行的ATM机存钱不管你存一百还是五十,你都要拿钱去存,银行才有钱函数也是⼀样的,函数⼀般会输⼊⼀些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。
- ret_type返回类型viod表示什么都不返回。
- fun_name 是为了⽅便使⽤函数,根据情况来取。
- 函数的参数相当于钱,函数的参数也可以是 void ,明确表⽰函数没有参
数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。 - {}括起来的部分被称为函数体,函数体就是完成计算的过程。
2.函数举例
写一个减法函数代码如下(示例):
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
//输⼊
scanf("%d %d", &a, &b);
//调⽤减法函数,完成a和b的相减
//求和的结果放在r中
//输出
printf("%d\n", r);
return 0;
}
根据上述的分析,给函数取名:reduce,reduce函数要接收两个整型的参数,计算结果也是整型。
代码如下:
#include <stdio.h>
int reduce(int x, int y)
{
int z = 0;
z = x-y;
return z;
}
int main()
{
int a = 0;
int b = 0;
//输⼊
scanf("%d %d", &a, &b);
//调⽤减法函数,完成a和b的相减
//结果放在r中
int r = reduce(a, b);
//输出
printf("%d\n", r);
return 0;
}
以后我们在新设计一个函数时,这里的函数名、参数、返回类型都灵活多变的。
四、形参和实参
实际参数:真实传递给函数的参数
形式参数: x和 y 只是形式上存在的,不会向内存申请空间,不会真实存在的,所以叫形式参数。形式参数只有在函数被调⽤的过程中为了存放实参传递过来的值,才向内存申请空间。
实参和形参的关系
我们在调试的时候可以观察到,x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不⼀样的,所以我们可以理解为形参是实参的⼀份临时拷⻉。
五、return语句
六、 数组做函数参数
void game()
{
int r = rand() % 100 + 1;//产生1~100的随机数
int guess = 0;//定义猜的数字
int count = 5;//定义猜的次数//游戏的主要逻辑思路
while (count)
{
printf("还有%d次机会\n", count);
scanf("%d", &guess);
if (guess > r)
{
printf("猜大啦\n");
}
else if (guess < r)
{
printf("猜小啦\n");
}
else if (guess == r)
{
printf("恭喜你,猜中啦\n");
}
count--;
}
if (count == 0)
{
printf("没有机会啦,正确答案是:%d\n", r);
}
}
4.总的实现
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
//菜单函数
void menu()
{
printf("**********\n");
printf("**1.play**\n");
printf("**0.exit**\n");
printf("**********\n");
}
//游戏函数
void game()
{
int r = rand() % 100 + 1;//产生1~100的随机数
int guess = 0;//定义猜的数字
int count = 5;//定义猜的次数
//游戏的主要逻辑思路
while (count)
{
printf("还有%d次机会\n", count);
scanf("%d", &guess);
if (guess > r)
{
printf("猜大啦\n");
}
else if (guess < r)
{
printf("猜小啦\n");
}
else if (guess == r)
{
printf("恭喜你,猜中啦\n");
}
count--;
}
if (count == 0)
{
printf("没有机会啦,正确答案是:%d\n", r);
}
}
//主函数
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
menu();
printf("请输入:>\n");
scanf("%d", &input);
//选择界面
do
{
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
总结
猜数字游戏的实现
主要是运用的分支和循环的知识运用,希望大家能够熟悉这一篇章的内容。