电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用

文章目录
- 前言
- 一. system函数
- 1.1 system函数清理屏幕
- 1.2 system函数暂停运行
- 1.3 system函数电脑关机、重启
- 二、strcmp函数
- 三、goto语句
- 四、电脑关机小游戏
- 4.1. 程序要求
- 4.2. 游戏代码
- 总结
前言
今天我们写一点稍微有趣的代码,比如写一个小程序使电脑关机,代码比较简单好理解,我们的重点在于学习system函数、strcmp函数、goto语句的使用。
一. system函数
system函数可以简单理解为对计算机系统进行操作的函数,使用system函数要包含头文件 #include <stdlib.h>。函数原型:
int system(const char * command) //参数字符串command为命令名。
system()函数如何使用呢?这里举几个例子。
1.1 system函数清理屏幕
system("cls");
未清除前:

清除后,可以看见之前的数字都被清除重新打印了:

1.2 system函数暂停运行
system("pause");
代码如下,可以看到运行被暂停了,按任意键程序才会继续。


1.3 system函数电脑关机、重启
1.3.1 电脑关机和延时关机
system("shutdown -s -t 60");
-s 关闭计算机
-t 设置时间参数
60 设置的秒数
如果删除后两项,则运行之后电脑马上关机
1.3.2 取消电脑关机
system("shutdown -a");
-a 取消关机
1.3.3 电脑重启和延时重启
system("shutdown -r -t 60");
/r 重启电脑
-t 设置时间参数
60 设置的秒数
如果删除后两项,则运行之后电脑马上重启
二、strcmp函数
strcmp函数用来比较两个字符串的大小,使用strcmp函数要包含头文件 #include <string.h>
函数原型:
int strcmp( const char *string1, const char *string2 );
strcmp函为字符串比较函数,返回一个整数值
第一个字符串 大于 第二个字符串,则返回 大于0 的数字
第一个字符串 等于 第二个字符串,则返回 0
第一个字符串 小于 第二个字符串,则返回 小于0 的数字
一般大家都会对strcmp函数产生误解,以为strcmp是比较两个字符串的长度,其实不是的。strcmp是比较字符串中对应位置上的字符大小(ASCII 码值大小)

三、goto语句
goto语句可以实现在同⼀个函数内跳转到设置好的标号处,例如下图代码goto语句执行后跳转到next所在行了。

goto语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以建议尽量不使⽤;但是 goto 语句也不是⼀⽆是处,在快速跳出多层循环时,使⽤ goto 就⾮常的⽅便,例如如下伪代码:
for (...)
{for (...){for (...){if (disaster)goto error;}}
}
error:...
关于goto语句:
1.不建议使用
2.在一个函数内部使用
3.适用于多层循环跳出的场景
4.不使用goto语句,也能完成效果
学习了上述函数和语句,我们就可以实现一个电脑关机的小游戏了~
四、电脑关机小游戏
4.1. 程序要求
- 程序运行起来,你的电脑在1分钟内关机
- 但是输入:“我是猪”,就取消关机
- 如果输入错误,则在1分钟内反复输入,直至输入正确或者时间耗尽
这个小游戏代码实现比较简单,咱们重在上面的学习,直接上代码也能看得懂,解释在代码注释里。
4.2. 游戏代码
#include <stdio.h>
#include <stdlib.h> //system头文件
#include <string.h> //strcmp头文件int main()
{char input[20] = { 0 }; //初始化字符串为 0system("shutdown -s -t 60"); //电脑1分钟内关机
again:printf("您的电脑将在一分钟后关机,请输入“我是猪”取消关机。\n");scanf("%s", &input);if (strcmp(input, "我是猪") == 0) //字符串的比较不能用> < == >= <= !=,要使用strcmp函数{system("shutdown -a"); //如果输入“我是猪”则取消关机printf("还算配合,取消关机。\n");}else{goto again; //否则跳转到again行,进行重新输入}return 0;
}
程序运行,电脑1分钟内关机

输入错误则需要重新输入

输入正确取消关机

当然这里不使用 goto 语句也可以完成任务
#include <stdio.h>
#include <stdlib.h> //system头文件
#include <string.h> //strcmp头文件int main()
{char input[20] = { 0 }; system("shutdown -s -t 60");while(1){printf("您的电脑将在一分钟后关机,请输入“我是猪”取消关机。\n");scanf("%s", &input);if (strcmp(input, "我是猪") == 0){system("shutdown -a");printf("还算配合,取消关机。\n");break;}}return 0;
}
总结
今天学习了用代码写一些趣味小游戏,这篇文章是用system等函数语句做了一个电脑关机的小游戏,大家可以去试试,或者捉弄一下朋友。程序比较简单,但是咱们重在学习知识 ~
预告下篇博客 —— 猜数字的趣味小游戏——rand函数、srand函数、time函数的使用

相关文章:
电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用
文章目录 前言一. system函数1.1 system函数清理屏幕1.2 system函数暂停运行1.3 system函数电脑关机、重启 二、strcmp函数三、goto语句四、电脑关机小游戏4.1. 程序要求4.2. 游戏代码 总结 前言 今天我们写一点稍微有趣的代码,比如写一个小程序使电脑关机…...
AttributeError: ‘DataFrame‘ object has no attribute ‘append‘的参考解决方法
文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04 一、问题描述 运行开源的python代码的时候,遇到如下问题 AttributeError: DataFrame object has no attribute append二、解决方法 报错中的DataFrame是在…...
java垃圾回收机制介绍
Java垃圾回收机制(Garbage Collection, GC)是Java编程语言中的一项重要特性,它自动管理内存,释放不再使用的对象 1. 堆(Heap): • Java虚拟机(JVM)中用于存储对象实例的内…...
SpringMVC跨域问题解决方案
当Web应用程序尝试从一个源(例如 http://localhost:9090)向另一个不同的源(例如 http://localhost:8080)发起请求时,发现报错: 报错原因:请求被CORS策略拦截了 跨域问题概述 当Web应用程序尝试…...
【语音识别】Zipformer
Zipformer 是kaldi 团队于2024研发的序列建模模型。相比较于 Conformer、Squeezeformer、E-Branchformer等主流 ASR 模型,Zipformer 具有效果更好、计算更快、更省内存等优点。并在 LibriSpeech、Aishell-1 和 WenetSpeech 等常用数据集上取得了当时最好的 ASR 结果…...
vue+uniapp+echarts的使用(H5环境下echarts)
1.安装 npm install echarts4.9.0 --save // 带版本号 2.main.js中全局引用 // import echarts from echarts // 如果是5.0以上版本用这个 import * as echarts from echarts Vue.prototype.$echartsecharts 3.使用 <template><view id"box" style"w…...
【Python网络爬虫笔记】7-网络爬虫的搜索工具re模块
目录 一、网络爬虫中的正则表达式和re模块(一)数据提取的精确性(二)处理复杂的文本结构(三)提高数据处理效率 二、正则表达式的内涵(一)、常用元字符(二)、量…...
为什么选择 React Native 作为跨端方案
为什么选择 React Native 作为跨端方案 我深刻地知道,没有完美的跨端技术,只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 适用场景 1. 业务更新迭代较快的团队与出海团队 React Native 特别适合那些业务更新频繁、需要快速响应市场的团队…...
服务器与普通电脑有什么区别?
服务器和普通电脑(通常指的是个人计算机,即PC)有众多相似之处,主要构成包含:CPU,内存,芯片,I/O总线设备,电源,机箱及操作系统软件等,鉴于使用要求…...
Oracle 12c Data Guard 环境中的 GAP 修复方法
概述 上文中提到Oracle 12c 引入了多项新技术来简化 Data Guard 环境中的 GAP 修复过程,如(RECOVER … FROM SERVICE)。这些新特性不仅减少了操作步骤,还提高了效率和准确性。本文档将详细说明如何利用这些新特性进行 GAP 修复。…...
力扣 三角dp
动态规划基础题,当前所在元素来自上一行的两列的值。 题目 从图可以看出,每一行的第一个数与最后一个数都是1,然后中间的数是来自它左上方和右上方的数的和。当然并不是要打印这个三角形的形状,因此可以想到正常的打印方式应该是…...
SQL基础语法全解析(上篇)
一、基本概念 1. 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库…...
【笔记】Linux服务器端使用百度网盘
1、在python环境下,下载bypy pip install bypy 2、第一次连接需要认证 bypy info 认证通过后百度网盘会出现bypy文件夹,如下 3、查看当前文件夹下的文件 bypy list 若有很多文件夹,可在后面增加文件夹名称,列出对应位置下的文件&a…...
UEFI Spec 学习笔记---3 - Boot Manager(3)
3.2 Boot Manager Policy Protocol EFI_BOOT_MANAGER_POLICY_PROTOCOL----EFI应用程序使用该协议请求UEFI引导管理器使用平台策略连接设备。 typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL…...
ATTCK红队评估实战靶场(四)
靶机链接:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/ 环境搭建 新建两张仅主机网卡,一张192.168.183.0网段(内网网卡),一张192.168.157.0网段(模拟外网网段),然后按照拓补…...
Android Studio 历史版本下载
Android Studio 历史版本下载 官方链接:https://developer.android.google.cn/studio/archive 通过gradle插件版本反查Android Studio历史版本 Android Studio Ladybug | 2024.2.1 October 1, 2024 【https://redirector.gvt1.com/edgedl/android/studio/ide-zip…...
微信小程序px和rpx单位互转方法
js代码如下 Page({data: {width: 0,width2: 0},onLoad: function (options) {let px this.pxToRpx(380)let rpx this.rpxToPx(730.7692307692307) // 检查两个互转是否是相同即可,例如pxToRpx(380)转成730.7692307692307 则rpxToPx(730.7692307692307)如果是380则代表互转没…...
Vercel 部署与管理指南:简化前端应用的自动化部署流程
引言 在现代的前端开发中,部署和托管项目一直是开发者关注的重要环节。Vercel,作为一个专注于简化前端开发和部署的平台,凭借其强大的自动化功能、全球内容分发网络(CDN)以及对 Next.js 等框架的优越支持,…...
Java11使用JVM同一日志框架启用日志记录
你可以使用-Xlog选项配置或启用Java虚拟机同一日志框架的日志记录。 -Xlog:gc*trace:file/Users/xx/gc-%t.log:time,tags,level,pid,tid,hostname,path:filecount3,filesize10K -Xlog:gc*trace:stdout:time,tags,level,pid,tid,hostname:filecount3,filesize10K -Xlog:gc*trac…...
onlyoffice实现文档比对(Beta版)-纯文字比对(非OCR)
一、说明 文档比对光靠前端或者后端是无法实现的。 该文中的实现方案为:onlyofficejava。java进行文档差异化比较并输出对比结果,only进行得到结果处理渲染。 此方案目前为Beta版本,简单Word Demo实现了比对结果。css、关联动态效果登将在后期…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
