数据结构课程设计报告

发布 2022-10-05 19:25:28 阅读 3682

2012/5/12

课题名称:八皇后问题。

1. 问题描述:在8x8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇。

后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

2. 问题分析:国际象棋中皇后可以吃掉它所在位置上下左右以及所在斜线上的棋子。

所以在研究八皇后问题时可以设定相应的数组,使用穷举判断的方法就可以得出八皇后问题的所有解。

3. 使用语言:c

4. 开发环境:visual studio 2010 professional

结构截图。核心**截图。

*八皇后问题-数据结构课程设计*/

*by 卢硕 2012 年5月 */

#include <>

#include <>

#define qipan 8

int q=1;

int queen[qipan], sum=0; /qipan为棋盘最大坐标 */

void show() 输出坐标 */

int i;

int n=0;

int m=1;

printf("");

sum++;

*通过检查,来判断是否能够防止皇后*/

int check(int n) /检查当前列能否放置皇后 */

int i;

for(i = 0; i < n; i++)检查横排和对角线上是否可以放置皇后 */

return 0;

void put(int n) /回溯尝试皇后位置,n为横坐标 */

int i;

int w=0;

int m=1;

for(i = 0; i < qipan; i++)

queen[n] =i; /将皇后摆到当前循环到的位置 */

if(!check(n))

if(n ==qipan - 1)

if(w%8==0)printf("第%d组值:",q);

show();如果全部摆好,则输出所有皇后的坐标 */

elseput(n + 1); 否则继续摆放下一个皇后 */

int main()

printfn");

printf八皇后问题求解n");

put(0); 从横坐标为0开始依次尝试 */

printf总共有%d组解sum);

system("pause");

return 0;

程序设计中,对数组操作要求较高。容易在put和check函数**现数组下标使用错误的现象。进而导致程序运行失败。

经过检查后可以解决。

八皇后问题,是非常经典的计算机问题。本次课程设计中,采用了基本的先建立坐标,再进行穷举验证的方法来求解。

程序中使用check函数和put函数结合来实现求出八皇后的所有解并输出。先用put函数放置皇后,再使用check函数进行其他位置的判断。这样采用回溯的方法则得出八皇后解并进行输出。

课题名称:大数相乘。

问题描述:实现较大数字乘法的运算。

实验环境:visual studio 2010 professional

问题分析:一般的计算器都不能提供较大数字的计算,故需要自己编程实现。而大数相乘主要面临的问题就是溢出。

于是可以通过使用数组或者字符串这种可以存储大量数字的数据结构来作为媒介实现大数相乘。

核心**截图:

*大数相乘:使用字符串实现*/

* 2012 年5 月 */

#include <>

#include <>

#include <>

#define n 100

*把字符串形式的数字按位存放到数组*/

void shuru(int *a, char *s)

int i;

char digit;

int len=strlen(s);

for(i=0;i *(a+i)=0;

for(i=0;i

*把a*b的结果存储到数组c中,按位表示*/

void jieguo(int *a,int *b,int *c)

int i,j;

//先把结果数组设置为0

for(i=0;ic+i)=0;

for(i=0;ifor(j=0;jc+i+j)+=a+i) *b+j);

// 处理进位。

for(i=0;i

main()

char s1[n],s2[n];

int i,j,a[n],b[n],c[n*2];

printf("两位数的大数相乘n");

printf("输入第一个数");

scanf("%s",s1);

printf("输入第二个数");

scanf("%s",s2);

//把输入的字符串,按位存放到数组

shuru(a,s1);

shuru(b,s2);

jieguo(a,b,c);

//找到最高位。

j=n*2-1;

while(c[j]==0)

j--;//打印计算结果。

printf(" 结果:%s*%s=",s1,s2);

for(i=j;i>=0;i--)

printf("%d",c[i]);

system("pause");

在最开始进行程序设计时,采用数组来保存乘数和被乘数。但是,面临的问题会很多,首先就是数字输入以及数组的转置,将大大提高**量,而且不利于程序的运行。后经过分析采用字符串来保存并运算。

通过直接调用库函数大大减轻了劳动量。

本次数据结构课程设计的过程中,选定的第二个选题是大数相乘。在程序设计中遇到不少问题。一般都是通过检查来发现问题并对问题进行分析。

在程序设计开始,对问题进行系统的了解是非常必要的。不然会造成在程序设计后期出现许多不可预料的问题。确定相应的解决思路。

并确定正确的数据结构。就像本次课程设计中,大数相乘,开始使用准备使用数组来当中间体。最后,出现好多问题。

并且会导致程序越来越复杂。这点是很不好的,在感觉路线错误后,进行思考。进而转向使用字符串。

从而实现了程序的功能,并且使程序更见健壮。同时,对字符串库函数的使用,大大减小了工程量。

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...