初阶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;
 } 
相关推荐
等等54333 分钟前
Java EE初阶——wait 和 notify
java·开发语言
低代码布道师41 分钟前
第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房
开发语言·javascript·node.js
盛夏绽放1 小时前
Python字符串常用方法详解
开发语言·python·c#
小狗祈祷诗2 小时前
day22-数据结构之 栈&&队列
c语言·数据结构
AI+程序员在路上2 小时前
XML介绍及常用c及c++库
xml·c语言·c++
好吃的肘子2 小时前
Elasticsearch架构原理
开发语言·算法·elasticsearch·架构·jenkins
nlog3n3 小时前
Go语言交替打印问题及多种实现方法
开发语言·算法·golang
kaixin_learn_qt_ing3 小时前
Golang
开发语言·后端·golang
ddd...e_bug3 小时前
Shell和Bash介绍
开发语言·bash
C4程序员3 小时前
Java百度身份证识别接口实现【配置即用】
java·开发语言