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