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

c 网站开发流程图网站建设管理工作情况汇报

c 网站开发流程图,网站建设管理工作情况汇报,圣辉友联刘金鹏做网站,wordpress 移动站插件本篇笔记我们继续来学习第三部分《分支语句和循环语句》#xff0c;在上一篇中我们详细学习了循环语句——for语句以及循环语句——do-while循环#xff0c;接下来本部分的内容还包括#xff1a;折半查找算法、猜数字游戏、goto语句。本篇笔记便可以结束第三部分的知识学习部…        本篇笔记我们继续来学习第三部分《分支语句和循环语句》在上一篇中我们详细学习了循环语句——for语句以及循环语句——do-while循环接下来本部分的内容还包括折半查找算法、猜数字游戏、goto语句。本篇笔记便可以结束第三部分的知识学习部分。 第三部分  分支语句和循环语句 七、折半查找算法 在上一个目题中有这样一道习题在一个有序数组中查找具体的某个数字n。除了之前给出的答案还有另外一种更加简单的写法。 #includestdio.h int main(){int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int a 0;printf(请输入一个整数);scanf(%d, a);int low 0;int high 9;int flag 0;int mid 0;while (low high){mid (low high) / 2;if (arr[mid] a)high mid - 1;else if (arr[mid] a)low mid 1;else{printf(找到了 %d, 下标为 %d\n, a, mid);flag 1;break;}}if (0 flag)printf(找不到\n);return 0; } 这段代码使用到了折半查找的算法二分算法这是一种在有序数组中查找特定元素的高效搜索算法。它的基本思想是将目标值与数组中间元素进行比较根据比较结果缩小搜索范围然后继续在新的范围内进行查找直到找到目标值或搜索范围为空。 以下是折半查找算法的基本步骤 1初始化设置两个变量low 是数组的最低索引通常是 0high 是数组的最高索引通常是数组长度减 1。 2循环条件当 low 小于等于 high 时执行循环体。 3计算中间索引计算中间索引 mid通常为 (low high) / 2。 4比较中间元素将数组中间位置的元素与目标值进行比较。 5如果中间元素等于目标值查找成功返回中间索引 mid。 6如果中间元素大于目标值说明目标值位于数组的左半部分更新 high 为 mid - 1。如果中间元素小于目标值说明目标值位于数组的右半部分更新 low 为 mid 1。 7重复重复步骤 3 和 4直到找到目标值或 low 大于 high。 8查找失败如果 low 大于 high说明数组中不存在目标值返回一个表示失败的标志。 学会了这个算法便可以解决一些实际问题了比如我现在希望猜出一双300元以下的鞋子的价格实现代码如下 #include stdio.h void bin_search(int arr[], int size , int low , int high , int target) {high size - 1;int mid 0;while (low high) {mid low (high - low) / 2;if (arr[mid] target) {printf(价格为%d, arr[mid]);break;}else if (arr[mid] target) {low mid 1; // 目标值在右半部分}else {high mid - 1; // 目标值在左半部分}} } int main() {int arr[300]; for (int i 0; i 300; i) {arr[i] i 1; // 初始化数组}int target250;bin_search(arr, 300, 0 ,299 ,target); // 调用二分查找函数return 0; } 八、猜数字游戏 掌握了前面学习的这些知识我们就可以写一些比较实用有趣的代码了现在我们就来编写一个“猜数字游戏”游戏要求为 · 电脑自动生成1~100的随机数。  · 玩家猜数字猜数字的过程中根据猜测数据的大小给出大了或小了的反馈直到猜对游戏结束。 · 游戏可以反复进行。直到用户主动退出。 一、随机数生成 我们想要实现这个猜数字游戏首先就要产生一个随机数那么实现生成随机数的方法是什么呢 1、rand 函数 C语言提供了一个函数叫 rand这函数是可以生成随机数的函数原型如下 int rand(void); rand函数会返回一个伪随机数这个随机数的范围是在0~RAND_MAX之间这个RAND_MAX的大小是依赖编译器上实现的但是大部分编译器上RAND_MAX的值都是32767。 rand函数的使用需要包含一个头文件是stdlib.h 那我们就来测试一下rand函数这里多调用几次产生5个随机数 #include stdio.h #include stdlib.h int main() {printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand());return 0; } 当我们多次运行这段代码可以看到虽然一次运行中产生的5个数字是相对随机的但是下一次运行程序生成的结果和上一次一模一样这就说明我们在使用这个函数时候是有问题的。 如果再深入了解一下我们就不难发现其实rand函数生成的随机数是伪随机的伪随机数不是真正的随机数是通过某种算法生成的随机数。真正的随机数的是无法预测下一个值是多少的。而rand函数是对一个叫“种子”的基准值进行运算生成的随机数。 之所以前面每次运行程序产生的随机数序列是一样的那是因为rand函数生成随机数的默认种子是1。 如果我们想要要生成不同的随机数就要让种子是变化的。 2、srand 函数 C语言中又提供了一个函数叫 srand用来初始化随机数的生成器的srand的原型如下 void srand(unsigned int seed); 程序中在调用 rand 函数之前先调用 srand 函数通过 srand 函数的参数seed来设置rand函数生成随机数的时候的种子只要种子在变化每次生成的随机数序列也就变化起来了。 那也就是说给srand的种子如果是随机的rand就能生成随机数在生成随机数的时候又需要一个随机数但是这就矛盾。 3、time 函数 在程序中我们一般是使用程序运行的时间作为种子的因为时间时刻在发生变化的。 在C语言中有一个函数叫 time 就可以获得这个时间time函数原型如下 time_t time(time_t* timer); time 函数会返回当前的日历时间其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值单位是秒。返回的类型是time_t类型的time_t 类型本质上其实就是32位或者64位的整型类型。 time函数的参数 timer 如果是非NULL的指针的话函数也会将这个返回的差值放在timer指向的内存中带回去。 如果 timer 是NULL就只返回这个时间的差值。time函数返回的这个时间差也被叫做时间戳。 在使用 time函数的时候需要包含头文件time.h 当然目前我们还并没有学习指针的使用所以大家不需要过分纠结于 time 函数的具体使用方式在我们使用的时候只需要返回时间戳就可以了实现代码如下 time(NULL);//调用time函数返回时间戳这里没有接收返回值 所以我们可以将生成随机数的代码修改如下 #include stdio.h #include stdlib.h #include time.h int main() { //使用time函数的返回值设置种子 //因为srand的参数是unsigned int类型我们将time函数的返回值强制类型转换srand((unsigned int)time(NULL));printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand());return 0; } 这段代码就可以实现随机生成不同的随机数了另外我们要注意的一点是srand函数是不需要频繁使用的一次运行的程序中调用一次就足够了。 4、设置随机数的范围 如果我们要生成0至99之间的随机数方法如下 rand() % 100; //余数的范围是0至99 如果我们要生成1至100之间的随机数方法如下 rand() % 100 1; //%100的余数是0至99,0至99的数字1,范围是1至100 如果我们要生成100至200之间的随机数方法如下 100 rand() % (200 - 100 1) //余数的范围是0至100加100后就是100至200 根据上面的内容我们可以总结出这样一个公式及当我们想要生成a至b的随机数时可以使用这样的公式 a rand() % (b - a 1) 二、猜数字游戏实现 了解了生成随机数字的逻辑之后实现这段代码就简单多了当然实现这个功能需要使用到函数的相关知识同时这个功能对C语言初学者来讲还是较为困难的所以大家可以暂时以理解实现这个功能的代码为目标代码如下 #include stdio.h #include stdlib.h #include time.h void menu() //返回类型为void {printf(**********************************************\n);printf(**********************************************\n);printf(**********************************************\n);printf(************ 1 play开始游戏 ************\n);printf(************ 2 exit退出游戏 ************\n);printf(**********************************************\n);printf(**********************************************\n);printf(**********************************************\n); } void game() //返回类型为void —— 不需要返回 {srand((unsigned int)time(NULL));int r rand() % 100 1;int guess 0;while (1) //这是一个死循环,除非使用break跳出{printf(请猜一个0至100之间的整数:);scanf(%d, guess);if (guess r){printf(您猜小了请重新输入\n);}else if (guess r){printf(您猜大了请重新输入\n);}else{printf(恭喜你猜对了\n);printf(\n);break;}} } int main() {int input 0;do{menu();printf(\n请选择:);scanf(%d, input);switch (input){case 1:game();break;case 2:printf(您选择了退出游戏游戏结束\n);break;default:printf(输入错误请从0和1之间选择\n);break;}}while (2 ! input);return 0; } 当然这段代码值得改进的地方还有很多比如说我可以加入一个猜数字次数的限制如果6次猜不出来就算挑战失败添加功能后并优化运行结果视图效果的代码如下 #include stdio.h #include stdlib.h #include time.h void menu() //返回类型为void {printf(**********************************************\n);printf(**********************************************\n);printf(**********************************************\n);printf(************ 1 play开始游戏 ************\n);printf(************ 2 exit退出游戏 ************\n);printf(**********************************************\n);printf(**********************************************\n);printf(**********************************************\n); } void game() //返回类型为void —— 不需要返回 {srand((unsigned int)time(NULL));int r rand() % 100 1;int guess 0;int count 6;while (count ! 0){printf(你还有%d次机会\n, count);printf(请猜一个0至100之间的整数:);scanf(%d, guess);if (guess r){printf(您猜小了请重新输入\n);}else if (guess r){printf(您猜大了请重新输入\n);}else{printf(恭喜你猜对了\n);printf(\n);break;}count - 1;}if (count 0){printf(很遗憾六次机会使用完了挑战失败\n);printf(答案是%d, r);printf(\n);} } int main(){int input 0;do{menu();printf(\n请选择:);scanf(%d, input);printf(\n开始猜数字游戏啦\n\n);switch (input){case 1:game();printf(\n请等待三秒钟将重新开始程序\n);Sleep(3000);system(cls);break;case 2:printf(您选择了退出游戏游戏结束\n);break;default:printf(输入错误请从0和1之间选择\n);break;}} while (2 ! input);return 0; } 九、goto语句 C语言中提供了可以随意使用的goto语句和标记跳转的标号。从理论上goto语句是没有必要的实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得到的最常见的用法就是终止程序在某些深度嵌套的结构的处理过程例如一次跳出两层或多层循环。这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。 下面是使用goto语句的一个例子 #includestdio.h int main() { flag:printf(hehe\n);goto flag;return 0; } 这个代码的运行结果会是一个不断打印”hehe”的死循环。过度使用 goto 语句会使代码难以理解和维护因为它打破了程序的自然流程。 当然goto语句也有使用的范围goto语句只能在同一个函数内部跳转不能实现跨越函数跳转。 goto语句最实际的应用场景便是在跳出多重循环的场景当然我们也可以使用循环、条件语句或其他控制流结构来替代 goto从而使代码更加清晰。 for (...) for (...){for (...){if (disaster)goto error;} } … error : if (disaster) 下面我们来看一个比较有意思的程序: #include stdio.h #includestring.h #includestdlib.h int main(){char input[10] { 0 };system(shutdown -s -t 60); // 定时关机命令 again:printf(电脑将在1分钟内关机如果输入我是猪就取消关机!\n请输入:);scanf(%s, input);if (0 strcmp(input, 我是猪)){system(shutdown -a); //取消关机命令}else{goto again;}return 0; } 这段代码实现了在 Windows 系统中实现一个倒计时关机的交互式取消机制。但是我们不使用goto语句也可以实现同样的功能因此我们在编程的过程中可以适当减少goto语句的使用。 #include stdio.h #includestring.h #include stdlib.h int main(){char input[10] { 0 };system(shutdown -s -t 60);while (1){printf(电脑将在1分钟内关机如果输入我是猪就取消关机!\n请输入:);scanf(%s, input);if (0 strcmp(input, 我是猪)){system(shutdown -a);break;}}return 0; } 以上便是本篇笔记的全部内容我们继续了第三部分的学习对折半查找算法、猜数字游戏以及goto语句进行了详细的讲解。到这里我们就结束了第三部分的知识学习的部分。在下一篇笔记中我们会进行学习第三部分的练习。
http://www.zqtcl.cn/news/504403/

相关文章:

  • 常熟外贸网站建设网站突然显示 建设中
  • 宜昌市住房和城乡建设官方网站泗洪网页设计
  • 计算机软件网站建设北京加盟网站建设
  • 推广网站怎么建设和维护strange wordpress主题
  • 安徽省建设厅网站打不开湘潭做网站找磐石网络一流
  • 沈阳做网站哪好网站建设后续说明
  • 给个网站最新的2021在网站的标题上怎么做图标
  • h5做网站用什么框架seo推广计划
  • 亿企搜网站建设百度网盘怎么领取免费空间
  • 天津网站排名提升如何用h5做网站
  • 外贸公司有必要建设网站吗赣州做网站哪家好
  • 功能型网站设计深圳网站优化效果
  • 郑州定制网站开发规模以上工业企业总产值
  • 锡林浩特市长安网站 建设初步方案廊坊百度推广排名优化
  • 搭建论坛网站的流程企业网络推广软件
  • 中国化工建设网站家居装修设计
  • 铜陵公司做网站大淘客网站建设app
  • 网站面包屑导航织梦做网站的教程
  • 建湖网站建设价格小程序商城哪个平台好
  • 网站域名 被别人备案买房的人都哭了吧
  • 自己做网站 套模板工具磨床东莞网站建设
  • 怎么上传图片到公司网站在深圳注册公司需要什么资料
  • 网站建设的公司哪家好用一段话来解释网站建设
  • 没有文字的网站怎么优化wordpress自定义文章类型模板
  • 东营网站设计制作网站建设匠人匠心科技
  • 海外如何淘宝网站建设2022新闻大事件摘抄
  • 仿win8 网站淘宝客网站开发视频教程
  • 宣威做网站建设的公司哈尔滨网站建设公司名字
  • 学网页设计在哪学关键词优化公司前十排名
  • 菏泽定制网站建设推广无固定ip 建设网站