首页 > 其他分享 >分支和循环语句3

分支和循环语句3

时间:2024-12-08 15:04:37浏览次数:11  
标签:语句 rand 函数 生成 循环 随机数 time 100 分支

goto语句

C语言提供了一种非常特殊的语法,就是goto语句和跳转标号,goto语句可以实现在一个函数内跳转到设置好的标号处。

转向语句:break语句、continue语句、goto语句、return语句。

goto语句如果使用不当,就会导致在函数内随意乱跳转,打乱程序的执行流程,所以不仅建议使用,但是在多层代码中,如果想快速跳出,使用goto较方便。不使用goto语句也可使用多次break。

关机程序:

1、程序运行起来,你的电脑将在1分钟内关机。

2、输入:我是猪,就取消关机。

system是一个库函数,需要包含头文件#include<stdlib.h>

shutdown -s中 -s表示关机-t 60表示倒计时60s,-a表示取消关机。

strcmp用于表示字符串大小如上图,也是一个库函数,需要包含头文件#include<string.h>。

也可以不用goto语句。

接下来可以运用前面的知识写一些有趣的代码。

写一个猜数字游戏

游戏要求:

1、电脑自动生成1~100之间的随机数

2、玩家猜数字,该过程中,根据猜测结果给出大了或小了的反馈,直到猜对,游戏结束。

rand函数

C语言提供了一个函数叫rand,这个函数可以生成随机数,原型如下

1 int rand(void);

void是指函数不需要参数。

rand函数会返回一个伪随机数,这个随机数的范围实在0~RAND_MAX之间,这个RAND_MAX大小是依赖编译器上实现的,但大部分编译器上是32767。

rand函数使用必须包含头文件stdlib.h。

伪随机数是指随机数是靠某种算法实现的,并不是不可预测的,rand函数是对一个叫“种子”的基准值进行运算生成的随机数。下面给一个例子。

看起来是生成了随机数(默认种子1),但当我们再次运行,发现还是这五个数,说明生成了伪随机数。在猜数字游戏中显然不可行。

srand函数

C语言又提供了一个函数叫srand,用来初始化随机数的生成器,srand的原型如下:

1 void srand(unsigned int seed);

程序中在调用rand函数前先调用srand函数,通过srand函数的参数seed来设置生成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化起来了。但那也就是说给srand的种子如果是随机的,rand就能生成随机数;在生成随机数的时候又需要一个随机数,这就矛盾了。

如上图,种子改变了,生成随机数不同。

time

在程序中 我们一般使用程序运行的时间作为种子,因为时间时刻在发生变化。

在C语言中有一个函数叫time,原型如下:

1 time_t time(time_t* timer)

time函数会返回当前的日历时间,其实返回值是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位s,返回的类型是time_t类型,time_t类型本质上其实就是32位或64位的整型类型

timer其实是一个指针,在此先不讲。

如果timer时NULL,就只返回这个时间的差值,time函数返回的时间差也被叫做:时间戳。

time函数需要包含头文件:time.h。

time_t本质上时long long类型,在srand函数内使用时要强制类型转换成unsigned int类型。

此时生成的随机数运行结果便不一样了。

在一次程序运行起来,不管生成多少个随机数,只要设置一次随机数生成种子就行。

设置随机数生成范围:

如果我们要生成0~99之间的随机数,方法如下:

1 rand()%100;//余数的范围是0~99

如果要生成1~100之间的随机数,方法如下:

1 1 + rand()%100;

如果要生成100~200之间的随机数,方法如下:

1 100 + rand()%(200 - 100 +1);//余数的范围是0~100,加100变成100~200

如果要生成a~b之间的随机数,方法如下:

1 a + rand()%(b - a + 1);

接下来就可以实现猜数字游戏的代码了。

在这里我们为了防止代码的冗长,可通过调用函数使得函数主题清晰,如,我们可以使用menu函数来制作一个菜单

void表示该函数不返回任何值。

主体函数如下。

判断过程我们可以再使用一个game函数进行判断。srand函数不应写在game函数中,玩游戏过快时,可能会生成一样的随机数。

当然,我们也可以加以次数限制,比如说只给5次机会,用完就判定为游戏失败。

此时可引入计数器count,count等于0时跳出循环,只要在循环最后加一步count--即可。

标签:语句,rand,函数,生成,循环,随机数,time,100,分支
From: https://blog.csdn.net/xie0510_/article/details/144296008

相关文章

  • shell 7 for循环与while循环 (泷羽sec)
    声明学习视频来自B站UP主泷羽sec,如涉及侵泷羽sec权马上删除文章。笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了解学习哪些知识对于我们渗透......
  • 深入理解 Java 的 try-with-resources 语句:简化资源管理,避免资源泄漏
    深入理解Java的try-with-resources语句:简化资源管理,避免资源泄漏引言在Java编程中,资源管理是一个重要且常见的任务。无论是文件操作、数据库连接,还是网络通信,都需要确保资源在使用完毕后被正确释放,以避免资源泄漏和系统性能下降。Java7引入的try-with-resources语句为......
  • oracle数据库查看锁表的sql语句整理
    一、关键表 V$LOCKED_OBJECT:记录锁信息的表 v$session:记录会话信息的表 v$sql:记录执行sql的表 dba_objects:用来管理对象(表、库等等对象)二、相关查询 1. 查看锁表的SIDSELECTUSERNAME,SID,LOCKWAIT,STATUS,MACHINE,PROGRAMFROMv$sessionWHEREsidIN(SE......
  • SQL语句中AND与OR操作符的优先级问题
    在SQL中,当AND和OR操作符同时出现时,优先级的处理可能会导致查询结果与预期不符。为了说明这一问题,我们可以看一个实际的例子。假设需要查询价格在10美元及以上,且由DLL01或BRS01制造的所有产品。可以使用如下SQL语句:SELECTprod_name,prod_priceFROMProductsWHEREvend_i......
  • SQL:从某行开始,查询一定行数的语句
    比如实现从第五行开始查询5行数据的SQL语句不同数据库有不同的实现方式,下面是各大数据库的查询语句。1.SQLServer(适用于SQLServer2012及之后版本)、DB2、Oracle(适用12c及以上版本)这几种数据库的实现方式类似,都可以通过OFFSET和FETCHNEXT来分页查询:SELECT*FROM......
  • 结构体的使用 for循环使用方式
     1.创建结构体成员变量多个成员函数多个其他结构体多个2.定义结构体变量结构体名变量名3.调用  .成员访问符  for循环:for(1.初始条件;2.循环条件3.条件改变){4.表达式}while:1while(2){43}  sort......
  • c++初识------for的循环变量的使用
    上次,我们讲了for循环,今天我们讲循环变量。废话不多说,直接进入正题。for循环语句的循环变量不仅仅可以用来控制循环运行的次数,还可以参与各种运算。举几个例子:观察数列:2 4 6 8 10...,输出数列的前n项。思路:第1步:因为要输出前n项,所以考虑用for循环。第2步:显......
  • Task06循环&Task07字符
    Task06循环&Task07字符串for循环特点:基于提供的范围,重复执行特定次数的操作格式:forxinrange(m,n+1):​ 循环体语句range(x,y):1.左闭右开,包含x不包含y​ 2.省略第一个参数:默认起始范围是0​ 3.第三个参数range(x,y,k)步长为k,步长默认为1......
  • Java源代码解析-续篇-语法(块,语句和模式)
    Java源代码解析-续篇-语法(块,语句和模式)目录Java源代码解析-续篇-语法(块,语句和模式)引言Blocks(块)Statements(语句)Patterns(模式)暂告一段落引言Blocks(代码块)、Statements(语句),Patterns(模式)构成了Java程序逻辑与结构的核心要素,无论是编写简单的打印语句,还是构建复杂的......
  • 【C++】continue语句、goto语句
    1、continue 语句作用:在循环语句中,跳过本次循环中余下尚未执行的语句。继续下一次循环。注意:continue只能用于循环中。示例:代码://continue的用法#include<iostream>usingnamespacestd;intmain(){   //如果是奇数,则输出,否则不输出   for(inti=1......