C++课程设计
1.3 八皇后问题课题要求
编写代码,用至少三种方法解决八皇后问题。运行程序后,显现下面的参考界面:
八皇后问题 ============ 1.方法一 2.方法二 3.方法三
请选择(1、2或3,0:退出):
图1-2输出界面实例
选择一个菜单后,要求输入棋盘的阶层,即N。输入后,显示共有多少种布局方
案,并显示每一种方案的具体情况,如下图:
77: (0,2) (1,0) (2,6) (3,4) (4,7) (5,1) (6,3) (7,5) 78: (0,7) (1,1) (2,4) (3,2) (4,0) (5,6) (6,3) (7,5)
图1-3输出样式实例
1.4 面对的问题
需要用三种方法解决八皇后问题,在这里需要查阅大量资料并多加练习,才能成功编写程序。主要要解决下面的问题:
2
C++课程设计
冲突:包括列、行、两条对角线;
1. 列:规定每一列放一个皇后,就不会造成列上的冲突;
2. 行:当第i行被某个皇后占据时,该行所有空格就都不能放置其他皇后; 3. 对角线:对角线有两个方向,在同一对角线上的所有点都不能有冲突。
2 需求分析
2.1 涉及到的知识基础
在本次的课程设计中,用到的知识点主要有:类、函数、选择结构里的条件语句、循环结构里的while语句以及for循环语句、控制语句里的break语句、以及字符串函数的运用等等,并且应用到递归、回溯及穷举等比较经典的算法。
2.1.1 类
2.1.1.1 类定义
类就是用户自定义的数据类型。 类定义的一般形式如下: class 类名 {
};
2.1.1.2 类函数定义
细节;(数据成员,成员函数)
类成员函数类的成员函数通常在类外定义,一般形式如下:
返回类型 类名::函数名(形参表) {
函数体; }
3
C++课程设计
双冒号: :是域运算符,主要用于类的成员函数的定义。
2.1.2 函数
2.1.2.1 函数的定义
定义函数需要指明:函数执行结果返回值的类型、函数名、形式参数(简称形参)和函数体。
一般形式为:
数据类型 函数名(行参表) {
语句序列;
Return 合适类型数值 }
2.1.2.2 2.1.2.3 函数调用
调用一个函数之前必须对该函数进行说明。
函数调用由函数名和函数调用运算符( )组成,( )内有0个或多个逗号分隔的参数(称为实参)。每一个参数是一个表达式,且参数的个数与参数的类型要与被调函数定义的参数(称为形参)个数和类型匹配。
当被调函数执行时,首先计算实参表达式,并将结果值传送给行参,然后执行函数体,返回的返回值被传送到调用函数。
如果函数调用后有返回值,调用表达是可以用在表达式中,而无参函数的调用是一个单独的语句。
2.1.3 选择结构
2.1.3.1 用if语句实现选择结构设计
if语句的基本形式可分为两种: (1) if (表达式) 语句
4
C++课程设计
其执行过程是,首先计算表达式的值,若不为0,条件判断为真,则执行( )后面的语句,否则,if语句中止执行,即不执行( )后面的语句。
(2) if(表达式) 语句1 else 语句2
其执行过程是,首先计算表达式的值,若不为0,条件判断为真,则执行( )后面的语句,否则执行语句2。
2.1.3.2 if语句嵌套
if语句中的任何一个子句可以是任意可执行语句,当然也可以是一条if语句,这种情况称为if语句嵌套。当出现if语句的嵌套时,不管书写格式如何,else格式都将与它前面最靠近的未曾配对的if语句相配对,构成一条完整的if语句。它的格式为:
if(表达式1) 语句1;
else if (表达式2) 语句2; ??
else if (表达式n) 语句n; else 语句n+1;
2.1.3.3 while和do-while语句
while语句用来实现“当型”循环结构,即先判断表达式,然后判断循环条件是否成立。其一般形式为:
do {
语句;//循环体
}while(条件表达式);
其中要注意的是while后面的括号理是表达式而不是语句,表达式是没有分号的;而do-while中最后结束时要有分号。
5
C++课程设计
2.1.4 循环结构
2.1.4.1 for语句
这种循环语句不仅用于循环次数已知的情况,还能用于循环次数预先不能确定只给出循环结束条件的情况下。
for 语句的一般形式:
for (表达式1;表达式2;表达式3) {
语句;//循环体 }
其执行的过程有以下几个步骤: 求解表达式1;
求解表达式2,若其值为真,则执行for语句中指定的循环体语句,然后执行下面的第3)步。若为假,则结束循环;
求解表达式3;
转回上面第2)步继续执行;
循环结束,执行for语句后面的其他语句。
2.1.4.2 Break语句
该语句被限定使用在任一种循环语句和switch语句中,但break语句仅仅退出包含该break语句的那层循环,即break语句不能使程序控制退出一层以上的循环。
2.1.5 字符串处理函数
字符比较函数strcmp
格式:strcmp(字符串1,字符串2)
它的功能是,比较字符串1和字符串2。
如果字符串1小于字符串2,该函数返回一个负整数值;如果字符串1等于字符串2,该函数返回0;如果字符串1大于字符串2,该函数返回一个正整数值。
6