分类 默认分类 下的文章

全国2020年10月高等教育自学考试C++程序设计试题《程序设计题》答案,答案是本人自己做的解答,不保证答案的正确性和完整性,内容仅供学习交流参考。
原题目如下:

五、程序设计题:本大题共2小题,第1小题5分,第2小题10分,共15分。
46.编写一个函数模板,实现将n个数据进行由小到大排序的功能。
47.有一个School类,保护数据成员Number和Name分别表示人的编号和姓名。学生类Student是School的派生类,新增数据成员班号Class_Num和总成绩Total.请用C++代码描述这两个类,并用Student
类的成员函数Display实现学生张小蒙的编号(2020150601)、姓名、班级(四班)和总成绩678的输出(要求编写派生类的构造函数)。

46题考查了模板函数的使用,以及基本的数据排序。
此函数实现可以参考教材第九章结9-3的示例程序。下载该文件sort.cpp.txt (UTF-8编码)。

// 交换数据函数
template<class T>
void mySwap(T &t1, T &t2) {
    T temp = t1;
    t1 = t2;
    t2 = temp;
}
// 比较函数
template<class T>
int myCompare(T t1, T t2) {
    if (t1 > t2) { return 1; }
    if (t1 < t2) { return -1; }
    if (t1 == t2) { return 0; }
}
// 排序函数
template<class T>
void mySort(T arr[], int length) {
    int  j;
    for(int i=0; i<length; i++) {
        j = i;
        while( j > 0 && myCompare<T>(arr[j], arr[j-1]) < 0) {
            mySwap(arr[j], arr[j-1]);
            j--;
        }
    }
}

验证以上程序:

int main() {
    int arr[10] = {1, 2, 3, 5, 4, 6, 9, 8, 7, 10};

    mySort(arr, 10);

    for (int i = 0; i < 10; ++i) {
        cout << arr[i] << ",";
    }
    cout << endl;

    char arr1[10] = {'a', 'c', 'b', 'd', 'f', 'e', 'h', 'i', 'j', 'g'};

    mySort(arr1, 10);

    for (int i = 0; i < 10; ++i) {
        cout << arr1[i] << ",";
    }
    cout << endl;

    return 0;
}

输出内容为:

1,2,3,4,5,6,7,8,9,10,
a,b,c,d,e,f,g,h,i,j,

47题简单考察了类的编写,类的继承和构造函数的编写,完整实现代码如下:
下载 stu.cpp.txt(GBK编码)。

#include <iostream>
using namespace std;

class School {

protected:
    string Number;
    string Name;

public:
    School() {}

    School(string number, string name): Number(number), Name(name) {}

};


class Student: public School {

    string Class_Num;
    int Total;

public:

    Student() {}

    Student(string number, string name, string class_num, int total) : School(number, name), Class_Num(class_num), Total(total){}

    void display() {
        cout << "学号:"<< Number << ",姓名:" << Name << ",班级:" << Class_Num << ",总成绩:" << Total << endl;
    }
};

int main() {

    Student student("2020150601", "张小蒙", "四班", 678);
    student.display();
    return 0;
}

编译后输出的内容为:

学号:2020150601,姓名:张小蒙,班级:四班,总成绩:678

代码中的SchoolStudent类中的默认构造函数部分均可省略不写。如果编译运行出现乱码或报错,可能需要修改文件的编码为GBK。

可以使用以下的方式在nginx配置文件中实现类似 if A and B的条件判断:

set $test A;
if ($arg_a = "A") {
    set $test "${test}A";
}
if ($arg_b = "B") {
    set $test "${test}B";
}
if ($test = AB) {
    return 301 /if-and/;
}

可以使用以下的方式在nginx配置文件中实现类似 if A or B的条件判断:

set $test 0;
if ($arg_a = "1") {
    set $test 1;
}
if ($arg_b = "1") {
    set $test 1;
}
if ($test = 1) {
    return 301 /if-or/;
}

在location块内使用if语句的行为可能与预期不符,更多相关内容请参阅:
nginx.com: If is Evil... when used in location context
agentZH: How nginx "location if" works

参考内容:
Stackoverflow: How can I use an "or" operator in an nginx "if" statement?
nginx.org: Module ngx_http_rewrite_module

招商银行境外汇款汇入英文资料

最近需要外币汇入招商,电话咨询招行客服相关资料的英文版本后,收到包含以下资料的答复短信。完整内容如下:
【招商银行】
需给汇款行的资料(注意:因各外币币种汇入需使用的代理行不同.代理行信息可登录我行网站www.cmbchina.com,在主页中点击“境外汇款”链接查询):
(1)Beneficiary’s Bank 收款行名称: China Merchants Bank, H.O. Shenzhen, China.
(2)SWIFT Code: CMBCCNBS。
(3)Beneficiary’s name 收款人姓名
(4)Beneficiary’s A/C No.收款人账号
(5)Beneficiary's Bank Address 收款行地址: China Merchants Bank Tower NO.7088, Shennan Boulevard, Shenzhen, China.

简单的复制**文库的Word文档内容的方法分享

  1. 在浏览器中打开需要复制文本的文档,按F12或者
  2. Edge/Firefox/Chrome:右键选择检查(元素)
  3. Chrome: Ctrl+Shift+I
  4. 选择控制台console
  5. 将以下的代码复制到控制台 >后面,
  6. 复制完后点击回车,双击显示的文本内容即可完成复制。

此方法只能复制文本内容,无法保留文档格式。

const page = parseInt(document.querySelector('.goto-page > span:nth-child(3)').textContent);
let d = ''; 
for(let i = 1; i<=page; i++) {
    d = d + document.querySelector('#pageNo-' + i).textContent;
}
console.log(d);

好奇如何实现的复制?以下是代码简单解析:

document.querySelector('.goto-page > span:nth-child(3)').textContent 取得文档总页数(字符串);
使用parseInt取得文档页数(整形);
document.querySelector('#pageNo-' + i).textContent取得第i页中的文本,在循环中将文本连接起来;
最后使用console.log打印连接起来的文本。

不懂程序代码,但是想要进一步了解相关实现和原理?可以参阅以下的免费内容继续学习:

Web教程-Web入门
querySelector
Selector
parseInt
for 语句
console.log

自考02331数据结构大纲

自考02331数据结构大纲.pdf文件下载:自考02331数据结构大纲.pdf

第1章 概论

1.数据结构的作用、意义、基本概念和术语,要求达到"识记"层次。

1.1数据结构所研究的内容;在计算机科学中的作用和意义;Wirth关于程序的定义公式。

1.2数据、数据元素、数据对象、数据项、数据结构等概念的定义。

1.3数据的逻辑结构、存储结构及数据运算的含义及其相互关系。

1.4数据结构的两大类逻辑结构和四种常用的存储表示方法。

2.算法的描述和分析,要求达到"领会"层次。

2.1算法、算法的时间复杂度和空间复杂度等概念。

2.2一个完整算法需要满足的五个准则;算法与程序的关系。

2.3算法的分析方法;对于一般算法能分析其时间复杂度。

第2章 线性表

1.线性表的逻辑结构,要求达到"识记"层次。

1.1线性表的逻辑定义和性质。

1.2线性表上定义的基本运算。

2.线性表的顺序存储结构和基本运算,要求达到"领会"层次。

2.1顺序表的定义及特点。

2.2顺序表上进行插入和删除操作的实现及时间性能分析。

2.3理解求顺序表逆置和极值及定位两种算法的实现过程。

3.线性表链式存储结构的不同形式及基本运算,要求达到"领会"层次。

3.1单链表、循环链表、双向链表的定义及特点。

3.2单链表上实现建表、查找、插入和删除等基本算法,并分析其时间复杂度。

3.3用尾指针表示单循环链表的意义。

3.4双向链表上的插入和删除操作。

4.利用顺序表和链表设计算法解决应用问题,要求达到"综合应用"层次。

5.顺序表和链表的比较,要求达到"领会"层次。

第3章 栈和队列

1.栈的逻辑结构、存储结构及相关算法,要求达到"简单应用"层次。

1.1栈的逻辑定义、特点及运算。

1.2顺序栈和链栈上实现进栈、退栈等基本运算。

1.3顺序栈的上溢和下溢问题,如何防止溢出。

2.队列的逻辑结构、存储结构及相关算法,要求达到"简单应用"层次。

2.1 队列的逻辑定义、特点及运算。

2.2 顺序循环队列的表述;队空和队满的判定;顺序循环队列上入队、出队等基本算法。

2.3 链队列的表述;带头结点和不带头结点两种情况下链队列上的基本算法。

3.栈和队列的应用,要求达到"综合应用"层次。

3.1 圆括号匹配的检验问题。

3.2 字符串回文的判断问题。

3.3 数制转换。

3.4 利用栈实现程序的递归。

3.5 表达式求值。

第4章 多维数组和广义表

1.多维数组及其运算,要求达到"领会"层次。

1.1 多维数组的逻辑结构表达及特征。

1.2 多维数组的顺序存储结构及地址计算方法。

1.3 多维数组的常用运算。

2.矩阵的压缩存储,要求达到"简单应用"层次。

2.1 特殊矩阵的类型和性质;稀疏矩阵的概念。

2.2 用一维数组压缩存储特殊矩阵时,存储地址的计算。

2.3 稀疏矩阵的三元组表表示方法及常用算法。

3.广义表,要求达到"领会"层次。

3.1 广义表的定义及特性。

3.2 求广义表的深度、表长、表头和表尾运算。

第5章 树和二叉树

1.树的概念,要求达到"识记"层次。

1.1 树的定义和表示方法。

1.2 树的常用术语及其含义。

2.二叉树的概念,要求达到"领会"层次。

2.1 二叉树的递归定义。

2.2 二叉树的性质及其证明,两种特殊形式的二叉树。

2.3 二叉树的顺序存储和链式存储结构。

3.二叉树的运算,要求达到"综合应用"层次。

3.1 二叉链表的生成。

3.2 二叉树的递归遍历算法和非递归遍历算法。

3.3 二叉树的应用。

4.线索二叉树,要求达到"简单应用"层次。

4.1 二叉树线索化的含义、线索二叉树结点的表示方法。

4.2 对给定二叉树进行线索化的思想和实现。

4.3 二叉线索链表上的运算:查找某结点的后继结点和线索二叉树的遍历。

5.树和森林,要求达到"领会"层次。

5.1 树的三种存储结构表示方法。

5.2 树、森林和二叉树之间的相互转换。

5.3 树和森林的遍历。

6.哈夫曼树及其应用,要求达到"简单应用"层次。

6.1 最优二叉树的概念,哈夫曼算法的思想。

6.2 哈夫曼算法的实现。

6.3 编码、前缀编码、哈夫曼编码的概念;根据最优二叉树构造对应的哈夫曼编码。

第6章 图

1.图的概念,要求达到"识记"层次。

1.1 图的定义和表示方法。

1.2 图的常用术语及其含义。

2.图的存储结构,要求达到"领会"层次。

2.1 图的邻接矩阵表示法。

2.2 图的邻接表表示法。

3.图的遍历算法,要求达到"简单应用"层次。

3.1 深度优先搜索遍历的算法思想,以邻接矩阵和邻接表分表作为图的存储结构,其深度优先搜索遍历的算法实现及其时间复杂度。

3.2 广度优先搜索遍历的算法思想,以邻接矩阵和邻接表分别作为图的存储结构,其广度优先搜索遍历的算法实现及其时间复杂度。

3.3 深度优先搜索遍历算法中递归的应用和广度优先搜索遍历算法中队列的应用。

3.4 两种遍历算法的简单应用。

4.图的生成树和最小生成树,要求达到"领会"层次。

4.1 生成树的概念。

4.2 对遍历给定的图,求其深度优先和广度优先生成树。

4.3 最小生成树的概念及其性质。

4.4 Prim算法和Kruskal算法的基本思想及其实现。

5.最短路径,要求达到"领会"层次。

5.1 最短路径问题的描述。

5.2 Dijkstra算法的基本思想及其实现过程。

6.拓扑排序,要求达到"简单应用"层次。

6.1 拓扑排序的实际意义。

6.2 对有向图构造其顶点的拓扑序列,判断有向图中是否有环。

6.3 拓扑排序的基本思想及其算法实现。

第7章 排序

1.排序的基本概念,要求达到"识记"层次。

1.1 排序的定义及意义。

1.2 排序的分类。

1.3 稳定的含义。

1.4 评价排序算法的标准。

2.插入排序,要求达到"综合应用"层次。

2.1 直接插入排序算法的基本思想及算法实现。

2.2 直接插入排序算法中哨兵的作用。

2.3 直接插入排序算法在最好、最好及平均情况下的时间复杂度。

2.4 希尔排序算法的基本思想及算法实现。

3.交换排序,要求达到"简单应用"层次。

3.1 冒泡排序的基本思想及算法实现;冒泡排序算法的时间性能分析及其稳定性。

3.2 快速排序的基本思想及算法实现,一趟快速排序的具体操作。

3.3 快速排序的时间性能、空间性能及其稳定性。

4.选择排序,要求达到"简单应用"层次。

4.1 直接选择排序算法的算法实现及时间性能分析。

4.2 堆排序的原理及相关概念。

4.3 用筛选法构造堆。

4.4 堆排序的算法实现及性能分析。

5.归并排序的基本思想及其算法实现,要求达到"综合应用"层次。

6.分配排序,要求达到"领会"层次。

6.1 分配排序的特点。

6.2 箱排序和基数排序的基本思想、算法实现和时间性能分析。

7.各种内部排序算法的分析比较,要求达到"简单应用"层次。

7.1 在分别考虑时间复杂度、稳定性、空间复杂度的情况下,对各种内部排序算法进行比较。

7.2 选择排序算法时需要考虑的因素及如何根据实际问题选择合适的排序算法。

第8章 查找

1.查找的基本概念,要求达到"识记"层次。

1.1 查找的重要意义,内查找和外查找的含义。

1.2 平均查找长度的计算公式。

2.顺序表的查找,要求达到"简单应用"层次。

2.1 顺序查找、二分查找和索引顺序查找的基本思想及算法实现。

2.2 二分查找算法需要的条件,二叉判定树的含义。

2.3 索引顺序查找算法需要条件。

2.4 三种顺序表查找算法的性能分析及比较。

3.树表的查找,要求达到"简单应用"层次。

3.1 二叉排序的性质及定义,二叉排序树的建立、插入、查找和删除操作的实现。

3.2 B树的定义和性质,在B树上进行插入、删除和查找操作的实现。

3.3 B+树的基本概念。

4.散列表查找,要求达到"领会"层次。

4.1 散列表和散列函数的概念。

4.2 散列函数的作用和常用构造方法。

4.3 冲突的含义,解决冲突的两种方法。

4.4 散列表查找的算法及其性能分析比较。