C语言第十二周课——有趣的小程序
目录
1.我是猪关机程序
1.1dos命令(强制关机)
1.2思路
1.3源码
2.猜数字
2.1介绍
2.2思路
2.3源码
1.我是猪关机程序
效果:运行程序后电脑在60s后关机,如果输入“我是猪”则取消关机;如果输入“你是猪”则立即关机;输入其他文字会提示重新输入;若强行关闭程序电脑仍会关机。
本程序基于控制台,其功能是通过dos命令来实现。
那么就先讲一下所用到的dos命令(shutdown -s -t 60)
1.1dos命令(强制关机)
1shutdown -s -t 60 -c -f
各参数的意思:
-s 动作为关机
-r 为重启
-a 为取消关机
-t 60 延迟60秒关机
-c “想要显示的注释”
-f 关机时强制关闭所有程序而不显示任何警告。
标准格式:(shutdown -s -t xx)
t xx是关机延时时间 /秒;xx可以是00,直接关机。
注意:可能输入命令后,windows提示n分钟后关机,但关机时间仍然是设定的时间。
1.2思路
1. 引入必要头文件
程序开头引入了三个头文件:
<stdio.h>
:用于提供标准输入输出函数,比如printf
用于在控制台输出信息,scanf
用于获取用户输入。<stdlib.h>
:其中包含了一些系统相关的函数,如system
函数可用于执行系统命令,在此代码中用于执行关机和取消关机等命令,以及pause
函数用于暂停程序执行。<string.h>
:提供了字符串处理相关的函数,这里主要用到了strcmp
函数来比较两个字符串是否相等。
2. 初始化字符串和设置关机命令
- 定义了三个字符数组
a
、b
和c
,并给b
数组初始化为 "我是猪",c
数组初始化为 "你是猪",a
数组用于存储用户输入的内容。- 首先使用
system("shutdown -s -t 60")
执行系统关机命令,设置电脑在60秒后自动关机,以此来开启一个类似限时挑战的情境,要求用户在一分钟内做出特定输入以应对关机情况。
3. 循环判断用户输入
- 通过
do-while
循环来不断获取用户输入并进行判断,循环条件是strcmp(a,b)!=0&&strcmp(a,c)!=0
,即只要用户输入的字符串既不等于 "我是猪" 也不等于 "你是猪",循环就会继续执行。- 在循环体中:
- 首先通过
printf
函数提示用户,如果不想关机,只能输入 "我是猪" 或者 "你是猪",并且告知用户只有一分钟时间。- 然后使用
scanf
函数获取用户输入的字符串,并存储到a
数组中。
4. 根据输入内容执行不同操作
- 当用户输入后,使用
strcmp
函数分别比较用户输入的字符串a
与预先定义的字符串b
和c
:
- 如果
strcmp(a,b)==0
,即用户输入的是 "我是猪",那么就执行system("shutdown -a")
取消之前设置的关机命令,接着使用system("cls")
清屏,再通过system("pause")
暂停程序,最后输出 "哈哈哈,okok" 告知用户操作成功。- 如果
strcmp(a,c)==0
,也就是用户输入的是 "你是猪",则先执行system("pause")
暂停程序,然后输出 "我怀疑你在骂我,那我只好给你关机了",接着执行system("shutdown -s -t 5")
设置电脑在5秒后关机,再输出 "哈哈哈,拜拜",最后再次执行system("pause")
暂停程序。
1.3源码
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) {char b[10]="我是猪",c[10]="你是猪",a[10];system("shutdown -s -t 60"); //命令关机do{ //判断输入的是否为指定的语句printf("如果不想关机,请(只能输入这两句话)输入我是猪 or 你是猪 只给你一分钟时间哦\n");scanf("%s",&a);if(strcmp(a,b)==0){ //判断输入的语句system("shutdown -a"); //取消关机命令system("cls"); //清屏函数printf("哈哈哈,okok\n");system("pause"); //暂停函数}if(strcmp(a,c)==0){system("pause");printf("我怀疑你在骂我,那我只好给你关机了\n");system("shutdown -s -t 5"); //5s后关机printf("哈哈哈,拜拜\n");system("pause");}}while(strcmp(a,b)!=0&&strcmp(a,c)!=0);return 0;}
2.猜数字
2.1介绍
这个程序随机生成一个 1 到 100 之间的数字,让用户通过不断猜测来找出这个数字,具有一定的趣味性和挑战性。
2.2思路
1. 引入必要头文件
- 程序开头引入了三个头文件:
<stdio.h>
:提供了标准输入输出函数,比如printf
和scanf
,用于在控制台输出信息和获取用户输入。<stdlib.h>
:包含了一些常用的函数,如srand
和rand
,在这里用于生成随机数相关操作。<time.h>
:提供了时间相关的函数和类型定义,通过time(NULL)
获取当前时间作为随机数生成器的种子,使得每次运行程序生成的随机数序列不同。
2. 生成随机目标数字
- 在
main
函数中,首先使用srand(time(NULL))
初始化随机数生成器。这里将当前时间作为种子传递给srand
函数,确保每次程序运行时生成不同的随机数序列。- 然后通过
rand() % 100 + 1
生成一个介于 1 到 100 之间的随机整数,将其作为目标数字存储在变量targetNumber
中,等待用户猜测。
3. 设置游戏循环
- 定义了变量
guess
用于存储用户的猜测值,以及attempts
用于记录用户猜测的次数,初始值都设为 0。- 使用
do-while
循环来实现游戏的主要逻辑。在循环体中:
- 通过
printf
函数提示用户输入猜测值,并使用scanf
函数获取用户输入的整数,存储到guess
变量中。- 每进行一次猜测,
attempts
变量就自增 1,表示猜测次数增加一次。
4. 判断猜测结果并给出提示
- 在循环体内部,通过一系列的条件判断来比较用户的猜测值
guess
和目标数字targetNumber
:
- 如果
guess
大于targetNumber
,使用printf
函数输出 “太高了!再试试。” 的提示信息,告知用户猜测过高,需要继续尝试。- 如果
guess
小于targetNumber
,则输出 “太低了!再试试。” 的提示信息,表明猜测过低,同样需要继续尝试。
5. 游戏结束判断
do-while
循环的条件是guess!= targetNumber
,即只要用户的猜测值不等于目标数字,循环就会继续,让用户继续猜测。- 当用户最终猜对,也就是
guess
等于targetNumber
时,循环结束,此时通过printf
函数输出 “恭喜你猜对了!你用了 % d 次尝试。” 的信息,告知用户猜对了以及总共花费的猜测次数,然后程序结束。
2.3源码
#include <stdio.h> #include <stdlib.h> #include <time.h>int main() {srand(time(NULL));int targetNumber = rand() % 100 + 1;int guess;int attempts = 0;printf("欢迎来到猜数字游戏!我已经想好了一个 1 到 100 之间的数字,你来猜猜看。\n");do {printf("请输入你的猜测:");scanf("%d", &guess);attempts++;if (guess > targetNumber) {printf("太高了!再试试。\n");} else if (guess < targetNumber) {printf("太低了!再试试。\n");}} while (guess!= targetNumber);printf("恭喜你猜对了!你用了 %d 次尝试。\n", attempts);return 0; }
相关文章:
C语言第十二周课——有趣的小程序
目录 1.我是猪关机程序 1.1dos命令(强制关机) 1.2思路 1.3源码 2.猜数字 2.1介绍 2.2思路 2.3源码 1.我是猪关机程序 效果:运行程序后电脑在60s后关机,如果输入“我是猪”则取消关机;如果输入“你是猪”则立即关机&…...
【Linux学习】【Ubuntu入门】1-7 ubuntu下磁盘管理
1.准备一个U盘或者SD卡(插上读卡器),将U盘插入主机电脑,右键点击属性,查看U盘的文件系统确保是FAT32格式 2.右键单击ubuntu右下角图标,将U盘与虚拟机连接 参考链接 3. Ubuntu磁盘文件:/dev/s…...
解决Windows + Chrome 使用Blob下载大文件时,部分情况下报错net:ERR_FAILED 200 (OK)的问题
背景: 部分线上用户反馈,下载文件会报错,但重启电脑又好了。测试无法复现。遂远程客户,发现在下载超过一定阈值大小的文件时,会报错。 但直接点击下载链接,可以正常下载 查阅代码,以前的写法是…...
SpringBoot多文件上传
多文件上传是在单文件上传的基础上修改而来,不了解单文件上传可以参考上一篇。以下在将修改部分展示如下: 一、修改upload.html文件: <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title&g…...
Jenkins修改LOGO
重启看的LOGO和登录页面左上角的LOGO 进入LOGO存在的目录 [roottest-server01 svgs]# pwd /opt/jenkins_data/war/images/svgs [roottest-server01 svgs]# ll logo.svg -rw-r--r-- 1 jenkins jenkins 29819 Oct 21 10:58 logo.svg #jenkins_data目录是我挂载到了/opt目录&…...
幼儿园管理系统|Java|SSM|Vue| 前后端分离
【重要①】前后端源码万字文档部署文档 【重要②】正版源码有问题包售后 【包含内容】 【一】项目提供非常完整的源码注释 【二】相关技术栈文档 【三】源码讲解视频 【其它服务】 【一】可以提供远程部署安装,包扩环境 【…...
Unity 实现界面拖拽功能的脚本,通过IDragHandler 实现
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;namespace Assets.Scripts._1024 {class EVENTdome : MonoBehaviour, IPointerDownHandler, IBeginDragHandler, IDragHandler{//Unity 事件处理的几种方式//1 通过编辑…...
【042A】基于51单片机门禁系统【Proteus仿真+Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统RFID读卡器继电器蜂鸣器LED灯。 1、设计采用STC89C51/52、AT89C51/52、AT89S51/52作为主控芯片; 2、通过RC522读卡器读取IC卡信息,信息匹配继电器吸合门锁打开; 3、可通过上位机对IC卡进行注…...
数据库中的增删改查操作、聚合函数、内置函数、分组查询
数据库中的增删改查操作、聚合函数、内置函数、分组查询 CRUD简介Create 新增语法示例单⾏数据全列插⼊单⾏数据指定列插⼊多⾏数据指定列插⼊ Retrieve 检索语法⽰例构造数据 Select全列查询指定列查询查询字段为表达式为查询结果指定别名语法⽰例 结果去重查询 Order by 排序…...
递归------深度优先搜索
深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。它从一个顶点开始,尽可能深地搜索树的分支。深度优先搜索沿着一条路径深入,直到无法继续为止,然后回溯并尝试其他路径。这种搜…...
三十一、构建完善微服务——API 网关
一、API 网关基础 系统拆分为微服务后,内部的微服务之间是互联互通的,相互之间的访问都是点对点的。如果外部系统想调用系统的某个功能,也采取点对点的方式,则外部系统会非常“头大”。因为在外部系统看来,它不需要也没…...
【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化
【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化 目录 文章目录 【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数:★★★★☆ …...
GRU (门控循环单元 - 基于RNN - 简化LSTM又快又好 - 体现注意力的思想) + 代码实现 —— 笔记3.5《动手学深度学习》
目录 0. 前言 1. 门控隐状态 1.1 重置门和更新门 1.2 候选隐状态 1.3 隐状态 2. 从零开始实现 2.1 初始化模型参数 2.2 定义模型 2.3 训练与预测 3 简洁实现 4. 小结 0. 前言 课程全部代码(pytorch版)已上传到附件看懂上一篇RNN的所有细节&am…...
C++头文件大全(要是还有请帮忙)
以下是 C 中常见的各类头文件分类列举(但实际远不止这些,随着标准库扩充及第三方库使用会有更多): 输入 / 输出流相关头文件 <iostream>:用于标准输入输出,定义了 cin、cout 等对象。<fstream>…...
免费好用的静态网页托管平台全面对比介绍
5个免费好用的静态网页托管平台全面对比 前言 作为一名前端开发者,经常会遇到需要部署静态网页的场景。无论是个人项目展示、简单的游戏demo还是作品集网站,选择一个合适的托管平台都很重要。本文将详细介绍5个免费的静态网页托管平台,帮助…...
【电路笔记 TMS320F28335DSP】开发环境 CCSTUDIO IDE配置+工程配置
下载 CCSTUDIO IDE 安装 CCSTUDIO IDE 直接点击下一步即可 controlSUITE™(可选) controlSUITE™ 软件套件:C2000™ 微控制器的必备软件和开发工具CCS 的 controlSUITE™ 是 Texas Instruments (TI) 提供的一个综合软件平台&…...
org.apache.log4j的日志记录级别和基础使用Demo
org.apache.log4j的日志记录级别和基础使用Demo,本次案例展示,使用是的maven项目,搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件,log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…...
设计LRU缓存
LRU缓存 LRU缓存的实现思路LRU缓存的操作C11 STL实现LRU缓存自行设计双向链表 哈希表 LRU(Least Recently Used,最近最少使用)缓存是一种常见的缓存淘汰算法,其基本思想是:当缓存空间已满时,移除最近最少使…...
shell(7)forwhile
for循环: for i in seq 1 100 do echo $i donefor i in seq 1 100 do 部分: for 是 bash 中的循环关键字,用于开启一个循环结构。 i 是定义的循环变量,在每次循环过程中,它会被赋予不同的值。 seq 1 100 这部分&a…...
VSCode打开c#项目报错:DotnetAcquisitionTimeoutError
VSCode打开c#项目,会自动下载.NET环境,下载不了报超时,详情如下: ms-dotnettools.csharp tried to install .NET 8.0.11~x64 but that install had already been requested. No downloads or changes were made. ms-dotnettools.…...
《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Spring 该文档主要介绍了国立台湾大学(NTU)2024 年春季 “生成式人工智能(GenAI)” 课程的作业 5(GenAI HW…...
SQLynx让数据库变得简单!
SQLynx让数据库管理和开发变得更简单,SQLynx是一款旨在简化飞客使用体验的创新型工具,它为数据库管理者、数据库分析师和开发人员提供了一个直观、易用、高效的平台,首先,SQLynx拥有直观友好的用户界面。无论您是新建还是导表&…...
#Uniapp篇:变量v-if 和 v-show 区别.sync 修饰符宽屏适配指南Pinia内置了
let that this 如果在某些methods中this被指向了其他内容,则需要提前把this赋值给另一个变量,比如let that this。 <script>export default {data() {return {connectedWifi:""}},methods: {buttonClick: function () {const that …...
EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!
EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心! 目录 EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心!效果一览基本介绍程序设计参…...
【数据结构】二叉树(2)
目录 1. 二叉树的遍历 前序遍历 中序遍历 后序遍历 2. 计算二叉树中的节点个数 3. 计算二叉树中叶子节点个数 4. 计算二叉树的深度 5. 计算二叉树第k层节点个数 6. 二叉树基础练习 7. 二叉树的创建 8. 二叉树的销毁 9. 层序遍历 10. 判断二叉树是否为完全二叉树 1…...
常用服务器运维软件之 WGCLOUD(国产)介绍
WGCLOUD是一款免费开源的运维监控软件,轻量高效,部署方便,上手简单,界面简单流畅 WGCLOUD是国产运维软件,可以适配大部分的信创环境,比如麒麟、统信等操作系统 WGCLOUD具体支持监控的操作系统如下&#x…...
shell
第四章 shell中的变量 4.1 系统变量 1.常用系统变量 $HOME ,$PWD,$SHELL ,$USER 4.2 自定义变量 1.变量值(等号两边没有空格) 2.撤销变量:unset变量 3.声明静态变量:readonly 变量,注意:不能unset 4.变…...
Target-absent Human Attention
Abstract 预测人类注视行为对于构建能够预测用户注意力的人机交互系统非常重要。已经开发出计算机视觉模型来预测人们在搜索目标物体时的注视点。但当目标不存在于图像中时,又该如何处理呢?同样重要的是要了解当人们找不到目标时,他们如何进行搜索,以及何时停止搜索。在本文…...
Objective-C 1.0和2.0有什么区别?
Objective-C ObjC比较小众,在1980年左右由Stepstone公司的Brad Cox和Tom Love发明。后来NeXT公司获得ObjC语言使用权,再后来到1996年NeXT被苹果公司收购也变成苹果公司使用,Mac市场占有率本身就不高,ObjC没有太多程序员。在移动互…...
06 —— Webpack优化—压缩过程
css代码提取后想要压缩 —— 使用css-minimizer-webpack-plugin插件 下载 css-minimizer-webpack-plugin 本地软件包 npm install css-minimizer-webpack-plugin --save-dev 配置 webpack.config.js 让webpack拥有该功能 const CssMinimizerPlugin require(css-minimizer-…...
【探寻密码的奥秘】-000:密码相关概念定义及介绍(持续更新~~)
密码相关概念 1、密码学 1、密码学 密码学是研究密码与密码活动本质和规律,以及指导密码实践的科学,主要探索密码编码和密码分析的一般规律,它是一门结合数学、计算机科学、信息通信系统等多门学科为一体的综合性学科。 密码学的常见应用场景…...
大模型(LLMs)推理篇
大模型(LLMs)推理篇 1. 为什么大模型推理时显存涨的那么多还一直占着? 首先,序列太长了,有很多Q/K/V;其次,因为是逐个预测next token,每次要缓存K/V加速解码。 大模型在gpu和cpu上…...
算法学习笔记(十):位运算、数论等
一.位运算基础 集合与集合之间的位运算 集合和元素 常用函数 1.使两个整数相等的位更改次数 给你两个正帧数 n 和 k,你可以选择 n 的二进制表示 中任意一个值为 1 的位, 并将其改为0,返回使得 n 等于 k 所需要的更改次数,如无法实…...
深度学习:神经网络中线性层的使用
深度学习:神经网络中线性层的使用 在神经网络中,线性层(也称为全连接层或密集层)是基础组件之一,用于执行输入数据的线性变换。通过这种变换,线性层可以重新组合输入数据的特征,并将其映射到新…...
Robot | 用 RDK 做一个小型机器人(更新中)
目录 前言架构图开发过程摄像头模型转换准备校准数据使用 hb_mapper makertbin 工具转换模型 底版开发 结语 前言 最近想开发一个小型机器人,碰巧看到了 RDK x5 发布了,参数对于我来说非常合适,就买了一块回来玩。 外设也是非常丰富…...
数据结构与算法——1120——时间空间效率问题求边界值
目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 (1)-i (2)~i (3&#x…...
HTML通过JavaScript获取访问连接,IP和端口
<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Get IP Address</title> <script> function displayURL() { var url window.location.href; // 获取当…...
TCP vs UDP:如何选择适合的网络传输协议?
在网络通信中,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种非常重要的传输层协议。它们各有特点,适用于不同类型的应用场景。本文将详细探讨TCP和UDP协议的结构、优缺点及应用&…...
学习QT第二天
QT6示例运行 运行一个Widgets程序运行一个QT Quick示例 工作太忙了,难得抽空学点东西。-_-||| 博客中有错误的地方,请各位道友及时指正,感谢! 运行一个Widgets程序 在QT Creator的欢迎界面中,点击左侧的示例…...
递归算法专题一>Pow(x, n)
题目: 解析: 代码: public double myPow(double x, int n) {return n < 0 ? 1.0 / pow(x,-n) : pow(x,n); }private double pow(double x, int n){if(n 0) return 1.0;double tmp pow(x,n / 2);return n % 2 0 ? tmp * tmp : tmp …...
利用Python爬虫获取商品评论:技术与实践
在当今这个信息爆炸的时代,互联网上充斥着海量的数据。对于电商平台来说,用户评论是了解消费者喜好、优化产品策略的重要依据。Python作为一种强大的编程语言,其丰富的库支持使得爬虫技术成为获取这些数据的有效手段。本文将详细介绍如何使用…...
python之使用django框架开发web项目
本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。 首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击cre…...
当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办
随着AI技术的飞速发展,3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下,2024山东3D数字人视频创作大赛应运而生,并在一番激烈的角逐后圆满落幕,为科技与创意的交融写下浓墨重彩的一笔。 11月20日,一…...
设计模式之策略模式
背景:导入功能需要做成根据编码code或者名称实现不同的导入逻辑,编码和名称都是可配置的,未知的变化,这里要写通用的导入、校验和具体的导入、校验。至此我想到采用设计模式之策略模式工厂模式实现此需求。若有不妥还望指正。 自…...
/etc/sudoers 文件格式解读
文章目录 例如 /etc/sudoers 文件中存在这样一行: ubuntu ALL(ALL:ALL) NOPASSWD: ALL 解释如下: 1. 第一个表示用户名,这意味着此行规则适用于名为 ubuntu 的用户。 2. 接下来等号左边的 ALL 表示允许从任何主机登录当前的用户账户…...
Linux虚拟机网络配置
Linux固定IP 跳转到 cd /etc/sysconfig/network-scripts/ 打开文件并编辑 vim ifcfg-ens33 增加或修改选中内容 重启网卡 systemctl restart network ifconfig -a 查看ip已固定 虚拟机网络编辑器调整 子网IP进行修改,例如本机IP修改为10.212.197.34 此处就修改…...
C++模版特化和偏特化
什么是模版特化 特化的含义:所谓特化,就是将泛型搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰(例如const或…...
17. 指针类型和步长概念问题
1. 项目场景: ➣ Jack Qiao对米粒说:“今天有道友遇到一个问题,举个栗子数组 arr[5] { 0 };道友发现&arr[0] 1与&arr 1打印出来的地址竟然不同。”米粒测试后果然是这样。 2. 问题描述 ☑ 举个栗子:数组 arr[5] { 0…...
如何自动下载和更新冰狐智能辅助?
冰狐智能辅助的版本更新非常快,如果设备多的话每次手工更新会非常麻烦,现在分享一种免费的自动下载和安装冰狐智能辅助的方法。 一、安装迅雷浏览器 安装迅雷浏览器1.19.0.4280版本,浏览器用于打开冰狐的官网,以便于从官网下载a…...
C# 数据结构之【队列】C#队列
1. 描述 队列:队列遵循先进先出(FIFO)原则,在一端进行插入操作,在另一端进行删除操作。 2. 应用示例 using System;namespace DataStructure {class Program{static async Task Main(string[] args){// 创建一个队列…...