资源描述
C语言课程设计报告设计名称 C语言课程设计 专业班级 姓 名 学 号 指导教师 实习时间 成 绩 目 录一、设计目的2二、设计内容3三、详细设计说明4四、软件使用说明6五、设计总结(课程设计心得与体会)8六、附录1:参考文献9七、附录2:部分程序清单(带有较详细的注释)10八、教师评语13一、设计目的 通过课程设计的实践环节的教学,可以加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。每个学生需要独立完成教师安排的设计题目或由学生自拟实际的设计题目,但自拟自拟题目须经指导教师批准方可生效。二、设计内容 1、 开发一款“数独”小游戏(限最多1人完成)规则:将数字1-9放置在每个小格里,使得每一行、没一列、每一个3*3的方框里都没有重复的数字即可。要求: (1)、字符界面完成即可(图形界面更好,有加分) (2)、可以没有表格线 (3)、原有的36个数字及位置随机产生,原有数字越多,游戏越简单。可以由用户输入原有数字的个数,以控制游戏难度; (4)、其它空格处的数字由玩家从键盘输入,当输入的某个数字违背了规则,则游戏以失败结束,显示“Failure!“;当所有空格处数字均已经填上,并且没有违背规则,则游戏以成功结束,显示“Success!”。825638751489171537284978557248715782三、详细设计说明1.数独小游戏说明 数独游戏在99的方格内进行,分为33的小方格,被称为“区”:区数独游戏的目的是根据下列规则,用1至9之间的数字填满空格,一个格子只能填入一个数字。每个数字在每一行只能出现一次。每个数字在每一列只能出现一次。每个数字在每一区只能出现一次1产生原始数字:由系统产生若干数字(181),作为游戏的原始数字供玩家进行数独游戏2退出系统: 用户填完数独,系统判断正误,然后退出系统.2.数独游戏流程图四、软件使用说明1)系统要求:win98以上操作系统; 2) 语言平台:tc+或vc+6.0;运行程序看到如下界面:输入数据 运行结果五、设计总结(课程设计心得与体会)通过第18周这个星期的程序设计,我从中得到了许多的经验以及软件设计的一些新的思路;从数独游戏的设计以及分析中,本人从中理解到了数据结构对于计算机软件设计的重要性,它的使用,可以改变一个软件的运行周期,也可以将软件的思路从繁化简,并且都能够通过数据结构的相关引导,将本身以前编程思想进行扩充,发展;这也是在这次课程设计中我所获益的地方。 随着时间的推移,课程设计也即将结束了,但这个学期数据结构的学习还是具有相当大的意义,它从一个程度上改变了我们的编程思想,如何将一个程序快速而又准备的进行编写,进行编译,都成为了我们思考的重点,也通过这一个学期的学习,我们将数据结构的思想带入到了我们以后的编程学习中去。在这个阶段,我也明白了,好的思想,不能提留于字面上的认知,还需要的是平时多练多写一些相关的程序,并且通过修改,加入新的算法去尝试改变自己的一些编程思想。保持更新算法的速度,这才是关键。 课程设计已经接近尾声了,但它给我的不只是程序设计上的满足,更重要的是对自己编程思想的一次更新,以及对算法的一个全新的认识!六、附录1:参考文献1谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2005 2谭浩强. C程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 20053 刘振安,刘燕君,孙忱. C+语言课程设计.北京:高等教育出版社,20034 陈志泊, 张海燕, 王春玲. Visual C+程序设计. 中国铁道出版社 ,20055 吕凤哲,C+语言程序设计(第二版).北京:电子工业出版社,20056 殷人昆,陶永雷等.数据结构(用面向对象方法与C+ ).北京:清华大学出版社,19997 严蔚敏,吴伟民,数据结构北京:清华大学出版社,19978 李春葆.数据结构考研指导.北京:清华大学出版社,20029 陈慧南数据结构C+语言描述北京:人民邮电出版社,七、附录2:部分程序清单(带有较详细的注释)int result=0; /结果数 int a99; for(int i=0;i9;i+) printf(请输入第%d行的9个数:,i+1); for(int j=0;j9;j+) scanf(%d,&aij); printf(数独的解为:nn); Sudoku(a,0);if(result=0)printf(此数独无解!);return 0;/输出可行的解void print(int a99)bool check(int a99,int i,int j,int k)int m,n;/判断行for(n=0;n9;n+)if(ain = k)return false;/判断列for(m=0;m9;m+)if(amj = k)return false;/判断所在小九宫格int t1=(i/3)*3,t2=(j/3)*3;for(m=t1;mt1+3;m+) for(n=t2;nt2+3;n+) if(amn = k) return false;/可行,返回truereturn true;/数独求解函数void Sudoku(int a99,int n)int temp99; int i,j;for(i=0;i9;i+) for(j=0;j9;j+) tempij=aij; i=n/9; j=n%9; /求出第n个数的行数和列数if(aij != 0) /已经有原始数据 if(n = 80) /是最后一个格子,输出可行解 print(temp);else /不是最后一个格子,求下一个格子 Sudoku(temp,n+1);else /没有数据for(int k=1;k=9;k+) bool flag=check(temp,i,j,k);if(flag) /第i行、第j列可以是ktempij=k; /设为kif(n = 80)print(temp);else Sudoku(temp,n+1);tempij=0; /恢复为0,判断下一个k 八、教师评语 评阅教师: 评阅日期: 2012年 7 月 日
展开阅读全文