玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:C、C++学习分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

文章目录

    • 引言
    • 1. 随机生成数字
      • 1.1 使用 `rand()` 函数
      • 1.2 生成1到10的随机数
      • 1.3 初始化随机数种子
      • 1.4 完整的随机数字生成函数
      • 1.5 代码解释
    • 2. 定义扑克牌花色
      • 2.1 扑克牌花色的种类
      • 2.2 使用字符串数组定义花色
      • 2.3 随机选择花色
      • 2.4 完整的花色定义与生成示例
      • 2.5 代码解释
    • 3. 显示扑克牌
      • 3.1 显示扑克牌的基本思路
      • 3.2 使用格式化输出
      • 3.3 实现显示扑克牌的函数
      • 3.4 完整的示例代码
      • 3.5 代码解释
      • 3.6 美化输出
    • 4. 扩展功能
      • 4.1 检查是否能组成24点
      • 4.2 用户输入
      • 4.3 图形界面
      • 4.4 计时和得分系统
      • 4.5 多人模式
    • 结论

引言

  在数字的世界里,24点游戏以其简单却富有挑战性的规则吸引了无数玩家。这个游戏不仅是对数学运算能力的考验,更是对逻辑思维和创造力的挑战。玩家需要灵活运用加、减、乘、除等基本运算,将四个随机生成的数字组合成24,过程中的每一步都充满了思考与探索的乐趣。

  随着编程技术的不断发展,许多经典游戏也逐渐被移植到计算机上。本文将带你走进C语言的世界,展示如何实现一个简单而有趣的24点游戏。我们将通过随机生成四个1到10的数字,并以扑克牌的形式展示它们,增加游戏的趣味性和视觉吸引力。无论你是编程新手还是经验丰富的开发者,这个项目都将为你提供一个锻炼思维和编程技能的绝佳机会。让我们一起开始这段数字与运算的奇妙旅程吧!

1. 随机生成数字

  在24点游戏中,随机生成四个数字是游戏的第一步,也是至关重要的一步。我们希望生成的数字在1到10之间,以确保游戏的可玩性和挑战性。

1.1 使用 rand() 函数

  C语言提供了一个标准库函数 rand(),用于生成伪随机数。这个函数每次调用时都会返回一个在0到RAND_MAX之间的整数。为了生成我们所需范围内的数字(1到10),我们需要对 rand() 的结果进行一些数学运算。

1.2 生成1到10的随机数

  为了将 rand() 生成的随机数映射到1到10的范围,我们可以使用以下公式:

random_number = ( rand() % 10 ) + 1 \text{random\_number} = (\text{rand()} \% 10) + 1 random_number=(rand()%10)+1

  这里的 % 是取模运算符,它返回 rand() 结果除以10的余数。这样,我们可以得到一个范围在0到9之间的数字。通过加1,我们将范围调整为1到10。

1.3 初始化随机数种子

  为了确保每次运行程序时生成的随机数都是不同的,我们需要初始化随机数种子。可以使用 srand() 函数来设置种子,通常我们会使用当前时间作为种子,这样可以确保每次运行程序时生成的随机数序列都是独特的。以下是初始化随机数种子的代码示例:

#include <stdlib.h>
#include <time.h>srand(time(NULL)); // 使用当前时间作为随机数种子

1.4 完整的随机数字生成函数

  结合上述步骤,我们可以编写一个函数来生成四个随机数字。以下是一个示例代码,展示了如何实现这一功能:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define NUM_CARDS 4
#define MAX_NUMBER 10void generateRandomNumbers(int numbers[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {numbers[i] = (rand() % MAX_NUMBER) + 1; // 生成1到10的随机数字}
}int main() {srand(time(NULL)); // 初始化随机数种子int numbers[NUM_CARDS];generateRandomNumbers(numbers);// 打印生成的随机数字printf("生成的随机数字是:");for (int i = 0; i < NUM_CARDS; i++) {printf("%d ", numbers[i]);}printf("\n");return 0;
}

1.5 代码解释

  1. 头文件:引入了 stdio.hstdlib.htime.h,分别用于输入输出、随机数生成和时间获取。
  2. 常量定义:定义了常量 NUM_CARDS 表示生成的数字数量,MAX_NUMBER 表示数字的最大值。
  3. 生成随机数字generateRandomNumbers 函数使用循环生成四个1到10之间的随机数字,并存储在数组中。
  4. 主函数:在 main 函数中,首先初始化随机数种子,然后调用生成函数并打印生成的随机数字。

2. 定义扑克牌花色

  在扑克牌中,花色是构成扑克牌的重要元素之一。每种花色不仅代表了不同的符号,还在游戏中起到了区分和识别的作用。在24点游戏中,我们可以通过随机选择花色来增加游戏的趣味性和视觉效果。接下来,我们将详细阐述如何在C语言中定义和使用扑克牌的花色。

2.1 扑克牌花色的种类

扑克牌通常有四种基本花色:

  1. 红心(♥)
  2. 黑桃(♠)
  3. 方块(♦)
  4. 梅花(♣)

  这四种花色各具特色,能够为游戏增添多样性。在我们的24点游戏中,我们将使用这些花色来与随机生成的数字相结合,形成完整的扑克牌。

2.2 使用字符串数组定义花色

  在C语言中,我们可以使用字符串数组来存储这些花色。每种花色可以用一个字符串表示,方便后续的随机选择和显示。以下是定义扑克牌花色的示例代码:

const char *suits[] = {"♥", "♠", "♦", "♣"};

  在这个数组中,suits[0] 表示红心,suits[1] 表示黑桃,suits[2] 表示方块,suits[3] 表示梅花。通过这种方式,我们可以轻松地访问和使用这些花色。

2.3 随机选择花色

  为了在生成扑克牌时随机选择花色,我们可以使用 rand() 函数生成一个0到3之间的随机索引,然后用这个索引来访问 suits 数组中的元素。以下是随机选择花色的示例代码:

int suitsIndex[NUM_CARDS];
for (int i = 0; i < NUM_CARDS; i++) {suitsIndex[i] = rand() % 4; // 随机选择花色索引
}

  在这个代码片段中,我们使用 % 4 来确保生成的索引在0到3之间,从而随机选择四种花色中的一种。

2.4 完整的花色定义与生成示例

  结合之前的随机数字生成部分,我们可以将扑克牌花色的定义和随机选择整合到一个完整的示例中。以下是实现的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define NUM_CARDS 4
#define MAX_NUMBER 10// 定义扑克牌花色
const char *suits[] = {"♥", "♠", "♦", "♣"};void generateRandomCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {numbers[i] = (rand() % MAX_NUMBER) + 1; // 生成1到10的随机数字suitsIndex[i] = rand() % 4; // 随机选择花色索引}
}void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}int main() {srand(time(NULL)); // 初始化随机数种子int numbers[NUM_CARDS];int suitsIndex[NUM_CARDS];generateRandomCards(numbers, suitsIndex);printf("随机生成的扑克牌是:\n");displayCards(numbers, suitsIndex);return 0;
}

2.5 代码解释

  1. 花色定义:使用字符串数组 suits 存储四种扑克牌花色。
  2. 生成扑克牌:在 generateRandomCards 函数中,生成随机数字和随机花色索引。
  3. 显示扑克牌:在 displayCards 函数中,将数字和对应的花色组合并打印到控制台。
  4. 主函数:在 main 函数中,初始化随机数种子,调用生成和显示函数。

3. 显示扑克牌

  在24点游戏中,显示扑克牌是一个重要的环节,它不仅让玩家直观地看到生成的数字和花色,还增强了游戏的趣味性和互动性。接下来,我们将详细阐述如何在C语言中实现扑克牌的显示,包括格式化输出和实现细节。

3.1 显示扑克牌的基本思路

  显示扑克牌的基本思路是将随机生成的数字与对应的花色组合在一起,并以易于阅读的格式输出。我们可以使用循环遍历生成的数字和花色数组,将它们逐一打印到控制台。

3.2 使用格式化输出

  在C语言中,我们可以使用 printf 函数进行格式化输出。通过在字符串中使用格式控制符,我们可以灵活地控制输出的格式。例如,我们可以使用 %d 来输出整数,使用 %s 来输出字符串。

3.3 实现显示扑克牌的函数

  我们可以定义一个名为 displayCards 的函数,专门用于显示扑克牌。该函数接受两个参数:一个整数数组(存储扑克牌的数字)和一个整数数组(存储扑克牌的花色索引)。以下是实现的代码示例:

void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}

  在这个函数中,我们使用一个 for 循环遍历每一张扑克牌。对于每一张牌,我们通过 printf 输出数字和对应的花色。最后,我们在输出完成后打印一个换行符,以便于格式的整齐。

3.4 完整的示例代码

  结合之前的随机数字生成和花色定义部分,我们可以将扑克牌的显示功能整合到一个完整的示例中。以下是实现的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define NUM_CARDS 4
#define MAX_NUMBER 10// 定义扑克牌花色
const char *suits[] = {"♥", "♠", "♦", "♣"};void generateRandomCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {numbers[i] = (rand() % MAX_NUMBER) + 1; // 生成1到10的随机数字suitsIndex[i] = rand() % 4; // 随机选择花色索引}
}void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {printf("随机生成的扑克牌是:\n");for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}int main() {srand(time(NULL)); // 初始化随机数种子int numbers[NUM_CARDS];int suitsIndex[NUM_CARDS];generateRandomCards(numbers, suitsIndex);displayCards(numbers, suitsIndex); // 显示扑克牌return 0;
}

3.5 代码解释

  1. 花色定义:使用字符串数组 suits 存储四种扑克牌花色。
  2. 生成扑克牌:在 generateRandomCards 函数中,生成随机数字和随机花色索引。
  3. 显示扑克牌:在 displayCards 函数中,将数字和对应的花色组合并打印到控制台。
  4. 主函数:在 main 函数中,初始化随机数种子,调用生成和显示函数。

3.6 美化输出

为了使输出更加美观,我们可以在显示扑克牌时添加一些格式化元素,例如:

  • 在每张牌之间添加空格或制表符,以便于阅读。
  • 在输出前添加标题或说明,明确显示内容。

例如,我们可以在 displayCards 函数中添加标题:

void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {printf("随机生成的扑克牌是:\n");for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}

4. 扩展功能

  在实现了基本的24点游戏框架后,我们可以通过添加一些扩展功能来提升游戏的趣味性和挑战性。

4.1 检查是否能组成24点

  24点游戏的核心在于利用给定的四个数字,通过加、减、乘、除等运算组合出24。我们可以编写一个算法,尝试所有可能的运算组合和数字排列。我们可以使用递归生成四个数字的所有排列。以下是实现的代码:

#include <stdbool.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void permute(int numbers[], int l, int r, bool *found) {if (l == r) {// 在这里调用计算函数if (canMake24(numbers)) {*found = true;}} else {for (int i = l; i <= r; i++) {swap(&numbers[l], &numbers[i]);permute(numbers, l + 1, r, found);swap(&numbers[l], &numbers[i]); // backtrack}}
}

  我们需要实现 canMake24 函数来检查是否能通过运算得到24。以下是一个简单的实现:

bool calculate(float a, float b, char op) {switch (op) {case '+': return a + b;case '-': return a - b;case '*': return a * b;case '/': return b != 0 ? a / b : 0; // 避免除以零default: return 0;}
}bool canMake24(int numbers[4]) {char ops[] = {'+', '-', '*', '/'};float results[4];// 生成所有运算符组合并计算结果for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {// 这里需要实现运算逻辑// 计算结果并检查是否等于24}}return false; // 默认返回false
}

4.2 用户输入

  为了增加游戏的互动性,我们可以允许用户输入自己的四个数字。以下是获取用户输入的代码:

void getUserInput(int numbers[NUM_CARDS]) {printf("请输入四个数字(1到10之间):\n");for (int i = 0; i < NUM_CARDS; i++) {scanf("%d", &numbers[i]);while (numbers[i] < 1 || numbers[i] > 10) {printf("输入无效,请输入1到10之间的数字:");scanf("%d", &numbers[i]);}}
}

4.3 图形界面

  为了提升用户体验,我们可以考虑使用图形库(如SDL、GTK或Qt)来创建图形用户界面(GUI)。可以使用按钮和文本框来显示扑克牌和输入数字。以下是一个伪代码示例,展示如何使用SDL库创建一个简单的窗口:

#include <SDL2/SDL.h>void createWindow() {SDL_Init(SDL_INIT_VIDEO);SDL_Window *window = SDL_CreateWindow("24点游戏", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);// 在这里绘制扑克牌和按钮SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();
}

4.4 计时和得分系统

  为了增加游戏的挑战性,我们可以引入计时和得分系统。可以使用系统时间来实现计时器,记录玩家从开始到找到结果所用的时间。

#include <time.h>void startTimer() {time_t start = time(NULL);// 游戏逻辑time_t end = time(NULL);printf("用时: %ld秒\n", end - start);
}

  根据玩家的表现(如用时、找到的组合数量等)计算得分:

int calculateScore(int timeTaken) {return 100 - timeTaken; // 示例得分计算
}

4.5 多人模式

  为了增加游戏的趣味性,我们可以实现多人模式,让多个玩家轮流进行游戏。在多人模式下,玩家可以轮流进行游戏:

void multiplayerMode() {int playerCount;printf("请输入玩家人数:");scanf("%d", &playerCount);for (int i = 0; i < playerCount; i++) {printf("玩家 %d 的回合:\n", i + 1);// 生成扑克牌并检查}
}

结论

  通过本文的详细阐述,我们成功构建了一个基本的24点游戏框架,并探讨了多种扩展功能,以提升游戏的趣味性和挑战性。从随机生成扑克牌的数字和花色,到实现运算组合的检查,再到用户输入、图形界面、计时和得分系统,以及多人模式的设计,这些功能不仅丰富了游戏的玩法,还增强了玩家的互动体验。

  实现这些功能的过程,不仅让我们深入理解了C语言的基本语法和编程逻辑,还锻炼了我们的算法思维和问题解决能力。希望通过这些扩展,玩家能够在享受游戏的同时,提升自己的数学能力和逻辑思维。

  未来,我们可以继续探索更多的功能和优化,例如引入更复杂的算法、改进用户界面设计,甚至将游戏移植到移动平台上。无论如何,24点游戏将始终是一个充满乐趣和挑战的经典游戏,期待你在实现和扩展的过程中,收获更多的乐趣与成就感!


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】sql注入相关内容

【MySQL】sql注入相关内容 1. 为什么使用sql注入的时候&#xff0c;url传值的时候要使用–而不是– 使用–进行注释的时候需要在后面加一个空格才可以被认为是注释&#xff0c;url传值的过程中会将空格自动忽略&#xff0c;使用则可以在传输中保留为空格符号。&#xff08;同…

shell脚本(完结)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell编程&#xff08;完结&#xff09;_哔哩哔哩_bilibili 本文主要讲解不同shell脚本中的相互调用以及输入输出重定向操作。 一、不同脚本之间…

【bug】使用transformers训练二分类任务时,训练损失异常大

使用transformers训练二分类任务时&#xff0c;训练损失异常大 问题分析 问题 training_loss异常大&#xff0c;在二分类损失中&#xff0c;收敛在1~2附近&#xff0c;而eval_loss却正常&#xff08;小于0.5&#xff09; 分析 参考&#xff1a; Bug in gradient accumulation…

深入解析 EasyExcel 组件原理与应用

✨深入解析 EasyExcel 组件原理与应用✨ 官方&#xff1a;EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中&#xff0c;处理 Excel 文件的导入导出是极为常见的需求。 今天&#xff0c;咱们就一起来深入了解一款非常实用的操作 Exce…

Gradio学习笔记记录

安装指令&#xff1a;pip install gradio方法介绍 Interface》用于构建一些简单的页面&#xff0c;可以直接用这个指令搞定 形式》接收三个参数分别为处理函数、输入、输出三部分&#xff0c;呈现一般左/上为输入&#xff0c;右或下为输出 fn&#xff1a;将用户界面 &#xff0…

养老院管理系统+小程序项目需求分析文档

智慧综合养老服务平台是以业务为牵引、场景为驱动&#xff0c;围绕“老人”业务域&#xff0c;持续沉淀和打磨形成适应不同养老业务发展需要的业务能力&#xff0c;推动业务模式升级&#xff0c;为养老服务提供数字化解决方案&#xff0c;并依托实体站点与养老机构实现线上线下…

React的基本知识:事件监听器、Props和State的区分、改变state的方法、使用回调函数改变state、使用三元运算符改变state

这篇教学文章涵盖了大量的React基本知识。 包括&#xff1a; 事件监听器Props和State的区分改变state的方法使用回调函数改变state使用三元运算符改变state处理state中的数组处理state中的object条件渲染 &&条件渲染 三元运算符React中的forms 1. Event Listeners 在…

repmgr安装及常用运维指令

简介 repmgr 由 EDB 与其他个人和组织的贡献一起开发&#xff0c;安装部署相对较为简单 安装 repmgr官网上传对应的安装到服务器上 安装前/etc/hosts IP映射、始终同步、免密通信本文忽略 repmgr的安装相对较为简单,目前repmgr-5仅仅支持到postgresql-15 postgresql必要参数…

opencv-python 分离边缘粘连的物体(距离变换)

import cv2 import numpy as np# 读取图像&#xff0c;这里添加了判断图像是否读取成功的逻辑 img cv2.imread("./640.png") # 灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯模糊 gray cv2.GaussianBlur(gray, (5, 5), 0) # 二值化 ret, binary cv2…

SATA接口不通分析案例分享

问题&#xff1a; 反馈有台NVR的某个接口SATA不通&#xff08;共有4个SATA接口&#xff0c;采用SATA HUB JMB575&#xff09;&#xff0c;挂载硬盘不上。 分析&#xff1a; 1、直接对换问题口SATA1与正常口SATA2的SATA数据线&#xff0c;SATA1口还是异常&#xff0c;挂在不上…

【Web前端】如何构建简单HTML表单?

HTML 表单是 Web 开发中非常重要的组成部分。它们是与用户交互的主要方式&#xff0c;能够收集用户输入的数据。表单的灵活性使它们成为 HTML 中最复杂的结构之一&#xff0c;但若使用正确的结构和元素&#xff0c;可以确保其可用性和无障碍性。 表单的基本结构 HTML 表单使用…

Flutter:AnimatedIcon图标动画,自定义Icon通过延时Interval,实现交错式动画

配置vsync&#xff0c;需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// late延迟初始化 AnimationControllerlate AnimationController _controller;overridevoid initStat…

PyQt学习笔记

一.PyQt5的安装 当我们安装好开发环境后&#xff0c;打开pycharm在其设置里面点击按钮自动安装即可。 安装完成后我们会在这里面看到这几个东西说明安装成功了。 二.PyQt5 GUI程序框架 1.一个简单的PyQt5应用程序 首先我们用pycharm创建一个demo.py的文件。 我们创建文件为s…

HTML5好看的音乐播放器多种风格(附源码)

文章目录 1.设计来源1.1 音乐播放器风格1效果1.2 音乐播放器风格2效果1.3 音乐播放器风格3效果1.4 音乐播放器风格4效果1.5 音乐播放器风格5效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&…

ReactPress(阮一峰推荐工具):一款基于Next.js的免费开源博客CMS系统

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 此项目是用于构建博客网站的&#xff0c;包含前台展示、管理后台和后端。 此项目是基于 React antd NestJS NextJS MySQL 的&#xff0c;项目已经开源&#xff0c;项目地址在 …

pytorch自定义算子导出onnx

文章目录 1、为什么要自定义算子&#xff1f;2、如何自定义算子3、自定义算子导出onnx4、example1、重写一个pytorch 自定义算子&#xff08;实现自定义激活函数&#xff09;2、现有算子上封装pytorch 自定义算子&#xff08;实现动态放大超分辨率模型&#xff09; 1、为什么要…

构建高效在线教育:SpringBoot课程管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理在线课程管理系统的相关信息成为必然。开发…

CSS3新特性——字体图标、2D、3D变换、过渡、动画、多列布局

目录 一、Web字体 二、字体图标 三、2D变换 1.位移 &#xff08;1&#xff09;浮动 &#xff08;2&#xff09;相对定位 &#xff08;3)绝对定位和固定定位 &#xff08;4&#xff09;位移 用位移实现盒子的水平垂直居中 2.缩放 利用缩放调整字体到12px以下&#xff…

python Flask指定IP和端口

from flask import Flask, request import uuidimport json import osapp Flask(__name__)app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run(host0.0.0.0, port5000)

linux ubuntu的脚本知

目录 一、变量的引用 二、判断指定的文件是否存在 三、判断目录是否存在 四、判断最近一次命令执行是否成功 五、一些比较符号 六、"文件"的读取和写入 七、echo打印输出 八、ubuntu切换到root用户 N、其它可以参考的网址 脚本功能强大&#xff0c;用起来也…