Bootstrap

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. 初始化字符串和设置关机命令

  • 定义了三个字符数组 ab 和 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;
}

;