目录
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; }