初阶c语言(练习题,猜随机数,关机程序)

目录

第一题,使用函数编写一个随机数,然后自己猜,猜随机数

第二道题(关机程序)

实现代码(关机程序)

实现代码(猜数字)


前言:

学习c语言,学习来源b站鹏哥,37天吧应该是

内容:

这集内容挺多,源代码放到文章最后

第一题,使用函数编写一个随机数,然后自己猜,猜随机数

这里囊括了很多的知识点,理解起来有点吃力,写起来也很吃力,所以慢慢来,我不会奔溃的

首先利用了do while函数

这个函数的知识点,虽然只有一点点,但是合起来就有点麻烦,因为简单,所以没讲什么,

所以到用的时候,我就发现了一个问题,就是忘记了怎么写了

就是这个逻辑,do后面没有括号,然后就是while后面有括号

注意事项

do  //每次循环都会执行do里面的语句
{
}
while()
{
}

然后函数可以嵌套一个函数,这也是非常常见的,大部分应该都支持嵌套

嵌套一个switch函数,这个是选择语句,输入一个值,看条件是否成立,这也是之前学的,全都用到了

switch("接受一个变量"),这个函数需要接收变量,然后进入循环,看这个变量对应循环的哪个判断语句,都不相等,则进入default,相当于if else的else

接收一个变量,但是输入0的话,才会退出程序,这应该是判断语句的

switch("变量")
{
    case 1:   //这里的1就对应变量switch括号里接收的值
    {
    printf("xxx");   //我记得执行一条语句不需要加大括号,但是这好像是两条,不管了
    break;           //发现了,老师也没加括号,这个应该不要加大括号
    }

    case2:
    {
    printf("xxx");
    break;
    }

    default:
    {
    printf("xxx");
    break;
    }
    
}

运用到了void函数的无返回值,我之前稍微写了一下,对void稍微晓得一点,就是不用在函数里有输入return 0;这些,可以在函数里调用,然后就可以了,相当于一个功能点的样子

接下来编写随机值的函数,就是程序的主要部分

rand()函数,生成随机数的函数,但是这是伪随机数,就是说每次生成随机数的都是固定的,所以要配合时间戳,来实现时间戳的真随机,来实现函数的生成的真随机数

这个需要注意的是,就是头文件,就相当于实现一个功能需要的文件吧

rand函数的随机数的范围是

0~RAND_MAX(32767)

rand函数需要这个头文件

#include <stdlib.h>

void menu()
{
	printf("***********************\n");
	printf("********猜数字游戏******\n");
	printf("********play 1********\n"); 
	printf("********exit 0********\n");
}

void game()
{

	 
	int ret = rand();  //生成一个随机数,用一个变量接收 
	printf("%d\n", ret);
}

但是这样子不能实现数字的真随机生成,需要配合rand函数的另一个功能

srand(),接受一个整型的变量,就是这里面的数字是随机的,那rand生成的数字就是随机的,很像套娃,对了,就是,但是这里的随机数可以用时间来代替,因为时间是唯一的,也都是整型,就可以实现随机数的生成

这段代码还是有错误的,因为我就是他随机值还是固定的,就是说有一个时间戳没有搞好

void game()
{
    //1、生成随机数
    //0~99  --> 1~ 100
    int ret = rand()%100 +1;

	while(1)
	{
		printf("请输入数字:>");
		scanf("%d", &guess);
		
		if (guess < ret)
		{
			printf("太小了\n"); 
		}
		else if(guess > ret)
		{
			printf("太大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
		}
				
	 } 

}

    

 不知道这个为啥会输入在主函数里面

srand((unsigned int)time(NULL));

然后我试了一下放到game的函数里面,如果我刷新过快的,他的两个随机值是相同的情况

和老师讲的情况是一样的,但是我忘记老师说的为啥了,应该是放主函数更新速度快一点?

这个应该就是调用时间戳来实现,真正的随机数生成,应该就是rand函数的功能里的

第二道题(关机程序)

主要是利用那个system的函数,可以调用系统的命令,但是我输不了中文,好难受

我的处理办法是,在打开一个cmd窗口,输入shutdown -a取消关机

需要这三个头文件

#include <stdio.h>
#include <stdlib.h>       //这个好像是system需要用的
#include <string.h>       //这个是strcmp需要用的,就是比较两个字符串是否相等

但是运行完程序输入不了中文,还好我打开了cmd命令行,直接输入了shutdown -a结束了所有的关机程序,算了,不管了

但是这主要是goto语句的使用,但是一般goto语句是用的,用其他的方法也是可以替代goto语句,但是在某些情况用goto语句比较好,

比如深层次的循环,用goto可以一下就跳出循环了,提高效率

实现代码(关机程序)

#include <stdio.h>
#include <stdlib.h> 
#include <string.h> 
//关机程序
//1、电脑运行起来,1分中内关机
//2、如果输入:我是猪,就取消关机

int main()
{
	char input[20] = {};
	system("shutdown -s -t 60");
	
again:
	printf("请注意,你的电脑在60秒内关机,如果输入:我是猪,就取消关机\n");
	scanf("%s", input);
	
	while(1)
	{
		if(strcmp(input,"我是猪") == 0)
	{
		printf("正在取消关机");
		system("shutdown -a");
		break; 
	 }
	 else
	 {
        goto again;
	 	//printf("你是笨蛋,正在关机,还有三次机会");
	 	//break;
	  } 
		
	 } 

	

实现代码(猜数字)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//电脑产生一个随机数(1-100)
//猜数字
//猜大了
//猜小了
 
void menu()
{
	printf("***********************\n");
	printf("********猜数字游戏******\n");
	printf("********play 1********\n"); 
	printf("********exit 0********\n");
}


	
void game()
{
	int guess = 0; 
    //1、生成随机数
    //0~99  --> 1~ 100
    int ret = rand()%100 +1;

	while(1)
	{
		printf("请输入数字:>");
		scanf("%d", &guess);
		
		if (guess < ret)
		{
			printf("太小了\n"); 
		}
		else if(guess > ret)
		{
			printf("太大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
				
	 } 

}	


int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	
	do
	{
		menu();
		printf("请选择:->");
		scanf("%d", &input);
		
		switch(input)
		{
			case 1:
			{
			game();
			break;	
			}
			case 0:
			{
				printf("退出程序\n");
				break; 
			}
			
			default:
				{
					printf("选择错误,请重新选择!\n");
					break;
				}
		}
		
		
		
	 }while(input);

	  
	
	return 0;
 } 

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

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

相关文章

《千多桃花一世开》:南胥月为何爱暮悬铃

●前世故人&#xff1a;混沌珠神女 •一边不知情为何物时&#xff0c;一边又情不知所起&#xff0c;一往而深 上一世&#xff0c;他们还是神器的时候&#xff0c;混沌珠与天命书形影不离&#xff0c;为天命所创、为天命执行法则&#xff0c;如执行指令的机器&#xff0c;没有…

SpringBoot3 快速启动框架

文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…

21爬虫:使用playwright接管本地已经登录淘宝的浏览器并查找python相关店铺信息

1.playwright如何接管本地浏览器 &#xff08;1&#xff09;首先找到电脑上安装的Chrome浏览器可执行程序的完整路径&#xff1a; Mac电脑上可执行程序的完整路径为&#xff1a; /Applications/Google Chrome.app/Contents/MacOS/Google Chrome windows系统的电脑上查找可执行…

C++ Primer 返回值和return语句

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【Java集合二】HashMap 详解

一、简介 1.1 概述 JDK1.8之前&#xff1a;HashMap使用数组链表实现&#xff0c;即使用链表处理冲突&#xff0c;同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多&#xff0c;即hash值相等的元素较多时&#xff0c;通过key值依次查找的效率较低。 JDK1.8…

3、树莓派5 安装VNC查看器 开启VNC服务器

在前序文章中&#xff08; 2、树莓派5第一次开机&#xff09;&#xff0c;可以使用三种方式开机&#xff0c;其中使用网线及wifi的方式均需要使用到VNC查看器进行远程桌面控制&#xff0c;本文将介绍如何下载安装并配置及使用VNC查看器及服务器&#xff0c;对前序文章做一些补充…

Flutter 常见布局模型

Flutter的常见的布局模型有容器&#xff08;Container&#xff09;、弹性盒子布局&#xff08;Flex、Row、Column、Expanded&#xff09;、流式布局&#xff08;Wrap、Flow&#xff09;、层叠布局&#xff08;Stack、Position&#xff09;、滚动布局&#xff08;ListView、Grid…

Java类与类的关系

类与类之间最常见的关系主要有以下三种&#xff1a; 依赖&#xff08;或uses–a&#xff09;聚合&#xff08;或has–a&#xff09;继承&#xff08;或is–a&#xff09; 依赖 依赖关系是类中最常见的关系&#xff0c;例如订单类&#xff08;order&#xff09;需要访问用户账…

神经网络的学习 求梯度

import sys, ossys.path.append(os.pardir) import numpy as npfrom common.functions import softmax, cross_entropy_error from common.gradient import numerical_gradient# simpleNet类 class simpleNet:def __init__(self):self.W np.random.rand(2, 3) # 随机形状为2*…

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明&#xff1a; 一、Nginx 的核心功能 1. 静态资源服务 功能&#xff1a;直接返回静态文件&#xff08;如 HTML、CSS、JS、图片、视频等&#xff09;。配置示例&#xff1a;server {listen 80…

如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题

在安装Qt时&#xff0c;遇到了一些问题&#xff0c;尤其是在Mac上安装Qt后&#xff0c;发现Qt Creator没有出现在应用程序中。通过一些搜索和操作&#xff0c;最终解决了问题。以下是详细的记录和解决方法。 1. 安装Qt后未显示Qt Creator 安装完成Qt后&#xff0c;启动应用程…

优选算法《位运算》

在本篇当中我们将会复习之前在C语言阶段学习的各种位运算&#xff0c;并且在复习当中将再补充一些在算法题当中没有进行总结的位运算的使用方法&#xff0c;再总结完常见的位运算使用方法之和接下来还是和之前的算法篇章一样通过几道算法题来对这些位运算的方法技巧进行巩固。在…

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…

docker容器部署jar应用导入文件时候报缺少字体错误解决

如题&#xff0c;在导入文件时候报错如下&#xff1a; Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager 经查是缺少对应字体&#xff0c;解决办法有两张&#xff1a; 第一种&#xff1a;…

工作室如何实现一机一IP

对于工作室而言&#xff0c;多开游戏账号却是其运营模式的核心需求。他们通过大量囤积金币、资源&#xff0c;再将其变现来获取利润。在这种运营模式下&#xff0c;账号数量直接关系到工作室的收益&#xff0c;所以解决 IP 问题就成了手游工作室发展道路上的首要难题&#xff0…

使用grafana v11 建立k线(蜡烛图)仪表板

先看实现的结果 沪铜主力合约 2025-02-12 的1分钟k线图 功能介绍: 左上角支持切换主力合约,日期,实现动态加载数据. 项目背景: 我想通过前端展示期货指定品种某1天的1分钟k线,类似tqsdk 的web_gui 生成图形化界面— TianQin Python SDK 3.7.8 文档 项目架构: 后端: fastap…

20250214在ubuntu20.04下使用obs studio录制外挂的1080p的USB摄像头【下载安装】

20250214在ubuntu20.04下使用obs studio录制外挂的1080p的USB摄像头 2025/2/14 9:10 缘起&#xff1a;笔记本电脑在ubuntu20.04下使用Guvcview录制自带的摄像头&#xff0c;各种问题。 1、降帧率。WIN10/11自带的相机应用可以满速30fps&#xff0c;马上重启到ubuntu20.04&#…

【开源免费】基于Vue和SpringBoot的旅游管理系统(附论文)

本文项目编号 T 229 &#xff0c;文末自助获取源码 \color{red}{T229&#xff0c;文末自助获取源码} T229&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

基于Python的Optimal Interpolation (OI) 方法实现

前言 Optimal Interpolation (OI) 方法概述与实现 Optimal Interpolation (OI) 是一种广泛应用于气象学、海洋学等领域的空间数据插值方法。该方法通过结合观测数据与模型预测数据&#xff0c;最小化误差方差&#xff0c;从而实现对空间数据的最优插值。以下是OI方法的一般步骤…

从无序到有序:上北智信通过深度数据分析改善会议室资源配置

当前企业普遍面临会议室资源管理难题&#xff0c;预约机制不完善和临时会议多导致资源调度不合理&#xff0c;既有空置又有过度拥挤现象。 针对上述问题&#xff0c;上北智信采用了专业数据分析手段&#xff0c;巧妙融合楼层平面图、环形图、折线图和柱形图等多种可视化工具&a…