为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[整理](C语言)智力猜字游戏

2017-11-17 28页 doc 348KB 20阅读

用户头像

is_882336

暂无简介

举报
[整理](C语言)智力猜字游戏[整理](C语言)智力猜字游戏 《C语言》考试A卷------36选6彩票抽奖系统 彩票抽奖系统简介: 在1-36个数字中,先人工选择6个数字,然后抽奖,由电脑生成6个随机数,比较人工选择的6个数字和电脑生成的6个随机数中,相同的个数。 系统功能分析 本系统由以下几个功能模块(函数)构成: 显示模块(函数):显示指定(已知)数组中的非0元素。 校验模块(函数):验证指定(已知)数组的合法性,数组中的数据是否有重复,是否有超出1-36范围的数据, 选号模块(函数):将输入的整数存入数组a1,并将a1作为本模块(函数...
[整理](C语言)智力猜字游戏
[整理](C语言)智力猜字游戏 《C语言》考试A卷------36选6彩票抽奖系统 彩票抽奖系统简介: 在1-36个数字中,先人工选择6个数字,然后抽奖,由电脑生成6个随机数,比较人工选择的6个数字和电脑生成的6个随机数中,相同的个数。 系统功能 本系统由以下几个功能模块(函数)构成: 显示模块(函数):显示指定(已知)数组中的非0元素。 校验模块(函数):验证指定(已知)数组的合法性,数组中的数据是否有重复,是否有超出1-36范围的数据, 选号模块(函数):将输入的整数存入数组a1,并将a1作为本模块(函数)的结果。 随机数产生模块(函数):产生随机数存入数组b1,并将b1作为本模块(函数)的结果。 兑奖模块(函数):将选号模块得到的数组a1与随机数产生模块得到的数组b1进行比对,看有多少个数组元素是相同的,相同的数据则为已中奖的数据,相同数据越多,中奖级别越大,并输出中奖信息。 目的:考察掌握(函数)的定义、调用、嵌套、递归、指针、循环等知识的综合应用 要求:各个子功能模块(函数)独立实现,并能够独立测试。 主要:函数的定义、调用。数组的定义和使用 知识点补充:如果将指针作为函数返回值,那么该指针所指向的变量必须是静态的,否则,指针有效,但其所指向的变量已经被释放了 步骤前提: 1. 导入头文件 #include #include #include 2. 在所有函数的外部,定义一个全局常量 const int array_length=6; //表示数组的长度 模块1:显示模块(函数)(本模块20分) 模块功能:显示指定(已知)数组中的信息。 定义一个函数display,该函数的功能是将指定(已知)的数组中所有非0的元素,逐个输出。 相关的知识点:函数的定义、数组的使用、for循环的使用 函数的算法如图: 已知数组a, int i=0; 否 i<数组长度 是 取出数组中第i个元素 i++ 是 元素是否为0 否 输出该元素 结束 分析: 函数头:该函数只是需要显示数组的元素,不需要任何结果,因此不需要返回值,即返回值类型为void,函数名称display,该函数需要显示的是指定(已知)的数组信息,即必须要知道显示的数组。因此函数参数为int a[] 函数体: 1.先使用printf语句,输出,号码为: 2.使用for循环,将已知数组a的各个元素取出,判断其是否为0,如果为0,则不输出;不为0,则将其输出。 3. 使用printf语句,换行 模块1(函数)的测试: 在完成了函数display的基础上,在main()函数中,定义一个数组int ceshi[]={9,8,7,6,5,4}; 然后调用display函数,将数组ceshi的元素输出。 将数组元素改为ceshi={9,8,7,0,0,0},然后调用display函数,将数组ceshi的元素输出。比较前后两次调用的结果。 测试结果如图: 测试1,当ceshi={9,8,7,6,5,4}时,输出 测试2,当ceshi={9,8,7,0,0,0}时,输出 测试完成后,将mian()函数中的测试语句注释掉。 模块2,校验模块(函数)(本模块20分) 模块功能:验证指定(已知)数组的合法性,数组中的数据是否有重复,是否有超出1-36范围的数据, 如果数组合法,则返回1,否则返回0 相关的知识点:函数的定义 函数的大概流程如图: 已知数组a, int i=0; Result=1; 否 i<数组长度 ngth 是 取出数组中第i个元素 i++ 是 元素值是否合 法 否 Result=0; 返回result值 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是数组是否合法,合法则返回1,不合法则返回0,那么返回值的类型应为,,,;函数名称check(也可以自拟函数名);该函数是验证指定(已知)数组的合法性,即必须要知道验证的数组。因此函数参数为,,, 函数体: 1.先定义一个int类型的临时变量result=1; //默认为结果合法 2.使用双重嵌套 for循环,第一层for循环用于取出已知数组a的某个元素a[i],第二层for循环用于取出数组的另一个元素a[j],比较两个元素,是否相同,如果相同,则证明数组中存在重复的数据,那么resule=0,说明该数组不合法。同时验证数组的数据范围是否在1-36范围内,若不在此范围内,则resule=0 步骤2的参考代码如下: 3.在完成所有循环后,将result作为本函数的结果返回。 模块2(函数)的测试: 1.在完成了check函数的基础上,在main()函数中,定义一个数组int ceshi[]={9,8,7,6,5,4}; 2.定义一个判断变量int decide,并调用check函数验证数组ceshi的合法性,并将验证结果赋值给decide。 即decide = check(ceshi); 3.使用if语句,如果decide为1,则使用printf语句,输出“合法” 如果decide为0,则使用printf语句,输出“不合法” 修改数组ceshi的值为{9,8,7,6,5,5};和{9,8,7,6,5,37},分别测试其合法性 测试结果如图: 测试1,当ceshi={9,8,7,6,5,4}时 ,输出 测试2,当ceshi={9,8,7,6,5,5}或{9,8,7,6,5,37} 时,输出 测试完成后,将mian()函数中的测试语句注释掉。 模块3,选号模块(函数)(本模块20分) 模块功能:将输入的整数存入数组a1,并将a1作为本模块的结果。 相关的知识点:函数的定义 函数的大概流程如图: 开始 创建元素个数为6的数组a, Int a [6]; i=0; i< 数组长度 否 i=0; 是 提示输入数据 i++ 数据存入数组中 否 调用check方法验 证数组是否合法 是 return数组a 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是得到一个存放整数(数组首元素)的地址(指针),那么返回值的类型应为int* ;函数名称select_number (也可以自拟函数名);该函数用于创建一个数组,不需要已知条件,那么函数的参数应为,,, 函数体: 1.创建一个元素个数为6的静态整型数组a(因为是36选6,只需要6个数字即可)。static int a[6]; 2.使用while循环,如果输入数据不合法,即要求重复输入,如果合法,则return数组a(在循环语句中,return除了可以返回结果以外,还具有break的作用,即可用于跳出循环) 3.使用for循环,提示用户从键盘输入数据,并将输入的数据存放至数组a中。 4.调用模块2,校验模块(函数)check,校验数组a。如果校验结果为0,说明数组a中的元素不合法,那么要求用户重新输入。 5.重复步骤2,3,直至校验结果为1。将数组a作为本函数的结果,返回。 步骤2-5参考代码如下: 模块3(函数)的测试: 在完成了select_number函数的基础上,在main()函数中,定义一个数组int ceshi[]; 调用select_number函数,并将他的结果,赋值给数组ceshi; 调用display函数(模块1的函数),将数组ceshi的信息输出。 测试1:当输入1,2,3,4,5,5,时输出。 测试2,当输入38,1,2,3,4,5时输出 测试3,当输入8,7,6,5,4,3,时输出 测试完成后,将mian()函数中的测试语句注释掉。 模块4,随机数产生模块(函数)(本模块20分) 模块功能:产生随机数存入数组b1,并将b1作为本模块的结果。 相关的知识点:函数的定义 函数的大概流程如图: 开始 创建元素个数为6的数组a, Int a[6]; i=0; i<6 否 i=0; 是 产生一个随机数 i++ 将随机数存入数组中 否 调用check方法验 证数组是否合法 是 return数组a 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是得到一个存放随机整数的数组首元素的地址,那么返回值的类型应为,,,;函数名称random_number (也可以自拟函数名);该函数用于创建一个数组,不需要已知条件,那么函数的参数应为,,, 函数体: 1.创建一个元素个数为6的整型静态数组a(因为是36选6,只需要6个数字即可)。static int a[6]; 2.创建一个随机种子备用。 srand((int)time(NULL)); //随机数种子 3.使用while循环,如果产生的随机数不合法,即重复产生随机数,如果合法,则return数组a(在循环语句中,return除了可以返回结果以外,还具有break的作用,即可用于跳出循环) 4.使用for循环,使用随机rand函数,产生的介于1-37之间的随机数逐个存放至数组a中。 5.调用模块2,校验模块(函数)check,校验数组a,如果校验结果为0,说明数组a中的元素不合法,那么重新产生随机数。 6.重复步骤2,3,直至校验结果为1。将数组a作为本函数的结果,返回。 步骤2至步骤6的代码参考如下: 模块4(函数)的测试: 在完成了random_number函数的基础上,在main()函数中,定义一个数组int ceshi[6]; 调用random_number函数,并将他的结果,赋值给数组ceshi; 调用display函数(模块1的函数),将数组ceshi的信息输出。 测试界面1: 测试界面2: 注意:因为产生的是随机数数组,因此每次的测试结果是不一样的。 测试完成后,将mian()函数中的测试语句注释掉。 模块5,兑奖模块(函数)(本模块20分) 模块功能:将选号模块得到的数组a1与随机数产生模块得到的数组b1进行比对,看有多少个数组元 素是相同的,相同的数据则为已中奖的数据,相同数据越多,中奖级别越大。 相关的知识点:函数的定义,switch多分支选择语句、for循环嵌套、数组基本用法 函数的大概流程如图: 已知数组a1,b1 创建元素个数为6的数组C, Int c[6];定义变量i=0;num=0;j=0; 否 i<6 i++,j++ 否 是 Num==0, 逐个取出数组a1中的否 是 调用display方法将数组c元素a[i]和数组b1中的输出,并输出中奖情况 元素b[j],比较取出的 元素是否相同, 输出没有中奖 是 a[i]存入数组C[num]中, num++ 结束 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是使用printf语句输出中奖信息,不需要返回结果,那么返回值的类型应为,,,;函数名称open_lottery (也可以自拟函数名);该函数用于比对已知数组a和已经数组b中,相同元素的数量,那么前提条件是知道数组a和数组b,因此函数的参数应为,,, 函数体: 1. 创建一个元素个数为6的整型数组C,用于存放数组a和数组b中相同的元素,(因为是进行比对的数 组a和b都是6个元素的,因此数组C最多可能存放6个元素,即数组a与数组b所有元素都相同的 情况)。 int c[6]={0,0,0,0,0,0}; //此处需要对数组进行初始化 2.定义一个整型变量num,用于存储两个数组中相同元素的个数。 3.使用第一个for(int i=0;i #include #include 4. 在所有函数的外部,定义一个全局常量 const int array_length=4; //表示数组的长度 模块1:显示模块(函数)(本模块20分) 模块功能:显示指定(已知)数组中的信息。 定义一个函数display,该函数的功能是将指定(已知)的数组中所有元素,逐个输出。 相关的知识点:函数的定义(见或上课笔记)、数组的使用、for循环的使用 分析: 函数头:该函数只是需要显示数组的元素,不需要任何结果,因此不需要返回值,即返回值类型为void,函数名称display,该函数需要显示的是指定(已知)的数组信息,即必须要知道显示的数组。因此函数参数为int a[] 函数体: 1.先使用printf语句,输出,号码为: 2.使用for循环,将已知数组a的各个元素取出,将其输出。 3. 使用printf语句,换行 模块1(函数)的测试: 在完成了函数display的基础上,在main()函数中,定义一个数组int ceshi[] ={9,8,7,6 }; 然后调用display函数,将数组ceshi的元素输出。 测试结果如图: 测试1,当ceshi={9,8,7,6}时,输出 测试完成后,将mian()函数中的测试语句删除。 模块2,校验模块(函数)(本模块20分) 模块功能:验证指定(已知)数组的合法性,数组中的数据是否有重复,是否有超出0-9范围的数据, 如果数组合法,则返回1,否则返回0 相关的知识点:函数的定义 函数的大概流程如图: 已知数组a, int i=0; Result=1; 否 i< 数组长度 是 取出数组中第i个元素 i++ 是 元素值是否合 法 否 Result=0; 返回result值 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是数组是否合法,合法则返回1,不合法则返回0,那么返回值的类型应为,,,;函数名称check(也可以自拟函数名);该函数是验证指定(已知)数组的合法性,即必须要知道验证的数组。因此函数参数为,,, 函数体: 1.先定义一个int类型的临时变量result=1; //默认为结果合法 2.使用双重嵌套 for循环,第一层for循环用于取出已知数组a的某个元素a[i],第二层for循环用于取出数组的另一个元素a[j],比较两个元素,是否相同,如果相同,则证明数组中存在重复的数据,那么resule=0,说明该数组不合法。同时验证数组的数据范围是否在0-9范围内,若不在此范围内,则resule=0 For循环的参考代码如下: 3.在完成所有循环后,将result作为本函数的结果返回。 模块2(函数)的测试: 1.在完成了check函数的基础上,在main()函数中,定义一个数组int ceshi[]={9,0,7,6 }; 2.定义一个判断变量int decide,并调用check函数验证数组ceshi的合法性,并将验证结果赋值给decide。 即decide = check(ceshi); 3.使用if语句,如果decide为1,则使用printf语句,输出“合法” 如果decide为0,则使用printf语句,输出“不合法” 修改数组ceshi的值为{9,8,5,5};和{9,8,5, 10},分别测试其合法性 测试结果如图: 测试1,当ceshi={9,8,7,6 }时 ,输出 测试2,当ceshi={9,8,5,5}或{9,8,7,10} 时,输出 测试完成后,将mian()函数中的测试语句删除。 模块3,选号模块(函数)(本模块20分) 模块功能:将输入的整数存入数组a1,并将a1作为本模块的结果。 相关的知识点:函数的定义 函数的大概流程如图: 开始 创建元素个数为4的数组a, Int a [4]; i=0; i<数组长度 否 i=0; 是 提示输入数据 i++ 数据存入数组中 否 调用check方法验 证数组是否合法 是 return数组a 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是得到一个存放整型数组的首元素地址,那么返回值的类型应为int *p;函数名称select_number (也可以自拟函数名);该函数用于创建一个数组,不需要已知条件,那么函数的参数应为,,, 函数体: 1.创建一个元素个数为4的整型静态数组a。 static int a [4]; 2.使用while循环,如果输入数据不合法,即要求重复输入,如果合法,则return数组a(在循环语句中,return除了可以返回结果以外,还具有break的作用,即可用于跳出循环) 3.使用for循环,提示用户从键盘输入数据,并将输入的数据存放至数组a中。 4.调用模块2,校验模块(函数)check,校验数组a。如果校验结果为0,说明数组a中的元素不合法,那么要求用户重新输入。 5.重复步骤2,3,直至校验结果为1。将数组a作为本函数的结果,返回。 步骤2-5部分代码参考如下: 模块3(函数)的测试: 在完成了select_number函数的基础上,在main()函数中,定义一个数组int ceshi[4]; 调用select_number函数,并将他的结果,赋值给数组ceshi; 调用display函数(模块1的函数),将数组ceshi的信息输出。 测试1:当输入1,2,3,4,时输出。 测试2,当输入0,1,1,5时输出 试3,当输入1,7,6,11,时输出 测 测试完成后,将mian()函数中的测试语句删除。 模块4,随机数产生模块(函数)(本模块20分) 模块功能:产生随机数存入数组b1,并将b1作为本模块的结果。 相关的知识点:函数的定义 函数的大概流程如图: 开始 创建元素个数为4的数组a, Static Int a[4]; i=0; i <数组长度 否 i=0; 是 产生一个随机数 i++ 将随机数存入数组中 否 调用check方法验 证数组是否合法 是 return数组a 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是得到一个存放随机整数数组首元素的地址,那么返回值的类型应为,,,;函数名称random_number (也可以自拟函数名);该函数用于创建一个数组,不需要已知条件,那么函数的参数应为,,, 函数体: 1.创建一个元素个数为4的整型静态数组a. static int a[4]; 2.创建一个随机种子备用。 srand((int)time(NULL)); //随机数种子 3.使用while循环,如果产生的随机数不合法,即重复产生随机数,如果合法,则return数组a(在循环语句中,return除了可以返回结果以外,还具有break的作用,即可用于跳出循环) 4.使用for循环,使用随机函数rand(),产生的介于0-9之间的随机数逐个存放至数组a中。 5.调用模块2,校验模块(函数)check,校验数组a,如果校验结果为0,说明数组a中的元素不合法,那么重新产生随机数。 6.重复步骤2,3,直至校验结果为1。将数组a作为本函数的结果,返回。 步骤2至步骤6的参考代码参考如下: 模块4(函数)的测试: 在完成了random_number函数的基础上,在main()函数中,定义一个数组int ceshi[]; 调用random_number函数,并将他的结果,赋值给数组ceshi; 调用display函数(模块1的函数),将数组ceshi的信息输出。 : 测试界面1 测试界面2: 注意:因为产生的是随机数数组,因此每次的测试结果是不一样的。 测试完成后,将mian()函数中的测试语句删除。 模块5,比对模块(函数)(本模块20分) 模块功能:将选号模块得到的数组b与随机数产生模块得到的数组a进行比对,看有多少个数组元素是相同的,元素相同,再看他们的位置是否相同。 相关的知识点:函数的定义,if-else if多分支选择语句、for循环嵌套、数组基本用法 分析:(,,,号部分的内容,留给大家自己思考) 函数头:该函数的结果是使用printf语句输出中奖信息,不需要明确的结果,那么返回值的类型应为,,,;函数名称open_lottery (也可以自拟函数名);该函数内部产生数组,不需要参数。因此函数的参数应为,,, 函数体: 1. 定义两个整型指针变量a,b, 调用random_number函数,将生成的随机数组的首元素地址存放在a中 2.定义若干个整型变量x,y,num,并都初始化,设置为0 3.使用while循环,当x!=4时,继续循环。当x==4时,结束循环 4.在每次循环开始时,将x,y归零。调用select_number函数,要求玩家从键盘输入四个数字并存入数组首元素地址到b中,使num++。 5.使用双层for循环嵌套。比较a1和b1中的元素,如果元素相同且位置也相同,则x++;如果只是数字相同,位置不同,则y++ 步骤5,For循环参考代码 6.使用printf输出x,y的值。如果x==4,则提前跳出while循环,并提示猜对了,游戏结束。如果x!=4则继续while循环 模块5(函数)的测试: 在open_lottery函数中,步骤1处,先将a1所指向的数组,使用display函数输出,即人为的显示出系统随机生成的四个数字,对着四个数字进行输入,看不同的输入下,输出的情况。 在主函数中调用open_lottery函数。 测试完毕后,删除open_lottery函数内的测试语句。 各模块功能的衔接 8. 在main()函数中,调用open_lottery函数. 系统流程如图: 开始 内部调用 内部调用 Check校验 random_number 生成随机数 open_lottery 内部调用 select_number Check校验 内部调用 输入数字 结束
/
本文档为【[整理]&#40;C语言&#41;智力猜字游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索