C语言程序设计大作业设计说明书
c语言大作业课程设计

c语言大作业课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解函数的定义和调用,灵活运用函数实现模块化编程;3. 学生能掌握数组、指针、结构体等C语言高级特性,并应用于实际编程中;4. 学生了解文件操作的基本方法,能够读写文件,实现数据的持久化存储。
技能目标:1. 学生能够运用C语言编程解决实际问题,具备独立分析和解决问题的能力;2. 学生能够运用所学知识,设计并实现一个小型的C语言项目;3. 学生能够通过编程实践,提高逻辑思维能力和编程技巧;4. 学生能够熟练使用集成开发环境(IDE),调试程序并优化代码。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习计算机科学的热情;2. 学生养成合作、探究的学习习惯,培养团队协作能力;3. 学生通过编程实践,体验解决问题的成就感,增强自信心;4. 学生遵循编程规范,注重代码质量,培养良好的编程习惯。
课程性质:本课程为C语言大作业课程设计,旨在巩固和拓展学生对C语言知识的掌握,提高学生的编程能力和实践能力。
学生特点:学生已经掌握了C语言的基本知识,具备一定的编程基础,但缺乏实际项目经验。
教学要求:注重实践,引导学生通过动手编程解决问题,培养学生独立思考和解决问题的能力。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. 复习C语言基础知识,包括变量、数据类型、运算符、控制结构等,参考教材第1-4章;2. 函数的定义、调用、参数传递及作用域,引用教材第5章;3. 数组、字符串、指针的概念及应用,深入讲解教材第6-7章;4. 结构体、联合体、枚举类型的使用,分析教材第8章;5. 文件操作,包括文件的打开、读写、关闭,依据教材第9章;6. 面向过程的编程思想,以实际项目为例,引导学生运用所学知识设计程序;7. 编程规范和调试技巧,培养学生的良好编程习惯;8. 小型项目实践,分组进行项目设计和开发,涵盖整个C语言知识体系。
c语言大作业课程设计

c语言大作业课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,能够运用C语言进行程序设计,提高学生的编程能力和逻辑思维能力。
具体分解为以下三个目标:1.知识目标:学生能够理解并掌握C语言的基本语法、数据结构和常用算法,了解C语言的编程环境和开发工具。
2.技能目标:学生能够熟练使用C语言进行程序设计,具备一定的编程能力和问题解决能力。
3.情感态度价值观目标:学生通过完成C语言程序设计,增强对计算机科学的兴趣和热情,培养良好的编程习惯和团队协作精神。
二、教学内容教学内容主要包括C语言的基本语法、数据结构和算法。
具体安排如下:1.C语言的基本语法:包括变量、数据类型、运算符、控制结构、函数等,共4课时。
2.数据结构:包括数组、链表、栈、队列、树等,共6课时。
3.算法:包括排序算法、查找算法、递归算法等,共4课时。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体安排如下:1.讲授法:用于讲解C语言的基本语法、数据结构和算法,共12课时。
2.讨论法:用于引导学生探讨编程问题,提高学生的思考和解决问题的能力,共4课时。
3.案例分析法:通过分析实际案例,使学生更好地理解和掌握C语言编程,共4课时。
4.实验法:让学生动手编写C语言程序,培养学生的编程能力和实践能力,共8课时。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》,用于引导学生学习C语言的基本语法、数据结构和算法。
2.参考书:《C Primer Plus》、《C和指针》,为学生提供更多的学习资料和参考。
3.多媒体资料:包括教学PPT、视频教程等,用于辅助教学,提高学生的学习效果。
4.实验设备:计算机、编程软件(如Visual Studio、Code::Blocks等),用于实验教学,培养学生的编程能力和实践能力。
C语言设计说明书

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊目录一、设计题目 (1)二、设计目的 (1)三、设计分析 (1)四、总体设计 (1)五、详细设计 (2)六、设计总结 (9)┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一、设计题目简单的图书销售系统的设计二、设计目的1.运用已学过的知识进行一个简单的应用程序的开发。
2.基本掌握设计课题的基本步骤和方法。
3.掌握应用系统开发中的需求分析与数据库设计方法。
4.基本掌握应用系统开发中设计文档的编制。
三、设计分析对图书信息(包括书名、书号、作者、出版社、价格、从书名)进行管理,包括图书的信息添加、修改、查询、删除、显示、写入、退出.将各每本图书信息进行记录,信息内容包含:(1)图书书名(2)图书号(3)图书作者(4)图书出版社(5)图书价格。
现在收集一些图书信息,要求用C语言编写一个简单的图书销售管理系统,可进行录入、查询和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
对图书信息的添加、修改、查询、删除、显示、写入、退出是图书销售管理的重要组成部分,图书信息包括:其内容较多,为了简化讨论,要求设计的图书管理系统能够完成以下功能:1.每一条记录包括一个图书信息的书名、书号、作者、出版社和价格、从书名2.图书信息添加功能:图示添加信息用文件保存,可以一次完成若干条记录的添加。
3.图书信息显示浏览功能。
4.查询功能:完成按书号、书名、价格查找课图书记录,并显示。
5.图书信息的删除:按书号、书名进行删除某图书的信息。
6.应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
四、总体设计该设计的主要功能包括:添加信息功能、查询信息功能、修改信息功能、删除信息功能、显示部分或全部信息、退出等功能。
设计图如图1所示。
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊五、详细设计1.各函数的功能和实现(1)添加图书模块:通过定义一个函数添加。
C语言程序设计说明书

荆楚理工学院课程设计说明书题目:NBA球队战绩统计系统院系:计算机工程学院专业班级:计算机应用技术一班学号:学生姓名:谢芳,秦曼,张海霞,张雅勤,宁菊梅高锐指导教师:胡玉荣2010年 6月24日1. 球队战绩管理系统的分析与设计为了完成球队战绩的管理,首先明确系统的定义。
球队战绩统计系统就是统计球队的战绩,通过数据分析球队本年来实力的提升与否,方便大家浏览,进而为来年球队的调整做好准备。
(1)用户需求分析。
用户需求分析阶段完成对用户需求的理解、抽象,详细描述用户的要求,为规划系统功、定义软件系统模块做前期准备,并完成可行性分析。
根据战绩统计的需求,将该系统需要完成的工作归纳如下:1)球队战绩表的组织。
根据NBA里的规定30个球队分为两部分,15支球队分为东部球队(east),另外的15支球队作为西部球队(west)。
并且战绩的统计,球队的排名都在自己所属的部(东部或西部)内进行,东西部之间的球队不进行比较。
每个球队的战绩里应该包括球队名字,比赛胜利的场数,比赛失败的场数和这个赛季球队的胜率。
2)球队战绩的录入。
完成球队战绩的录入,按照上述定义的字段逐一输入球队的战绩并以适当的格式存储。
3)球队战绩的修改。
对录入的错误,可以修改数据的记录。
4)球队战绩的添加。
添加新的记录到统计表中。
5)显示/打印战绩表。
按一定的格式美观地将战绩表显示在屏幕上或者输出到打印机上。
(2)概要设计。
根据以上分析,可以归纳NBA战绩统计系统的各功能模块,如下图所示。
各个功能模块定义如下:1)主控模块。
系统入口应设计友好用户交互界面,这里采用菜单模式,即以菜单形式在屏幕上显示各个功能,通过选择转向执行对应功能模块的子程序。
2)战绩录入模块。
从键盘先输入东部球队记录,在输入西部球队记录,并分别按一定格式创建并保存到两个不同名称的数据文件中。
3)战绩浏览模块。
先选择要浏览的是东部球队的战绩还是西部球队的战绩,之后球队按一定格式由屏幕显示球队战绩数据文件的所有记录。
C语言程序设计大作业设计说明书-简单计算器

高级语言程序设计大作业设计说明书简单计算器学院电子信息工程学院专业班级级通信工程班学生姓名xxxx学号*********指导老师xxxxxx1.概述:本程序是在C++6.0环境下开发的一款集整数与小数的四则运算和求余运算为一体的简单计算器。
主要运用了赋值、计算、选择结构(switch语句实现多分支选择结构)、条件运算、循环计算、函数调用等原理。
2.程序概要设计:前实现的功能:程序已经可以完成整数、小数的基本加减乘除;整数基本求余运算;二进制,八进制,十进制,十六进制的相互转换,并可以对输入者的输入错误提出错误警告;程序可以循环运行,也可以自我实现退出菜单的功能(需要按2次回车)。
目前发现的BUG有:1、在整数输入数字的时候,如果输入的是小数的话会一直循环菜单,不会出现结果,也不会提示输入者输入错误,也不会有结果。
2、在整数求余功能中,如果输入的是小数或者输入不合理也会出现一直循环菜单的情况,同样不会提示输入者输入错误,也不会有结果。
目前没有实现的功能有:1.给出一个二进制数,不可以计算它的原码、补码和反码。
2.整数,小数的基本运算和整数求余的运算出现错误无法提示,函数不是十分完整。
3.全部进制的函数输入的数字个数都是有限制(数字个数不能大于100),超范围就会输出错误结果,无法实现无限制的输入而得出正确结果。
4.每次算完第一次不能按回车,只能按其他按键,否则会退出,因为按两次回车就会退出程序。
5.每次算完,按非回车键都会出现一级菜单,有点繁琐,再次选择整数、小数、进制运算。
流程图:3.程序详细设计:在主函数中设置了全局变量,以实现功能选择,并用char函数实现循环输入。
运用do while语句控制结束程序,即在运算过后,如由键盘输入回车键则结束程序。
之后进入功能选择菜单,先调用写好的menu函数(回车2次可退出程序)。
输入提示及输入控制:若输入的数字不是1-3,则提示输入错误,重新输入:(运用选择结构进行判断)其中,整数、小数、及进制转换计算功能分别使用了另一个switch语句嵌套,实现选择功能。
C语言综合程序设计说明书

C语言综合程序设计说明书一、设计目的用C语言设计一个具有输入成绩、打印成绩表功能的综合程序,以巩固和加深对C语言的学习。
二、设计要求1、输入1时完成输入姓名及各科成绩;2、输入2时完成打印输出总表;3、输入3时完成打印学号,成绩表,总分和名次;4、输入4时,完成退出功能。
注:每执行完一个功能,屏幕必须清屏。
三、设计思路将设计要求中的1、2、3分别定义为具有相应功能的子函数,再在主函数中进行调用。
1、根据设计要求,设计需要用到结构体数组。
因此,首先需要定义一个结构体数组,并将其中的学号赋值为从10101~10105。
2、定义一个具有输入成绩功能的子函数,用循环语句和scanf 语句相结合,完成每个学生的信息输入。
3、另外定义一个子函数对结构体中的总分进行比较,排出学生名次。
4、定义一个输出总表函数,用printf语句和循环语句结合使用,使该函数可以输出结构体中的各项数据。
根据设计要求,可将定义的输出总表的函数中的输出姓名项删除,即可得到打印学号、成绩表、总分和名次的函数。
四、程序设计环境Windows操作系统 Win-tc五、程序功能模块图六、程序功能流程图输入子函数--完成信息的录入 输出子函数—完成打印表排名子函数--完成名次的排列 退出子函数--完成退出功能七、程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>struct student{ int num;char name[20];float score[5];float sum;int mingci;}st[6]={{0},{10101},{10102},{10103},{10104},{10105}};int shuru(){ int i;system("cls");printf("成绩录入\n\n\n\n");printf("\t\t本程序只能输入5个学生的信息\n\t\t为使系统正常工作请按提示操作\n\n\t\t注意:每输入成一项信息后按Enter键确认!\n\n\n\n");printf("\n\n");sqrt(0); /*打开win tc浮点数支持*/for(i=1;i<=5;i++) /*这个循环是输入数据*/{printf("请输入学号为%d学生的姓名:",st[i].num);scanf("%s",st[i].name);printf("请输入该生的数学成绩:");scanf("%f",&st[i].score[1]);printf("请输入该生的英语成绩:");scanf("%f",&st[i].score[2]);printf("请输入该生的计算机成绩:");scanf("%f",&st[i].score[3]);printf("请输入该生的哲学成绩:");scanf("%f",&st[i].score[4]);st[i].sum=st[i].score[1]+st[i].score[2]+st[i].score[3]+st[i].score[4]; }printf("\n您已经完成了5位学生信息的录入\n\n\t\t请按任意键返回主菜单\t"); getch();}int mingci(){ int i,j;for(i=1;i<=5;i++){ st[i].mingci=1;for(j=1;j<=5;j++)if(st[i].sum<st[j].sum) st[i].mingci++;}}int shuchu(){ int i;printf("打印输出总表");printf("\n\n\n");printf("\t\b\b\b_______________________________________________________________ _________\n");printf("\t学号\t姓名\t\t数学\t英语\t计算机\t哲学\t总分\t名次\n");printf("\t\b\b\b_______________________________________________________________ _________\n");for(i=1;i<6;i++) /*这个循环是输出数据*/{printf("\t%d\t%8s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t %d\n",st[i].num,st[i].name, st[i].score[1],st[i].score[2],st[i].score[3],st[i].score[4],st[i].sum,st[i].min gci);printf("\t\b\b\b_______________________________________________________________ _________\n");}printf("\n\n\n\n");printf("您还想完成哪项操作,请选择功能键 1,2,3,4后按 Enter\n");printf("\n");printf("\t1.录入成绩 2.打印输出总表 3.打印学号、成绩表、总分和名次 4.退出\n"); }int shuchu1(){ int i;printf("打印学号、成绩表、总分和名次");printf("\n\n\n");printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");printf("\t\t学号\t数学\t英语\t计算机\t哲学\t总分\t名次\n");printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");for(i=1;i<6;i++) /*这个循环是输出数据*/{printf("\t\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t %d\n",st[i].num,st[i].score[1] ,st[i].score[2],st[i].score[3],st[i].score[4],st[i].sum,st[i].mingci);printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");}printf("\n\n\n\n");printf("您还想完成哪项操作,请选择功能键 1,2,3,4后按 Enter\n");printf("\n");printf("\t1.录入成绩 2.打印输出总表 3.打印学号、成绩表、总分和名次 4.退出\n"); }int tuichu(){ char m;while(1){system("cls");printf("\n\n\n\n\n");printf("\t\t\t您确认要退出吗?(y/n)\n");printf("\n\n");printf("\t\t\ty 确认退出\n");printf("\t\t\tn 返回主菜单\n\n\n\n");printf("\t\t请选择功能键 y 或 n 后按 Enter\t");scanf("%c",&m);if(m=='y') exit(0);else if(m=='n') main();}}main(){ int i,j;char n;system( "graftabl 936 ");system("cls");printf(" 08-09学年第2学期c语言综合程序设计*****应用电子技术08-1班:肖红福丁传飞*****\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~\n");printf("\n\n\n\n");printf("\t\t\t1.录入成绩\n\t\t\t2.打印输出总表\n\t\t\t3.打印学号、成绩表、总分和名次\n\t\t\t4.退出\n\n\n\n\n");printf("\t\t请选择功能键 1,2,3,4后按 Enter\t");while(1){scanf("%c",&n);switch(n){case '1':system("cls");shuru();mingci();main();break;case '2':system("cls");shuchu();break;case '3':system("cls");shuchu1();break;case '4':tuichu();default : printf("对不起!您输入的数字不是功能键,请从新选择\n");}}}八、程序运行结果注:本程序因调用函数system( "graftabl 936 "),因此直接用Win-tc的英文环境即可运行。
C语言作业要求及设计说明书(初学者)

程序设计说明书姓名:***班级:轮机136学号:************2023-12-27AHA-C语言程序设计大作业要求一、作业目的1、驾驭用C语言进行程序设计的基本方法。
2、娴熟驾驭window限制台应用程序的编写。
3、初步完成一个应用程序的设计、编码、调试,了解程序设计过程,熬炼实际应用实力。
二、作业内容猜数字嬉戏:计算机随机生成没有重复的n个数,用户从键盘输入揣测的数。
每猜一次,电脑给出提示信息。
假如用户输入的数跟计算机生成的数,数值和位置都完全相等,则胜出。
基本功能要求:1.随机生成没有重复的4个数。
(每个数字在0-9范围内)。
2.用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:“有x个数数值和位置都相同!有y个数数值相同,但位置不同。
”3.限制用户的尝试次数为10次。
4.计算、输出并保存用户的得分,计分规则:总分是100分,每失败一次扣10分。
5.有操作菜单,能依据不同选择运行不同功能:1:起先嬉戏!2:查看上次成果!3:输出帮助信息!0:退出程序!扩展功能要求:1.对用户输入的数字进行检查,假如用户输入重复的数,给出提示,要求重新输入。
2.能对嬉戏进行设置:在操作菜单中增加相应的选项:“4:系统设置”。
(1)修改要猜的数字的个数n,依据修改后的n值,计算机可随机生成n个数,用户进行n个数的揣测嬉戏。
(2)修改可以尝试的次数。
3.若嬉戏胜出且成果在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。
操作菜单中相应选项改为“2:积分榜!”,用于把积分榜中保存的前五名成果及用户姓名显示出来。
4.能对积分榜的成果进行排序和输出。
提示:(1)生成一个0~9的随机数,运用rand函数:#include<stdio.h>#include<stdlib.h> //运用rand函数必需运用此头文件#include<time.h>int main(){int a;srand(time(0)); //生成一个种子。
C语言程序设计大作业--图书管理系统

C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计大作业设计说明书概述:处在Microsoft Visual C++软件下的Developer Studio集成开发平台中进行开发。
已实现了基本功能中的:1、随机生成没有重复的4个数。
(每个数字在0-9范围内)。
2、用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:“有x个数数值和位置都相同!有y个数数值相同,但位置不同。
”3、控制用户的尝试次数为10次。
4、计算、输出并保存用户的得分,计分规则:总分是100分,每失败一次扣10分。
5、有操作菜单,能根据不同选择运行不同功能:1:开始游戏!2:查看上次成绩!3:输出帮助信息!4:游戏设置!0:退出程序!还实现了扩展功能里的:1.对用户输入的数字进行检查,如果用户输入重复的数,给出提示,要求重新输入。
2.能对游戏进行设置:在操作菜单中增加相应的选项:“4:系统设置”。
(1)修改要猜的数字的个数n,根据修改后的n值,计算机可随机生成n个数,用户进行n个数的猜测游戏。
(2)修改可以尝试的次数。
未实现的功能是扩展功能里的:1、若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。
操作菜单中相应选项改为“2:积分榜!”,用于把积分榜中保存的前五名成绩及用户姓名显示出来。
2、能对积分榜的成绩进行排序和输出。
经多次运行尝试,虽然编辑、编译、连接都没有错误,可以运行,但是在运行的时候有时会卡住,要等一会才会显示出来。
程序概要设计:程序流程是:开始运行到主界面,在主界面中可选择:1:开始游戏!2:查看上次成绩!3:输出帮助信息!0:退出程序!,然后选择开始游戏后,程序会生成4个不重复且在0-9之间的随机数,然后玩家需输入4个不同的数0-9之间的数,接着程序会判断玩家输入的4个数与程序生成的随机数的数值和位置是否相同,并提示4个数的数值跟位置相同和不同有几个,就这样一直循环到4个数的数值和位置都正确,或玩家尝试次数已超过10次。
程序会在循环结束时显示出玩家的得分,并提示输入0返回主菜单;选择查看上次成绩后,程序会显示您的上次得分并提示输入0返回主菜单;选择帮助信息后,程序会显示一段游戏规则并提示输入0返回主菜单;选择游戏设置,程序会先清屏,再显示出新的界面,让玩家设置猜数个数和可尝试次数,并提示输入0返回主菜单;选择退出游戏后,程序会直接关闭。
程序流程图如下:所包含的函数如下:1、exit(1);功能是终止程序,关闭文件。
2、system("cls");功能是执行一个MS DOS命令,在这里就是起清屏作用。
3、printf("%d",a[m]);功能是输出数组a里面的值。
4、scanf("%d",&z);功能是扫描输入的z值。
5、rand()%10;功能是生成一个随机数。
6、srand(time(0));功能是生成一个种子,初始化随机数产生器。
7、int main();功能是软件执行的入口,在函数所在的程序头部包含可部分系统必须的头文件和完成其他功能的源文件。
在该函数中还提供了系统功能选择的平台,提示用户系统可用的功能有哪些和这些功能的选项代码。
并给用户提供输入功能选项代码的接口,当用户输入选项代码后,即显示给用户相应的功能处理界面或结果。
8、void begin();功能是显示主界面。
9、void help();功能是显示帮助信息的内容。
10、void set();功能是显示游戏设置的界面。
程序详细设计:关键代码分析如下:1、srand(time(0)); //生成一个种子。
整个程序只写一次即可。
for(i=0;i<=f-1;i++) //循环的次数(f)和赋予数组a[]的值(i)。
{a:a[i]=rand()%10; //生成i个随机数。
for(j=0;j<i;j++) // {保证在生成随机数不重复,重复情况下将用goto转到a:{if(a[j]==a[i]) 出口,再生成随机数,直至随机数不重复。
goto a;}} // }//for(m=0;m<=f-1;m++)//printf("%d",a[m]); //输出a[]数组中的随机数。
本段代码的功能主要是产生不重复的并在0-9之间的随机数,而变量f可以控制所产生随机数的数量。
在设计过程中,刚开始是为了实现基本功能时,用4代替f,用printf("%d%d%d%d".a[0],a[1],a[2],a[3]);代替printf("%d",a[m]);设计过程十分顺利,而在进行扩展功能中的游戏设置设计中,遇到了一点小麻烦。
为了检验随机数产生是否符合要求,设计了printf("%d",a[i]);运行后发现产生的随机数不是随机的。
经过翻查课本后,才发现再弄个变量m 给数组a[]输出,可以解决这个问题。
基本上能实现随机数的产生和设置随机数的数目。
2、laber:if(x>g-1) //laber:为goto的出口;{printf("本次游戏结束,没有猜对,本次得分为:0分!\n"); //用if语句判断尝试次数并给予提示printf("正确答案是:"); //分数和正确答案for(m=0;m<=f-1;m++)printf("%d",a[m]); //正确答案输出。
printf("\n输入0返回上级菜单:");scanf("%d",&z);if(z==0){system("cls"); //清屏main();}} //输出函数main()else{x++;}h=100-((x-1)*10); //分数设定printf("输入您猜测的4位不同的数<0~9之间>(用空格隔开):");for(n=0;n<=f-1;n++)scanf("%d",&b[n]);for(k=0;k<=f-1;k++) //设置输入数字的数量{for(j=0;j<k;j++){if(b[j]==b[k]) //判断输入数字的重不重复{printf("输入错误,有相同的数,请重新输入!\n\n");goto laber;} //返回上面的laber:if(b[k]<0||b[k]>9) //判断输入数字是不是在0-9之间{printf("输入错误,数字不在0~9之间,请重新输入!\n\n");goto laber;}}} //返回上面的laber:for(i=0,w=0;i<=f-1;i++) //{利用for语句循环确定产生的随机数if(a[i]==b[i]) w++; //跟玩家输入数字的数值和位置的关系for(o=0,r=0;o<=f-1;o++) //并每次给予提示。
}for(p=0;p<=f-1;p++)if(a[o]==b[p]) r++;if(w==f) //制定循环和设置循环出口{printf("恭喜!猜对了!!\n"); //提示玩家已猜对并结束循环printf("本次得分是:%d\n\n",h);printf("输入0返回上级菜单:");scanf("%d",&z);if(z==0){system("cls");main();}}else{printf("有%d个数的数值和位置相同!有%d个数数值相同但是位置不同!\n\n",w,r-w);}goto laber; //返回上面的laber:本段代码的功能主要是:实现玩家尝试猜数字次数控制在10次,若10次以内猜对数字,则根据尝试次数的多少确定分数和保存分数,并跳出循环,若10次后也没猜对数字,也跳出循环;变量g可以控制玩家尝试猜数字的次数;确保玩家输入数字是不重复并且在0-9之间的;程序能对玩家输入的数与随机生成的数的数值和位置进行匹配,并给出提示信息:“有w个数数值和位置都相同!有r-w个数数值相同,但位置不同。
”在设计这段代码的时候,用设计确保随机数不重复和在0-9之间的代码直接放到玩家输入数字上,很快就实现了此功能。
在设计程序对玩家输入的数与随机生成的数的数值和位置进行匹配时,刚开始用if语句来判断w、r的数值,写出来的代码不仅仅长,而且十分乱,经常少加中括号或多加中括号,导致代码无法编译。
花费了大量的时间纠正了后,但是w、r的值不对应,又花费了大量的时间寻找错误,在久久不可纠正的情况下,我虚心向周围的同学请教,他们说用for语句可以很好的实现这功能,我才将if语句改为for语句。
用了for语句,短短时间内就解决这个功能。
在设计玩家得分时,刚开始直接用变量h来定义,然而因为变量的位置放在循环外面,导致玩家得分一成不变。
修改过后,在查看上一次成绩的时候变量h无法转到case 2:去,导致查看上一次成绩时显示的分数固定不变。
在询问了几个同学后,用指针*h来定义得分,然而还是不行。
最后在帮其他同学寻找程序错误时,发现他的变量直接放在最上面,不受主函数循环影响。
因此才实现了查看上一次成绩的功能。
使用情况:1、随机生成没有重复的4个数。
(每个数字在0-9范围内)。
2、用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:“有x个数数值和位置都相同!有y个数数值相同,但位置不同。
”3、控制用户的尝试次数为10次。
4、计算、输出并保存用户的得分,计分规则:总分是100分,每失败一次扣10分。
5、有操作菜单,能根据不同选择运行不同功能:1:开始游戏!2:查看上次成绩!3:输出帮助信息!0:退出程序!6、对用户输入的数字进行检查,如果用户输入重复的数,给出提示,要求重新输入。
7、能对游戏进行设置:在操作菜单中增加相应的选项:“4:系统设置”。
(1)修改要猜的数字的个数n,根据修改后的n值,计算机可随机生成n个数,用户进行n个数的猜测游戏。
(2)修改可以尝试的次数。
总结:程序经过多次调试,现在可以良好的运行。
曾经在调试过程中出现不能退出循环的情况,或者出现两次循环之后两次猜数字得到的结果无故相加,造成结果错误,再或者完成修改之后发现不能运行,但经过多次修改后,如今猜数字游戏程序可以顺利运行。
这个程序的优点就是代码清晰,无运行错误;缺点是无法实现扩展功能里的:1、若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。