当前位置: 首页 > news >正文

威海网站优化公司济南简单的网站制作

威海网站优化公司,济南简单的网站制作,网站与微信,电子商务网站服务器一.函数: 1.函数的概念: 函数就是程序中独立的功能 2.函数的使用场景: 我们需要反复书写的代码,但是又不确定什么时候会用到 二.函数的定义和调用: ①:函数的结构 返回值类型 函数名 (形参1, 形参2, …

一.函数:

1.函数的概念:

函数就是程序中独立的功能

2.函数的使用场景:

我们需要反复书写的代码,但是又不确定什么时候会用到

二.函数的定义和调用:

①:函数的结构

返回值类型 函数名 (形参1, 形参2, ..., 形参n) {函数体;return 返回值;
}

②:举例:

#include<stdio.h>
void study() {printf("准备开始学习\n");printf("打开b站\n");printf("打开自己想要学习的课程\n");printf("打开CSDN\n");printf("在CSDN上查询自己不懂的知识点,并且做笔记,写帖子\n");printf("完成一天的学习\n");
}void rest() {printf("赋闲,打游戏\n");printf("赋闲,饮酒作乐\n");printf("赋闲,享受美食\n");
}int main() {int week = 7;switch (week) {case 1:study();break;case 2:study();break;case 3:study();break;case 4:study();break;case 5:study();break;case 6:rest();break;case 7:rest();break;default:study();break;	}
}

三.带有参数和返回值的函数

在绝大多数场景下我们都是使用的这种函数,在这里我只做简单举例

#include<stdio.h>
int add (int x, int y) {return x + y;
}int main() {int a = 100;int b = 200;printf("%d", add(a, b));
}

注意:返回值一定要和我们规定的返回值的数值类型相同,并且形参和实参必须一一对应(数量,数据类型)

在定义函数的时候我们需要明确三个问题:

1.定义函数是为了完成什么目标(函数体)

2.需要什么才能完成(形参)

3.完成了这件事之后得到的结果我是否需要继续使用(返回值类型)

四.函数的注意事项

1.函数不调用就不执行
2.函数名不能重复
3.函数与函数之间是平级关系,不能嵌套定义
4.自定义函数写在main函数的下面时,需要在上方申明(如果不申明,那么编译器从上往下编译时都还没有编译出你的自定义函数就开始调用了,所以就会报错)
#include<stdio.h>
int main() {int a = 10;int b = 20;
//	add还未定义,报错 printf("%d", add(a, b));
}int add(int x, int y) {return x + y;
}
#include<stdio.h>
// add提前申明了,程序正常运行 
int add(int x, int y);int main() {int a = 10;int b = 20;printf("%d", add(a, b));
}int add(int x, int y) {return x + y;
}
#include<stdio.h>
// 或者把函数定义写在主函数之前,同样能够正常运行 
int add(int x, int y) {return x + y;
}int main() {int a = 10;int b = 20;printf("%d", add(a, b));
}
5.return下面不能编写代码,因为在return下方的代码永远执行不到,属于无效的代码
6.函数的返回值类型为void表示没有返回值,return就可以省略不写,如果书写了return,那么后面不能跟具体的数据,仅表示结束函数

五.C语言中常见的函数

在我们学习C语言中常见的函数之前,我们需要明确,之前我们经常写的这一段代码是什么作用

#include<stdio.h>

这里其实表示的是在我们的文件中导入一个名字为stdio.h的头文件,在导入了之后我们就可以使用这个文件中的内置函数

除了stdio.h之外,我们还经常使用的是math.h,stdlib.h,string.h等等文件

(1).math.h

①:pow():求幂

②:sqrt():求平方根

③:abs():绝对值

(2).stdlib.h

①:malloc()

②:free()

③:calloc()

④:realloc()

⑤:rand()

(3).string.h

①:strlen()

②:strcmp()

③:strlwr()

④:strupr()

⑤:strcat()

⑥:strcpy()

(4).在C语言中获取随机数

在C语言中我们所获取的随机数其实严格来说是一个伪随机数,是根据线性同余方程最后计算得出的

获取随机数的步骤可以分为两步:

①:使用srand设置种子

②:使用rand获取随机数

#include<stdio.h>
#include<stdlib.h>
//获取随机数int main() {// 设置种子// 初始值可以为任意一个无符号数,因为每一个随机数都是通过前一个数字再结合一系列的计算所得到的 srand(1);// 获取随机数 int ans = rand();printf("%d", ans); 
} 

使用上方的代码获取随机数的弊端:

①:只要不改变种子,随机数的结果永远是固定的

②:随机数的范围无法被我们确定

对应的解决方案:

①:因为只要种子固定不变,那么最终得出的随机数结果就不变,因此我们必须要用一个变化的数据来充当种子,这个变化的数据是什么呢?

聪明的你一定想到了,诶,那我用随机数充当种子不就行了?

很遗憾,这是不行的,因为我们获取的随机数从本质上来说是个伪随机数,实际上是个固定的数值。

那么用什么呢?答案是——时间

我们可以导入time.h头文件,使用其中的函数计算时间,以此获取随机数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//获取随机数int main() {// 设置种子// 使用time函数计算当前时间值作为种子 srand(time(NULL));// 获取随机数 int ans = rand();printf("%d", ans); 
} 

②:其实在计算随机数时我们也不可能分配过多的空间来对其进行表示,所以实际上我们只用了一个16进制的位数来表示随机数的范围,也就是说,随机数的默认范围为0到32767

那么我们要怎么生成我们想要的范围内的随机数呢?

一共分为三步:

把这个范围编程包头不包尾的一个范围(如果是0到100,那么就是101 - 0 = 101,如果是20到50,那么就是51 - 20 = 31,这个得出的结果就是我们取余要用的数据)

拿着尾巴减去开头

修改代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//获取随机数int main() {// 设置种子// 使用time函数计算当前时间值作为种子 srand(time(NULL));// 获取随机数 // 20到50 // 取余使用的值是范围中大的那个值加一再减去小的那个值,后面加的是范围中小的那个值 int ans = rand() % 31 + 20;printf("%d", ans); 
} 

为什么要这么写呢?

拿上方的代码举例,原理是,如果一个数对31取余,那么最终的结果一定是0到30的一个数,然后再加上20,最后的结果就是20到50

关于随机数的原理,希望读者好好理解

接下来我们使用随机数完成一个猜数字的小游戏吧

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
// 猜数字小游戏,生成一个1到100之间的随机数,然后使用键盘录入去猜,直到猜中为止 int main() {// 设置种子// 使用time函数计算当前时间值作为种子 srand(time(NULL));// 获取随机数 // 1到100 // 取余使用的值是范围中大的那个值加一再减去小的那个值,后面加的是范围中小的那个值 int guess = rand() % 100 + 1;int ans;while (1) {// 键盘获取我们猜的数字 scanf("%d", &ans);if (ans == guess) {printf("猜中了");break;}else if (ans > guess) printf("猜的数字比随机数更大\n");elseprintf("猜的数字比随机数更小\n");}
} 
http://www.dtcms.com/a/406438.html

相关文章:

  • 书法网站开发的前景西部数码网站管理助手2
  • 使用rabbitmq发送消息时消息体转换报错
  • rabbitmq分布式事务
  • vue动态插槽 #[i] 和 v-slot:[i] 对于Prettier的区别
  • EasyGBS如何构建全域覆盖的应急管理与安全生产解决方案?
  • 【数据结构OJ】BFS算法的可视化:二叉树“层序遍历”
  • RabbitMQ:在Linux上安装RabbitMQ
  • 大数据毕业设计选题推荐:基于Hadoop+Spark的全球能源消耗数据分析与可视化系统
  • 从避障到实时建图:机器学习如何让无人机更智能、更安全、更实用(附微型机载演示示例)
  • ui做的好的网站专业的深圳网站建设公司哪家好
  • 最简单的 Web 打印方案:用 5 分钟上手 web-print-pdf(npm 包)
  • 深度学习在自动驾驶上应用(二)
  • OpenLayers地图交互 -- 章节十二:键盘平移交互详解
  • Unity 透视摄像机视野适配不同分辨率的屏幕
  • 可持续金融的新范式:拆解欧盟ESG监管体系及其全球影响力
  • 【数据保护】一种安全高效的全匿踪纵向联邦学习方法
  • 阿里云物联网平台seo站外优化平台
  • 网站开发软件 手机网站做app有什么意义
  • WorldSimBench: 迈向作为世界模拟器的视频生成模型——论文解读
  • 嵌入式 - 内核驱动1 - 配置linux驱动
  • 工作中学习自己的Qt知识误区-Version3
  • C#连接达梦(DM)数据库
  • 服务器独立显卡可以亮机但进不了系统怎么办
  • 超高密度2kW GaN基低压电机驱动器的设计
  • 「日拱一码」100 机器学习辅助定向进化MLDE
  • C++项目:仿muduo库高并发服务器------EventLoop模块的设计
  • 电子商务网站开发综合实训报告h5页面制作工具包括
  • 全栈信创+AI大模型:百分点科技BD-OS重塑数据治理基座
  • 时隔一天第二阶段他来了 html!!!!!!!!!!!
  • [创业之路-596]:半导体生产中所需要光源的上下游产业链