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

1

文章目录

  • 前言
  • 一. 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

在这里插入图片描述


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 码值大小)
1


三、goto语句

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

goto语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以建议尽量不使⽤;但是 goto 语句也不是⼀⽆是处,在快速跳出多层循环时,使⽤ goto 就⾮常的⽅便,例如如下伪代码:

for (...)
{
	for (...)
	{
		for (...)
		{
			if (disaster)
				goto error;
		}
	}
}
error:
	...

关于goto语句:
1.不建议使用
2.在一个函数内部使用
3.适用于多层循环跳出的场景
4.不使用goto语句,也能完成效果


学习了上述函数和语句,我们就可以实现一个电脑关机的小游戏了~

四、电脑关机小游戏

4.1. 程序要求

  1. 程序运行起来,你的电脑在1分钟内关机
  2. 但是输入:“我是猪”,就取消关机
  3. 如果输入错误,则在1分钟内反复输入,直至输入正确或者时间耗尽

这个小游戏代码实现比较简单,咱们重在上面的学习,直接上代码也能看得懂,解释在代码注释里。

4.2. 游戏代码

#include <stdio.h>
#include <stdlib.h>	//system头文件
#include <string.h>	//strcmp头文件

int main()
{
	char input[20] = { 0 };		//初始化字符串为 0
	system("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分钟内关机
1

输入错误则需要重新输入
1

输入正确取消关机
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函数的使用
期待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/928126.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【洛谷】P5738 【深基7.例4】歌唱比赛(详细注解)

#include <iostream> #include <iomanip> #include <algorithm> using namespace std;int main() {//定义两个整数变量n和m&#xff0c;用于接收用户输入的二维数组的行数和列数int n, m;cin >> n >> m;//定义二维整数数组A&#xff0c;用于存储…

SL6115替代MT7201C+MT7202内置60V场效应管降压恒流芯片

一、SL6115芯片特点 工作电压范围&#xff1a;SL6115的工作电压从5.5V到60V&#xff0c;提供了更宽的输入电压选择。 输出电流&#xff1a;SL6115提供可调的输出电流&#xff0c;最大输出电流可达到1.5A&#xff0c;相比MT7201C的1A输出电流&#xff0c;具有更高的驱动能力。…

利用Milvus向量数据库实现GraphRAG

大家好&#xff0c;GraphRAG技术借助知识图谱&#xff0c;给RAG应用注入了新的动力&#xff0c;使其能够在海量数据中精确检索所需信息。本文将介绍GraphRAG的实现方法&#xff0c;包括如何创建索引以及如何利用Milvus向量数据库进行查询&#xff0c;助力在信息检索的道路上事半…

高性能低功耗PWM控制功率开关,500V高压MOSFET集成与低功耗PWM控制,小家电与工业控制高效电源解决方案

描述 • WD5208&#xff1a;一款高性能低功耗PWM控制功率开关&#xff0c;适用于离线式小功率降压型应用场合。 • 主要特点&#xff1a; • 集成500V高压MOSFET和高压启动电路。 • 优化轻载噪音、提升系统抗干扰能力。 • 多模式控制、无异音工作。 • 支持降压和升降压…

蓝桥杯准备训练(lesson1,c++方向)

前言 报名参加了蓝桥杯&#xff08;c&#xff09;方向的宝子们&#xff0c;今天我将与大家一起努力参赛&#xff0c;后序会与大家分享我的学习情况&#xff0c;我将从最基础的内容开始学习&#xff0c;带大家打好基础&#xff0c;在每节课后都会有练习题&#xff0c;刚开始的练…

动态系统的建模与分析

7_一阶系统的单位阶跃响应(Step Response)_时间常数(Time Constant) 时间常数区分系统的重要参数&#xff1b;来做系统识别&#xff1b; _7.5换个角度分析单位阶跃响应_LTI System Unit Step Response 8_频率响应_详细数学推导 G(jw)_滤波器 9_一阶系统的频率响应_低通滤波器_M…

k8s,声明式API对象理解

命令式API 比如&#xff1a; 先kubectl create&#xff0c;再replace的操作&#xff0c;我们称为命令式配置文件操作 kubectl replace的执行过程&#xff0c;是使用新的YAML文件中的API对象&#xff0c;替换原有的API对象&#xff1b;而kubectl apply&#xff0c;则是执行了一…

ConcurrentModificationException的理解

遍历集合的时候对集合进行了修改&#xff0c;例如添加、删除元素&#xff0c;就会抛这个异常。 产生这个异常的例子&#xff1a; 使用增强for遍历ArrayList&#xff0c;调用list的remove删除元素。 import java.util.ArrayList; import java.util.List;public class Concurre…

TypeScript和JavaScript的区别

总结&#xff1a; TypeScript 是 JavaScript 的超集&#xff0c;它在 JavaScript 的基础上添加了强类型、接口、类、泛型等特性&#xff0c;并提供了静态类型检查等工具&#xff0c;让开发者能够在编写代码时更加安全、高效、可靠。与 JavaScript 相比&#xff0c;TypeScript …

记录一次网关异常

记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错&#xff0c;并且有时候就算什么都不操作&#xff0c;也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…

OpenCV圆形标定板检测算法findCirclesGrid原理详解

OpenCV的findCirclesGrid函数检测圆形标定板的流程如下:   findCirclesGrid函数源码: //_image,输入图像 //patternSize,pattern的宽高 //_centers,blobs中心点的位置 //flags,pattern是否对称 //blobDetector,这里使用的是SimpleBlobDetector bool cv::findCirclesGrid(…

P1226 快速幂

【STUACM-算法入门-快速幂】https://www.bilibili.com/video/BV1Hi4y1L7qB?p2&vd_sourcee583d26dc0028b3e6ea220aadf5bc7fe 想先把a的b次方算出来再对p取模是不可能的&#xff0c;因为肯定超出long long 范围。 需要知道&#xff1a;(x*y)mod p (x mod p)*(y mod p) mo…

Devops-git篇-01-git环境配置

环境配置 设置用户签名 配置用户名&#xff1a; git config --global user.name 你的用户名 配置邮箱&#xff1a; git config --global user.email 注册的邮箱 配置好之后&#xff0c;可以用git config --global --list命令查看配置是否OK $ git config --global --list u…

Create Stunning Word Clouds with Ease!

Looking to craft breathtaking word clouds? WordCloudStudio is your go-to solution! Whether you’re a marketer, educator, designer, or simply someone who loves visualizing data, this app has everything you need. Download now: https://apps.apple.com/app/wor…

Python毕业设计选题:基于Flask的医疗预约与诊断系统

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 疾病信息 就诊信息 个人中心 管理员登录界面 管理员功能界面 用户界面 医生…

FPGA实战篇(按键控制LDE实验)

1.按键简介 按键开关是一种电子开关&#xff0c;属于电子元器件类。我们的开发板上有两种按键开关&#xff1a;第一种是本实验所使用的轻触式按键开关&#xff0c;简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通&#xff0c;当撤销压力时开关断开&#xff…

增加日志定位toast来源

目录 相关问题 案例 分析解决 相关问题 安卓系统集成应用有时会遇到莫名的toast弹框&#xff0c;不清楚是哪个应用&#xff0c;可能频繁弹框影响体验&#xff0c;需要定位来源。 案例 终端未接U盘&#xff0c;却弹出如上toast&#xff0c;需要定位分析来源 分析解决 fram…

曲线积分与曲面积分

1数量函数曲线积分与曲面积分 1.1回顾黎曼积分 回顾之前的定积分是直线积分。 1.1曲线积分的几何意义 1.2曲线积分的性质 1.3中值定理 1.4曲线积分的计算方法 公式里的弧微分&#xff1a;弧微分的几何意义是用一条线段的长度来近似代表一段弧的长度。 图中MT的长度即为弧M…

Java基础面向对象(包装类)

是对八大基本类型做的封装, 使其保留各自的数据特征, 同时变为引用类型, 可以接收存储null值并且也能调用方法 BYTESHORTINTLONGFLOATDOUBLECHARBOOLEANByteShortIntegerLongFloatDoubleCharacterBoolean 基本类型与包装类型 JDK5.0之后, 两者之间可以自动完成封箱与拆箱(自…

2024年12月3日Github流行趋势

项目名称&#xff1a;Lobe Chat 项目维护者&#xff1a;arvinxx, semantic-release-bot, canisminor1990, lobehubbot, renovate项目介绍&#xff1a;一个开源的、现代化设计的人工智能聊天框架。支持多种AI提供商&#xff08;OpenAI / Claude 3 / Gemini / Ollama / Qwen / De…