【超详解】C语言——猜数字游戏

本文详细介绍了如何在C语言中实现猜数字游戏,包括随机数生成、条件判断、循环结构以及优化方案,确保每次游戏的随机数不同,提供完整的代码示例和可能遇到的问题解决方法。
摘要由CSDN通过智能技术生成

        本文清晰的介绍了猜数字游戏的实现,完全是由浅入深的例子,如果只需要某些部分的指导,只需要跳转到那一部分即可,且内容仅供参考。

一、游戏大体思路

        首先我们需要对该游戏有一个清晰地认识:具体的玩法是在一个数范围内,游戏会自动生成一个随机数,我们需要在他的条件下,找出这个数,当所猜的数字大于随机数时,需要报出“猜大了”,当所猜的数字小于这个随机数时,需要报出“猜小了”。

1.1、需要具备的条件 

       由上面的条件可以看出,我们的代码需要具备以下条件

              1.系统自动生成随机数

              2.猜大时——系统提示猜大了;猜小时——系统提示猜小了

       该游戏可能不止玩一次,所以可能会用到循环方面的知识。

1.2、相关的内容

      1.2.1 随机数的生成

      在C语言当中提供了一个函数rand可生成随机数

在此处对rand有一个详细的介绍Reference - C++ Reference (cplusplus.com)可以在这个网站上查找相关的函数。

在此,说明一下使用rand函数需要注意的问题

1.rand是一个库函数,使用时需要包含对应的头文件#include<stdlib.h>才可以进行使用。

2.rand并不是真正的生成随机数,而是生成的是伪随机数,且这个随机数是有范围的(0~RAND_MAX(32767)),rand一般是在srand=1情况下调用生成的随机数,因此如果直接利用rand,就会发现你能够猜出他的下一个的数字是什么。

3.且在使用rand时,srand函数并不需要调用很多次,只需要调用一次就可以了。

举例:(如果你自己实验就会发现,一次与一次执行的命令结果都是相同的)

        所以为了能够使所得到数字是真正的随机数,我们需要对他的初始值srand进行优化,需要达到的效果是srand每一时刻的初始值都是不同的,而此时我们需要注意的是我们不是给他输入相应的值,而是让他自己做到每时每刻都在变。

       那么现在问题来了——如何能实现每时每刻的直都在变呢?

       仔细想一想在我们的电脑当中——什么是我们能看到的无时无刻都在变的事物——时间

而有一个东西叫做时间戳——计算机当前这个时间与计算机起始时间(1970年01月01日00时00分00秒)这个差值转化成秒,这个秒数就是当前的时间戳,时间在发生变化,而秒数就在发生变化,将时间戳传递给srand就能实现每个时刻是不一样的数据。

这时我当时的时间戳——可以在百度当中直接搜索到

那么如何将他在代码当中应用呢

C语言当中有一个time函数返回的就是一个时间戳

此刻,我们将原理搞清楚了之后,看一下srand如何具体使用

int main()
{
	srand((unsigned int)time(NULL));
    printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());

	return 0;
}

这便是关于随机数生成的代码

需要注意:srand与time的返回类型是不一样的,我们需要对time进行强制转换一下所以写法是上面得描述,此时就能达到我们想要的效果,随机生成不同的数

但此时还要注意:我们需要将他这个数限定在1~100之间

                    Rand%100+1,就在1-100之间的数了,将这个打印出来便能够得到想要的结果。

将这个结果进行推广一下

生成a~b之间的随机数

A+rand()%(b-a+1)

        此刻,才算是将随机数的生成部分完成。

  1.2.2判断输入值与随机数

     在这个部分当中我们需要用到条件判断语句和循环,直至将游戏全部实现——这也是我们这次游戏的主体部分

int main()
{
   ```
   if(语句)
    printf("猜大了");
   else if(语句)
    printf("猜小了");
   else
    printf("恭喜你,猜对了");
   return 0;
}

        在上述代码上,我使用的伪代码,仅做参考。

现在准备工作基本完成。


二、代码的实现

1.在一个游戏当中,开始需要做一个菜单,只要执行程序游戏,该菜单就会被执行,所以最好使用do~while循环的方式打印菜单。

在此时将菜单便打印了出来

2.需要判断输入的是什么,游戏的执行或者是结束

int main()
{
	int input = 0;
	do
	{
		printf("******************\n");
		printf("******1.play******\n");
		printf("******2.exit******\n");
		printf("******************\n");
		printf("请输入:>");
		scanf("%d",& input);
		switch (input)
		{
		case 1:
			printf("游戏主体");
			break;
		case 2:
			break;
		default:
			printf("输入错误,请重新输入");
		}

	
	}
	while (input);
}

此时整个游戏的大致框架便有了雏形

3.将游戏的主体部分实现,因为这一部分很长,不建议直接写在整体的框架之中,所以我们可以写一个函数,对他进行一个调用即可

void game()
{
	int a = 1;
	int r = rand() % 100 + 1;
	while (a)
	{
		printf("请输入数字:>");
		scanf("%d", &a);
		if (a < r)
			printf("猜小了\n");
		else if (a > r)
			printf("猜大了\n");
		else
		{
			printf("恭喜你,猜对了");
			break;
		}
	}
	return 0;
 }

4.最后我们将代码进行整合,在这个过程中可能会发现前面的一些地方是有一些小问题的在进行细微的调整,便会得到一个很不错的结果。

void game()
{
	int a = 1;
	int r = rand()%100 + 1;
	while (a)
	{
		printf("请输入数字:>");
		scanf("%d",&a);
		if (a < r)
			printf("猜小了\n");
		else if (a > r)
			printf("猜大了\n");
		else
		{
			printf("恭喜你,猜对了");
			break;
		}
	}
	return 0;
 }
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		printf("******************\n");
		printf("******1.play******\n");
		printf("******2.exit******\n");
		printf("******************\n");
		printf("请输入:>");
		scanf("%d",& input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 2:
			goto next;
		default:
			printf("输入错误,请重新输入\n");
		}
	}
	while (input);
next:
	return 0;
}

这边是游戏的初步设计好了。


三、调整与优化

       目前在这个系统当中可能会觉得最核心的部分有一些冗长,可以将他放在函数当中进行调用,就会减少这样的情况。

调整最终版本:

void menu()
{
	printf("******************\n");
	printf("******1.play******\n");
	printf("******2.exit******\n");
	printf("******************\n");
	printf("请输入:>");
}

void game()
{
	int a = 1;
	int r = rand() % 100 + 1;
	while (a)
	{
		printf("请输入数字:>");
		scanf("%d", &a);
		if (a < r)
			printf("猜小了\n");
		else if (a > r)
			printf("猜大了\n");
		else
		{
			printf("恭喜你,猜对了");
			break;
		}
	}
	return 0;
 }
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		scanf("%d",& input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 2:
			goto next;
		default:
			printf("输入错误,请重新输入\n");
		}
	}
	while (input);
next:
	return 0;
}

在这个版本当中函数的主体是没有那么长的,将复杂的问题放在外面。

优化:

       1.我们可以将他所答的次数进行限制,例如5次完了之后没有猜对直接一局游戏就会退出

       2.在规定的次数内不能猜对,可以进行惩罚(具体措施可以自行验证,我在此不适合说出来)

       3.在Windows系统当中有一个清理屏幕的命令cls,在这个游戏当中也可以将他实现出来

这个是基于优化一做出的改进,仅供参考:

void menu()
{
	printf("******************\n");
	printf("******1.play******\n");
	printf("******2.exit******\n");
	printf("******************\n");
	printf("请输入:>");
}

void game()
{
	int a = 1;
	int chance = 5;
	int r = rand() % 100 + 1;
	while (chance<=5&&chance>0)
	{
		printf("你还有%d次机会\n", chance);
		printf("请输入数字:>");
		scanf("%d", &a);
		if (a < r)
			printf("猜小了\n");
		else if (a > r)
			printf("猜大了\n");
		else
		{
			printf("恭喜你,猜对了\n");
			goto x;
			break;
		}
		chance--;
	}
	printf("很抱歉,你未能在规定次数内才出结果\n");
	x:
	return 0;
 }
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		scanf("%d",& input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 2:
			goto next;
		default:
			printf("输入错误,请重新输入\n");
		}
	}
	while (input);
next:
	return 0;
}

四、可能遇到的问题及可执行方案

       在代码实现的过程当中,可能会遇到和我有相同问题的时刻,小编将这些整理出来

1.在使用srand和time函数时,由于这两者的返回类型并不相同所以直接用,编译器可能会报错,需要将time函数的类型强制转换一下<unsigned int>才能顺利进行使用

2.在使用rand生成随机数时,需要调用srand,这个函数是只需要调用一次的,所以将srand放在最前面的位置(最好不要将他放在循坏当中)

3.在打印菜单时,最后是需要选择的,所以用printf进行必要的文字说明,scanf只是仅仅输入数字

4.在使用do······while循环时,由于选择2需要将整个程序结束,所以使用的是goto语句,如果直接使用break;他还是会进入到循环当中,不是我们想要的结果;

   在猜数字的主体部分,由于已经猜正确,所以我们需要直接跳出循坏,所以使用的是goto语句。

5.在用if···else语句时,需要注意多条语句将他用大括号的方式括起来

6.如在遇到其他问题试着用调试的方式,进行细节的修改


五、小编

      在此,本章节的内容已全部介绍完

      如果大家还遇到什么问题,我们一同探讨,只要下功夫,铁杵磨成针,加油吧!

  • 44
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是书的光盘。共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了 Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动程序、摄像头驱动程序、SDIO驱动程序进行了详细的介绍,本书最大的特色在于每一节 的例子都是经过精挑细选的,具有很强的针对性。力求让读者通过亲自动手实验,掌握各类Windows驱动 程序的开发技巧,学习尽可能多的Windows底层知识。   本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。 原创经典,威盛一线工程师倾力打造。深入驱动核心,剖析操作系统底层运行机制,通过实例引导,快 速学习编译、安装、调试的方法。   从Windows最基本的两类驱动程序的编译、安装、调试入手讲解,非常容易上手,用实例详细讲解 PCI、USB、虚拟串口、虚拟摄像头、SDIO等驱动程序的开发,归纳了多种调试驱动程序的高级技巧,如 用WinDBG和VMWARE软件对驱动进行源码级调试,深入Windows操作系统的底层和内核,透析Windows驱动 开发的本质。 本书是作者结合教学和科研实践经验编写而成的,不仅详细介绍了Windows内核原理,而且介绍了编程技 巧和应用实例,兼顾了在校研究生和工程技术人员的实际需求,对教学、生产和科研有现实的指导意义 ,是一本值得推荐的专著。              ——中国工程院院士   院士推荐   目前,电子系统设计广泛采用通用操作系统,达到降低系统的设计难度和缩短研发周期。实现操作 系统与硬件快速信息交换是电子系统设计的关键。   通用操作系统硬件驱动程序的开发,编写者不仅需要精通硬件设备、计算机总线,而且需要Windows 操作系统知识以及调试技巧。学习和掌握Windows硬件驱动程序的开发是电子系统设计人员必备的能力。   本书是作者结合教学和科研实践经验编写而成的,不仅详细介绍了Windows内核原理,并且介绍了编 程技巧和应用实例,兼顾了在校研究生和工程技术人员的实际需求,对教学、生产和科研有现实的指导 意义,是一本值得推荐的专著。 第1篇 入门篇 第1章 从两个最简单的驱动谈起 本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。 这两个驱动程序没有操作具体的硬件设备,只是在系统创建了虚拟设备。在随后的章节中,它们会作 为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装 和调试程序。   1.1 DDK的安装   1.2 第一个驱动程序HelloDDK的代码分析    1.2.1 HelloDDK的头文件    1.2.2 HelloDDK的入口函数    1.2.3 创建设备例程    1.2.4 卸载驱动例程    1.2.5 默认派遣例程   1.3 HelloDDK的编译和安装    1.3.1 用DDK环境编译HelloDDK    1.3.2 用VC集成开发环境编译HelloDDK    1.3.3 HelloDDK的安装   1.4 第二个驱动程序HelloWDM的代码分析    1.4.1 HelloWDM的头文件    1.4.2 HelloWDM的入口函数    1.4.3 HelloWDM的AddDevice例程    1.4.4 HelloWDM处理PNP的回调函数    1.4.5 HelloWDM对PNP的默认处理    1.4.6 HelloWDM对IRP_MN_REMOVE_DEVICE的处理    1.4.7 HelloWDM对其他IRP的回调函数    1.4.8 HelloWDM的卸载例程   1.5 HelloWDM的编译和安装    1.5.1 用DDK编译环境编译HelloWDM    1.5.2 HelloWDM的编译过程    1.5.3 安装HelloWDM   1.6 小结  第2章 Windows操作驱动的基本概念  驱动程序被操作系统加载在内核模式下,它与Windows操作系统内核的其他组件进行密切交互。本章主 要介绍Windows操作系统内核的基本概念,同时还介绍应用程序和驱动程序之间的通信方法。   2.1 Windows操作系统概述    2.1.1 Windows家族    2.1.2 Windows特性    2.1.3 用户模式和内核模式    
计算机组成原理与汇编语言程序设计课后习题及解答 徐洁,俸远祯 电子工业出版社 第1章 习题一 1.什么是程序存储工作方式? 答:计算机的工作方式——存储程序工作方式。即事先编写程序,再由计算机把这些信息 存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。 2.采用数字化方法表示信息有哪些优点? 用数字化方法表示信息的优点: (1)抗干扰能力强, 可靠性高。 (2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。 (3)数字化的信息可以存储、信息传送也比较容易实现。 (4)可表示的信息类型与范围及其广泛,几乎没有限制。 (5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成 了计算机硬件设计的基础。 3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。 4.数字计算机的主要特点是什么? 1. (1) 能在程序控制下自动连续地工作; (2")运算速度快; (3) 运算精度高; (4) 具有很强的信息存储能力; (5) 通用性强,应用领域及其广泛。 5.衡量计算机性能的基本指标有哪些? 答:衡量计算机性能的基本指标: (1)基本字长——参加一次运算的数的位数; (2)数据通路宽度——数据总线一次能并行传送的位数; (3)运算速度——可用 CPU的时钟频率与主频, 每秒平均执行指令数, 典型四则运算的 时间来表示。 (4)主存储器容量——可用字节数或单元数(字数)×位数来表示。 (5)外存容量——常用字节数表示。 (6)配备的外围设备及其性能。 (7)系统软件配置。 7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。 系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。例如WINDOWS98操 作系统,C语言编译程序等,数据库管理系统。 8.对源程序的处理有哪两种基本方式? 对源程序的处理通常有两种处理方式:解释方式和编译方式。 第2章 习题二 1.将二进制数(101010.01)2 转换为十进制数及BCD码。 解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD 2.将八进制数(37.2)8转换为十进制数及BCD码. 解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD 3.将十六进制数(AC.E)转换为十进制数及BCD码. 解: (AC.E)16 =(172.875)10 = (00010111001 4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。 解: (75.34)10 = (01001011.01010111)2 =(213.256)8 =(4B.57)16 5.将十进制数13/128转换为二进制数. 解: (13/128)10 =(1101/10000000)2 =(0.0001101)2 6.分别写出下列各二进制数的原码、补码,字长(含一位数符)为8位。 (1)0 (2)- 0 (3)0.1010 (4)- 0.1010 (5)1010 (6)-1010 解: 原码 补码 0 00000000 00000000 -0 10000000 00000000 0.1010 0.1010000 0.1010000 - 0.1010 1.1010000 1.0110000 1010 00001010 00001010 -1010 10001010 11110110 7.若X补=0.1010,则X原、真值等于什么? 解:X补=0.1010,则X原=0.1010,真值 X = 0.1010 8.若X补=1.1010,则X原、真值等于什么? 解:X补=1.1010,则X原=1.0110,真值 X = - 0.0110 9.某定点小数字长16位,含1位符号,原码表示,分别写出下列典型值的二进制代码与十 进制真值。 (1)非0最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数 解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 1-2-15 (3)绝对值最小负数 1.000000000000001 -2-15 (4)绝对值最大负数 10.某定点小数字长16位,含1位符号,补码表示,分别写出下列典型值的二进制代码与 十进制真值。 (1)非0最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数 解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 (4)绝对值最大负数 1.000000000000000 -1 11.某浮点数字长16位,其中阶码6位,含1位符号位,补码表示,以2为底;尾数10位(含1位数 符),补码表示,规格化。分别写出下
MATLAB通信仿真及应用实例详解pdf-MATLAB通信仿真及应用实例详解.part2.rar 未命名.JPG 作者:邓华 编著 出版社:人民邮电出版社 出版日期:2003-09-01 内容简介 本书着重介绍了MATLAB在通信仿真,尤其是移动通信仿真中的应用,通过丰富具体的实例来加深读者对通信系统仿真的理解和掌握。 全书共分10章,前3章介绍MATLAB通信仿真的基础,包括Simulink和S-函数;第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为例介绍了移动通信系统的设计和仿真。 本书适用于通信行业的大专院校学生和研究人员,既可以作为初学者的入门教材,也可以用作中高级读者和研究人员的速查手册。 第1章  MATLAB与通信仿真 1 1.1  MATLAB简介 1 1.1.1  MATLAB集成开发环境 2 1.1.2  MATLAB编程语言 6 1.2  通信仿真 8 1.2.1  通信仿真的概念 8 1.2.2  通信仿真的一般步骤 9 第2章  Simulink入门 12 2.1  Simulink简介 12 2.2  Simulink工作环境 13 2.2.1  Simulink模型库 13 2.2.2  设计仿真模型 14 2.2.3  运行仿真 14 2.2.4  建立子系统 15 2.2.5  封装子系统 17 2.3  Simulink模型库 20 第3章  S-函数 23 3.1  S-函数简介 23 3.1.1  S-函数的工作原理 23 3.1.2  S-函数基本概念 24 3.2  M文件S-函数 26 3.2.1  M文件S-函数简介 26 3.2.2  M文件S-函数的编写示例 30 3.3  C语言S-函数 46 3.3.1  C语言S-函数简介 46 3.3.2  C语言S-函数的编写示例 51 3.4  C 语言S-函数 60 第4章  信源和信宿 66 4.1  信源 66 4.1.1  压控振荡器 66 4.1.2  从文件中读取数据 68 4.1.3  数据源 72 4.1.4  噪声源 78 4.1.5  序列生成器 85 4.1.6  实例4.1--通过压控振荡器实现BFSK调制 99 4.2  信宿 101 4.2.1  示波器 101 4.2.2  错误率统计 103 4.2.3  将结果输出到文件 105 4.2.4  眼图、发散图和轨迹图 108 第5章  信道 116 5.1  加性高斯白噪声信道 116 5.1.1  函数awgn() 116 5.1.2  函数wgn() 118 5.1.3  加性高斯白噪声信道模块 120 5.1.4  实例5.1--BFSK在高斯白噪声信道中的传输性能 122 5.2  二进制对称信道 127 5.2.1  二进制对称信道模块 127 5.2.2  实例5.2--卷积编码器在二进制对称信道中的性能 128 5.3  多径瑞利衰落信道 132 5.3.1  多径瑞利衰落信道模块 132 5.3.2  实例5.3--BFSK在多径瑞利衰落信道中的传输性能 134 5.4  伦琴衰落信道 138 5.4.1  伦琴衰落信道模块 138 5.4.2  实例5.4——BFSK在多径瑞利衰落信道中的传输性能 139 5.5  射频损耗 142 5.5.1  自由空间路径损耗模块 142 5.5.2  接收机热噪声模块 144 5.5.3  相位噪声模块 145 5.5.4  相位/频率偏移模块 146 5.5.5  I/Q支路失衡模块 148 5.5.6  无记忆非线性模块 149 第6章  信源编码 153 6.1  压缩和扩展 153 6.1.1  A律压缩模块 153 6.1.2  A律扩展模块 154 6.1.3  μ律压缩模块 155 6.1.4  μ律扩展模块 156 6.2  量化和编码 157 6.2.1  抽样量化编码器 157 6.2.2  触发式量化编码器 158 6.2.3  量化解码器 159 6.2.4  实例6.1--A律十三折与μ律十五折的量化误差 159 6.3  差分编码 162 6.3.1  差分编码器 162 6.3.2  差分解码器 163 6.4  DPCM编码和解码 164 6.4.1  DPCM编码器 164 6.4.2  DPCM解码器 166 6.4.3  实例6.2--DPCM与PCM系统的量化噪声 166 第7章  信道编码和交织 172 7.1  分组编码 172 7.1.1  二进制线性码 172 7.1.2  二进制循环码 174 7.1.3  BCH码 176 7.1.4  Reed-Solomon码 178 7.1.5  Hamming码 184 7.1.6  实例7.1--Reed-Solomon码在CT2中的应用 186 7.2  循环冗余码 192 7.2.1  CRC编码器 192 7.2.2  CRC检测器 195 7.2.3  实例7.2--CRC-16 编码在DECT中的应用及其性能 197 7.3  卷积编码 202 7.3.1  卷积编码器 203 7.3.2  实例7.3--IS-95的卷积编码器 207 7.3.3  卷积译码器 211 7.3.4  实例7.4--卷积码的软判决译码 214 7.4  块交织 220 7.4.1  通用块交织 220 7.4.2  矩阵交织 221 7.4.3  实例7.5--交织器在IS-95中的应用 224 7.4.4  代数交织 228 7.4.5  随机交织 231 7.4.6  实例7.6--cdma 2000系统Turbo编码器的实现 232 7.5  卷积交织 249 7.5.1  复用交织 250 7.5.2  卷积交织 253 7.5.3  螺旋交织 255 第8章  信号调制 259 8.1  模拟幅度调制 259 8.1.1  双边带幅度调制 259 8.1.2  双边带抑制载波幅度调制 262 8.1.3  单边带幅度调制 265 8.2  模拟频率调制 268 8.2.1  基带频率调制 269 8.2.2  频带频率调制 270 8.3  模拟相位调制 272 8.3.1  基带相位调制 272 8.3.2  频带相位调制 274 8.4  数字幅度调制 275 8.4.1  基带脉幅调制 276 8.4.2  频带脉幅调制 278 8.4.3  基带正交幅度调制 281 8.4.4  频带正交幅度调制 282 8.4.5  基带矩形正交幅度调制 283 8.4.6  频带矩形正交幅度调制 285 8.4.7  实例8.1--数字幅度调制的抗噪声性能 287 8.5  数字频率调制 291 8.5.1  基带M相频移键控调制 292 8.5.2  频带M相频移键控调制 293 8.6  数字相位调制 294 8.6.1  BPSK调制 295 8.6.2  DBPSK调制 296 8.6.3  QPSK调制 297 8.6.4  实例8.2--QPSK在IS-95前向信道中的应用 299 8.6.5  DQPSK调制 304 8.6.6  实例8.3--DQPSK在USDC中的应用 305 8.6.7  基带OQPSK调制 309 8.6.8  频带OQPSK调制 312 8.6.9  实例8.4--OQPSK在IS-95反向信道中的应用 314 8.6.10  基带M-PSK调制 318 8.6.11  频带M-PSK调制 319 8.6.12  基带M-DPSK调制 321 8.6.13  频带M-DPSK调制 323 8.7  数字连续相位调制 325 8.7.1  基带CPM调制 325 8.7.2  频带CPM调制 328 8.7.3  基带MSK调制 330 8.7.4  频带MSK调制 333 8.7.5  基带GMSK调制 335 8.7.6  频带GMSK调制 337 8.7.7  实例8.5--GMSK在GSM中的应用 338 8.7.8  基带CPFSK调制 342 8.7.9  频带CPFSK调制 343 第9章  仿真和调试 346 9.1  运行仿真 346 9.1.1  设置仿真参数 346 9.1.2  运行仿真 356 9.2  调试和分析 358 9.2.1  调试仿真模型 358 9.2.2  分析仿真结果 364 第10章  cdma 2000移动通信系统 366 10.1  cdma 2000系统简介 366 10.1.1  cdma 2000 1x关键技术 367 10.1.2  cdma 2000的信道划分 368 10.2  cdma 2000反向业务信道 370 10.2.1  cdma 2000反向业务信道简介 370 10.2.2  CRC编码器 374 10.2.3  卷积编码器 379 10.2.4  信号交织器 384 10.2.5  正交扩频模块 392 10.2.6  PN信号生成器 397 10.2.7  信号调制模块 404 10.2.8  初始化模块 406 10.2.9  基站接收器 410 10.3  cdma 2000前向业务信道 412 pdf文件下载地址: 请见帖子附件( 觉得好可要顶起来啊! 不能只下载不回贴的啊!~ 【版主确认:138页之后是空白的】
猜数字游戏是一种经典的小游戏,玩家需要猜测一个随机数,直到猜中为止。下面是浙江大学的猜数字游戏C语言代码及详解: ```c #include <stdio.h> int main() { int random, n, i, a; scanf("%d %d", &random, &n); // 输入随机数和猜测次数 for (i = 1; i <= n; i++) { scanf("%d", &a); // 输入猜测的数字 if (a < 0) { // 如果输入负数,游戏结束 printf("Game Over\n"); break; } if (a == random) { // 如果猜中了 if (i == 1) { // 如果第一次就猜中 printf("Bingo!"); break; } else if (i <= 3) { // 如果猜中了且猜测次数小于等于3 printf("Lucky You!"); break; } else if (i <= n) { // 如果猜中了且猜测次数大于3小于等于n printf("Good Guess!"); break; } } if (a > random) printf("Too big\n"); // 如果猜测的数字大于随机数 if (a < random) printf("Too small\n"); // 如果猜测的数字小于随机数 if (i == n) printf("Game Over\n"); // 如果猜测次数用完了,游戏结束 } return 0; } ``` 代码详解: 1.首先输入随机数和猜测次数; 2.使用for循环进行猜测,循环次数为猜测次数n; 3.在循环中,输入猜测的数字a; 4.如果输入负数,游戏结束,输出"Game Over"; 5.如果猜中了,根据猜测次数输出不同的提示信息,然后结束游戏; 6.如果猜测的数字大于随机数,输出"Too big"; 7.如果猜测的数字小于随机数,输出"Too small"; 8.如果猜测次数用完了,游戏结束,输出"Game Over"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽羽27

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值