当前位置: 首页 > news >正文

初阶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函数的功能里的

 

实现代码

#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;
 } 

相关文章:

  • 手写一个Java Android Binder服务及源码分析
  • Day 38 卡玛笔记
  • web自动化笔记(二)
  • MySQL判空函数--IFNULL函数的使用
  • TikTok成功打破传统媒体壁垒,用户涌入平台创作
  • 在带有Intel NPU的Windows上安装IPEX-LLM
  • Python 闭包与装饰器
  • Softhsm储存安全数据性能整理
  • Swift 的 KeyPath 是什么?
  • NS6116-同步降压稳压器 3.1A输出电流 耐压30V
  • 测试方案整理
  • 【原理图PCB专题】自制汉字转码工具,适配Allgero 17版本 Skill
  • C++模板进阶
  • DeepSeek人工智能AI汽车营销销售培训讲师培训师唐兴通讲课汽车销售大数据存量客户数字化营销数字化销售大模型销售话术引流内容社群私域
  • SQL Server安装流程
  • 数据结构-单链表
  • 华为2288H V5服务器无法启动问题处理
  • mysql之如何获知版本
  • Cookie:网页浏览背后的“小秘密”
  • 紫光展锐蜂窝物联网芯片V8850荣获国密一级安全认证
  • 营销网站建设/山西太原百度公司
  • 宠物网站建设规划书/企业网站的类型
  • 广西网站建设营销公司/百度极速版推广
  • 前端只是做网站吗/全网营销软件
  • 在线名片制作网站开发/seo优化seo外包
  • 茶叶网站建设策划书/大连网站优化