C++编程:建造集合类实训

合集下载

C语言实训小项目

C语言实训小项目

《C语言的六个实训小项目》源码例程已有 11257 次阅读2007-10-8 11:51|个人分类:C语言编程项目实训一实训内容:1、定义一个数组a[11],用以存放学生的成绩。

2、从键盘输入10个学生成绩3、采用冒泡法,将学生成绩按照从高到低进行排序4、再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组5、将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

项目实训二实训内容:1、在函数中进行10个学生成绩从高到低排名 sort(int a[10])2、改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名,3、改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式4、根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。

(a:ascending 升,d:descending 降)项目实训三实训内容:1、定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现2、将数组stu[10]的内容输出到屏幕上,要求用指针实现3、将成绩数组按照从高到低进行排序,要求用指针实现4、将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单5、采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)项目实训四实训内容:1、定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2、从键盘输入10个学生的以上内容3、输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩4、输出三门课程的平均分数最高的学生的学号、姓名及其平均分5、将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:number name math Chinese English average 103 tom 90 90 10095101 alice 90 80 7080项目实训五实训内容:1、定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2、从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件3、打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。

c语言程序求集合的并集,交集,差集运算

c语言程序求集合的并集,交集,差集运算

C语言是一种广泛应用的计算机程序设计语言,它具有高效、灵活、可移植等特点,因此在计算机科学领域被广泛应用。

本篇文章将探讨在C语言中如何求集合的并集、交集和差集运算。

一、集合的概念集合是数学中重要的概念,它是由元素组成的无序的集合体。

在计算机科学中,我们常常需要对集合进行各种操作,比如求并集、交集、差集等。

二、集合的表示方法在C语言中,我们可以使用数组来表示集合。

数组是一种非常基础的数据结构,它由相同类型的元素组成的有序集合。

我们可以通过定义数组来表示一个集合,并通过遍历数组来进行各种集合运算。

三、集合的并集运算集合A和集合B的并集运算是指将A和B中的所有元素放在一起组成一个新的集合。

在C语言中,我们可以通过遍历两个数组,将它们的元素放在一个新的数组中即可实现并集运算。

下面是C语言中求两个集合的并集运算的示例代码:```#include <stdio.h>int m本人n() {int setA[] = {1, 2, 3, 4, 5};int setB[] = {3, 4, 5, 6, 7};int setSize = 5;int setUnion[10];int unionSize = 0;for (int i = 0; i < setSize; i++) {setUnion[unionSize++] = setA[i]; }for (int i = 0; i < setSize; i++) {int found = 0;for (int j = 0; j < setSize; j++) {if (setB[i] == setA[j]) {found = 1;break;}}if (!found) {setUnion[unionSize++] = setB[i];}}// 输出并集for (int i = 0; i < unionSize; i++) {printf("d ", setUnion[i]);}return 0;}```以上代码中,我们定义了两个集合setA和setB,分别表示集合A和集合B,然后通过遍历这两个数组,将它们的元素放入一个新的数组setUnion中。

程序设计技能实训总结报告

程序设计技能实训总结报告

一、引言随着科技的不断发展,计算机程序设计已经成为现代社会不可或缺的一部分。

为了提高学生的实践能力和综合素质,我国高校普遍开展了程序设计技能实训。

本文将结合本人参加的程序设计技能实训,总结实训过程中的收获与体会,并对实训过程中存在的问题进行分析,以期为今后类似实训提供借鉴。

二、实训内容与目标本次实训以C语言程序设计为基础,主要内容包括:1. C语言基本语法、数据类型、运算符、控制结构、函数等基础知识;2. 面向对象编程思想,掌握类和对象的概念,以及继承、多态等特性;3. 程序设计常用算法,如排序、查找、递归等;4. 数据结构,如数组、链表、栈、队列、树、图等;5. 程序调试与优化。

实训目标:1. 掌握C语言程序设计的基本语法和编程技巧;2. 具备面向对象编程能力,能够设计简单的面向对象程序;3. 熟悉常用算法和数据结构,能够应用于实际问题;4. 具备一定的程序调试和优化能力。

三、实训过程与收获1. 理论学习与实践操作相结合实训过程中,我们首先进行了系统的理论学习,掌握了C语言程序设计的基本知识和编程技巧。

随后,通过实际操作,将理论知识应用于实际问题,如设计简单的计算器、学生管理系统等。

通过理论与实践相结合的方式,使我们对程序设计有了更深刻的理解。

2. 提高编程能力在实训过程中,我们不仅学会了C语言的基本语法和编程技巧,还学会了面向对象编程思想、常用算法和数据结构。

这些知识使我们能够设计出功能更强大、结构更合理的程序。

3. 培养团队协作能力实训过程中,我们分组进行项目开发,每个成员负责不同的模块。

在团队合作中,我们学会了如何沟通、协调,共同解决问题。

这为我们今后步入社会,参与实际项目提供了宝贵的经验。

4. 增强解决问题的能力在实训过程中,我们遇到了许多实际问题,如程序调试、优化等。

通过查阅资料、讨论、请教老师等方式,我们逐渐学会了如何分析问题、解决问题。

这种能力对我们今后从事程序设计工作具有重要意义。

C语言集合的实现

C语言集合的实现

C语言集合的实现C语言是一种通用的程序设计语言,提供了丰富的数据结构和算法库。

在C语言中,集合是一种存储不重复元素的数据结构,常用于需要存储、查询和操作一组不同元素的场景。

本文将介绍C语言中集合的实现方式,并详细解释其原理和应用。

1.集合的定义集合是一种不包含重复元素的容器,没有特定的顺序。

在C语言中,可以使用数组或链表等数据结构来实现集合。

集合通常有以下几个基本操作:插入元素、删除元素、判断元素是否存在、求并集、求交集、求差集等。

2.集合的实现方式2.1使用数组实现集合使用数组实现集合比较简单,只需要定义一个固定大小的数组,然后使用元素的值作为下标来标记元素是否存在。

例如,要存储范围在0-9之间的整数集合,可以定义一个大小为10的数组,数组下标代表元素值,数组元素的值用于表示元素是否存在。

下面是使用数组实现集合的示例代码:```c#define SIZE 10//初始化集合void initSet(int set[])for (int i = 0; i < SIZE; i++)set[i] = 0;}//插入元素void insertElement(int set[], int element) if (element >= 0 && element < SIZE)set[element] = 1;}//删除元素void deleteElement(int set[], int element) if (element >= 0 && element < SIZE)set[element] = 0;}//判断元素是否存在int isElementExist(int set[], int element) if (element >= 0 && element < SIZE)return set[element];} elsereturn 0;}//打印集合void printSet(int set[])for (int i = 0; i < SIZE; i++) if (set[i] == 1)printf("%d ", i);}}int maiint set[SIZE];initSet(set);insertElement(set, 1); insertElement(set, 3); insertElement(set, 5); deleteElement(set, 3);printf("集合中的元素为:"); printSet(set);return 0;```这段代码中,先定义了一个大小为10的数组作为集合的存储空间。

c练手项目

c练手项目

c练手项目
C语言是一种通用的编程语言,常用于系统软件、嵌入式系统和应用程序开发。

以下是一些适合初学者的C语言练手项目:
1. 计算器:编写一个简单的计算器程序,可以进行基本的加减乘除运算。

2. 数组排序:实现一个排序算法,对给定的一组数字进行排序,例如冒泡排序、选择排序或插入排序。

3. 学生成绩管理:设计一个学生成绩管理系统,可以输入学生的信息和成绩,并进行成绩分析、排名等操作。

4. 井字棋游戏:编写一个简单的井字棋游戏,可以实现双人对战或与计算机对战。

5. 文件管理器:创建一个简单的文件管理器,可以进行文件的创建、删除、复制、移动等操作。

6. 图书管理系统:设计一个图书管理系统,可以进行图书的录入、借阅、归还等操作,并实现基本的图书管理功能。

7. 迷宫游戏:编写一个迷宫游戏,玩家需要通过输入指令来控制角色移动,并找到迷宫的出口。

8. 简单的登录系统:设计一个简单的登录系统,包括用户注册、登录和密码验证功能。

以上项目只是一些初学者可以尝试的练手项目,可以根据自己的兴趣和能力进行选择和扩展。

完成这些项目可以提高对C语言的理解和应用能力,并为以后更复杂的项目打下基础。

《C#程序设计》PPT实训指导书

《C#程序设计》PPT实训指导书

《C#程序设计》实训指导书学号:姓名:班级:小组成员:指导教师:学年第学期目录使用说明 (3)实训指导一 (4)实训指导二 (6)实训指导三 (9)实训指导四 (12)使用说明1、本实训指导书主要供学生进行C#程序设计学习之用。

2、每项实训均需要多次训练完成,每次训练一般均需要填写相应的训练情况记录。

3、对于每个实训,教师对每个学生都要随堂检查记录成绩至少一次,每堂课抽检若干个学生,成绩可以考虑速度,并结合相应训练结果记录评定训练项目成绩(0-5分)。

4、封面中的小组成员名单上用星号(*)注明谁是小组长。

5、记录本一般要上交五次,课程结束必须上交,否则影响总评成绩。

实训指导一[实训目的要求]1.掌握Visual Studio C#.Net 2010 的集成开发环境;2.掌握开发控制台应用程序的方法;3.掌握开发windows应用程序的方法;4.掌握窗体、标签、按钮、文本框的使用。

[相关知识与准备]1.开发控制台应用程序的步骤创建控制台应用程序包括Visual Studio 2010启动、创建项目、编写代码和编译并运行等步骤。

2.开发windows应用程序的步骤创建Windows应用程序的步骤包括启动Microsoft Visual Studio 2010、创建项目、设计控件、编写代码和调试程序等步骤。

3.控件的常用属性(1)Name属性,用于设置控件的名称,控件名是作为对象的标识而引用,不会显示在窗体上。

(2)Text属性,用于设置控件上显示的内容。

(3)Enabled属性,用于设置控件是否可操作。

当设置为False时,呈暗淡色,禁止用户进行操作。

(4)Visible属性,用于设置控件是否可见。

当设置为False时,用户看不到,但控件本身存在。

(5)Font属性,用于设置字体。

[实训内容]题目一:熟悉Visual Studio C#.Net 2010 的集成开发环境。

题目二:设计一个应用程序,通过单击按钮在窗体上显示“这是我的第一个C#应用程序”。

c#实验报告(完整版)

c#实验报告(完整版)

c#实验报告(完整版)一、实验目的通过本次实验,我们将掌握C#编程语言的基本语法和面向对象编程思想,熟悉C#开发环境的使用,并能够编写简单的C#程序。

二、实验内容1. 环境搭建:安装Visual Studio开发环境,并配置C#开发环境。

2. C#入门:学习C#的基本语法和常用关键字,了解数据类型、变量和运算符等基本概念。

3. C#面向对象编程:学习C#的面向对象编程思想,包括类、对象、封装、继承和多态等概念。

4. C#程序设计:通过编写实例程序,加深对C#的理解,并掌握C#程序的编写和调试方法。

三、实验步骤和结果1. 环境搭建:下载并安装Visual Studio开发环境,根据提示进行基本配置,创建一个新的C#项目。

2. C#入门:在新建项目中,创建一个C#源代码文件,编写一个简单的程序,输出"Hello, World!"。

通过运行该程序,验证编程环境和语法是否正确。

3. C#面向对象编程:定义一个名为"Person"的类,包含姓名、年龄和性别等属性,以及计算年龄的方法。

在主程序中创建一个"Person"对象,并设置对象的属性值,调用计算年龄的方法并将结果输出。

4. C#程序设计:根据实际需求,设计并实现一个简单的学生成绩管理系统。

定义一个名为"Student"的类,包含学生姓名和考试成绩等属性,以及计算平均分的方法。

通过用户输入学生姓名和考试成绩,创建多个"Student"对象,并调用计算平均分的方法,将结果输出。

五、实验总结本次实验我们通过搭建C#开发环境,学习了C#的基本语法和面向对象编程的思想。

通过编写实例程序,我们深入理解了C#程序设计的过程,掌握了C#的基本用法和调试方法。

通过本次实验,我们不仅熟悉了C#编程语言和开发环境的使用,还掌握了面向对象编程的基本思想和方法。

这对我们今后进行软件开发和编程工作将有很大的帮助。

c语言练手小项目

c语言练手小项目

c语言练手小项目
1. 学生信息管理系统:这个项目可以让你练习处理和存储学生数据,例如添加、修改、删除和查询学生的信息。

你可以使用文件来存储数据,并设计相应的功能函数来操作数据。

2. 猜数字游戏:编写一个猜数字游戏,让玩家猜测一个随机生成的数字。

程序会根据玩家的猜测给出相应的提示,如“大了”或“小了”,直到玩家猜对为止。

3. 计算器:实现一个简单的计算器,可以执行加、减、乘、除等基本的数学运算。

4. 字符串操作:开发一个程序,用于处理字符串,如字符串的拼接、查找、替换等操作。

这个项目可以帮助你熟悉字符串处理函数和算法。

5. 数据结构练习:使用 C 语言实现一些基本的数据结构,如链表、栈、队列等,并进行相关的操作,如插入、删除、查找等。

6. 水仙花数:找出所有水仙花数(一个 n 位数,其各个位上的数字的 n 次幂之和等于该数本身)。

这些小项目可以帮助你巩固 C 语言的基础知识,提高编程能力。

在实践中,你还可以根据自己的兴趣和需求进一步扩展和改进这些项目。

c课程设计实践报告

c课程设计实践报告

c 课程设计实践报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,培养学生运用C语言进行程序设计的能力。

具体分解为以下三个方面的目标:1.知识目标:使学生了解C语言的发展历程、基本语法、数据类型、运算符、控制结构、函数、指针、数组、结构体等基本概念,掌握常用的数据结构和算法。

2.技能目标:培养学生运用C语言进行程序设计的能力,能够独立完成简单的应用程序和算法实现。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生独立思考、解决问题的能力,培养学生的团队合作意识和创新精神。

二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型:变量、常量、数据类型、运算符、表达式等。

2.控制结构:顺序结构、分支结构、循环结构等。

3.函数:函数的定义、声明、调用、参数传递、返回值等。

4.指针:指针的概念、声明、赋值、运算、指针数组、指针函数等。

5.数组和字符串:一维数组、多维数组、字符串的基本操作等。

6.结构体和联合:结构体的定义、使用、联合的概念和用法等。

7.常用的数据结构和算法:数组、链表、栈、队列、排序算法、查找算法等。

三、教学方法为了实现教学目标,本课程将采用以下几种教学方法:1.讲授法:通过教师的讲解,使学生了解和掌握C语言的基本概念和语法。

2.案例分析法:通过分析典型的案例,使学生了解和掌握C语言的应用方法和技巧。

3.实验法:通过上机实验,使学生巩固所学知识,培养学生的动手能力和编程思维。

4.小组讨论法:通过分组讨论,培养学生的团队合作意识和交流沟通能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。

2.参考书:《C专家编程》、《C陷阱与缺陷》等。

3.多媒体资料:教学PPT、视频教程、在线课程等。

4.实验设备:计算机、网络、编程环境(如Visual Studio、Code::Blocks等)。

数组实训报告

数组实训报告

一、实训背景随着计算机科学技术的不断发展,数组作为编程语言中最基础的数据结构之一,被广泛应用于各种软件开发和数据处理中。

为了加深对数组这一数据结构的理解,提高编程能力,我们开展了数组实训。

二、实训目的1. 理解数组的定义、特点及用途。

2. 掌握数组的创建、初始化、访问和修改方法。

3. 学会使用数组进行基本的数据处理操作。

4. 培养编程思维和解决问题的能力。

三、实训内容1. 数组的定义及特点数组是一种线性数据结构,它是一组具有相同数据类型的元素集合。

数组的特点如下:(1)元素有序:数组中的元素按照一定的顺序排列,可以通过索引快速访问。

(2)连续存储:数组中的元素在内存中连续存储,方便内存管理。

(3)固定长度:数组的长度在创建时确定,无法动态改变。

2. 数组的创建与初始化在C语言中,数组的创建与初始化有以下几种方法:(1)静态数组:在程序运行前分配内存,并在程序运行期间保持不变。

```cint arr[10];```(2)动态数组:在程序运行时动态分配内存,并在需要时释放内存。

```cint arr = (int )malloc(10 sizeof(int));```3. 数组的访问与修改(1)访问数组元素:通过索引访问数组元素。

```cint num = arr[2]; // 获取数组中索引为2的元素```(2)修改数组元素:通过索引修改数组元素。

```carr[3] = 100; // 将数组中索引为3的元素修改为100 ```4. 数组的基本操作(1)数组的排序:冒泡排序、选择排序、插入排序等。

(2)数组的查找:顺序查找、二分查找等。

(3)数组的遍历:使用循环结构遍历数组元素。

```cfor (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}```5. 数组的特殊情况处理(1)空数组:长度为0的数组。

```cint arr[0];```(2)一维数组:只有一个元素的数组。

C++程序设计实习报告

C++程序设计实习报告

C++程序设计实习报告C++程序设计实习报告在大学的学习生涯中,C++程序设计是一门重要的课程。

为了更深入地掌握这门语言,我参加了一次C++程序设计实习。

通过这次实习,我不仅巩固了课堂上学到的理论知识,还提高了自己的编程能力和解决问题的能力。

一、实习目的本次实习的主要目的是让我们将课堂上学到的 C++知识运用到实际项目中,通过实践来加深对C++程序设计的理解和掌握。

具体而言,包括以下几个方面:1、熟悉 C++编程环境和工具,如 Visual Studio 等。

2、掌握 C++程序的基本结构和语法规则,能够编写正确、高效的C++程序。

3、学会运用 C++中的数据结构和算法,解决实际问题。

4、培养团队合作精神和沟通能力,提高自己的综合素质。

二、实习内容在实习期间,我们主要完成了以下几个项目:1、学生成绩管理系统这个系统要求能够实现学生成绩的录入、查询、修改、删除等功能。

我们使用了 C++中的数组和结构体来存储学生的信息,通过函数来实现各种操作。

在实现过程中,我们遇到了一些问题,比如如何对数组进行动态分配内存,如何处理输入的异常情况等。

通过查阅资料和不断调试,最终成功地完成了这个系统。

2、图书管理系统图书管理系统需要实现图书的添加、借阅、归还、查询等功能。

我们采用了链表来存储图书信息,这样可以方便地进行图书的插入和删除操作。

同时,我们还使用了文件来保存图书信息,以便在程序下次运行时能够读取之前的数据。

在这个项目中,我们学会了如何使用文件操作和链表的相关知识。

3、简单的游戏程序我们设计了一个简单的猜数字游戏,玩家需要在规定的次数内猜出系统随机生成的数字。

这个游戏主要锻炼了我们的逻辑思维和随机数生成的知识。

通过这个项目,我们学会了如何让程序与用户进行交互,提高了程序的趣味性和实用性。

三、遇到的问题及解决方法在实习过程中,我们遇到了各种各样的问题。

下面列举一些典型的问题及解决方法:1、语法错误C++的语法规则比较严格,很容易出现一些细微的语法错误,比如遗漏分号、括号不匹配等。

c语言程序设计实训总结

c语言程序设计实训总结

C语言程序设计实训总结1. 引言本文档总结了我在C语言程序设计实训课程中的学习经验和收获。

在本门课中,我通过实践加深了对C语言的理解,并通过完成一系列编程项目提高了编程能力和解决问题的能力。

以下是我在实训中的学习总结和心得体会。

2. 实训项目1: 计算圆的面积和周长实训项目1要求我们编写一个程序,输入圆的半径,然后计算并输出圆的面积和周长。

在这个项目中,我学会了如何使用C语言的基本输入输出函数,如scanf 和printf,以及如何使用数学库中的常量和函数,如PI和pow。

这个项目让我对C语言的语法和基本操作有了更深入的理解。

通过实际的编程练习,我掌握了变量的定义和使用,运算符的使用,以及控制流语句的应用。

我还学会了如何编写函数来封装复杂的计算逻辑并提高代码的可读性和重用性。

3. 实训项目2: 简单学生成绩管理系统实训项目2要求我们设计一个简单的学生成绩管理系统。

在这个项目中,我学会了如何使用结构体来组织和管理相关的数据。

我首先定义了一个包含学生信息的结构体类型,并使用动态内存分配来创建一个学生信息数组。

通过这个项目,我学会了如何使用指针来操作结构体,包括指针的声明、访问结构体成员、给指针赋值等。

我还学会了如何使用循环和条件语句来实现对学生信息的增删改查等功能。

4. 实训项目3: 简单图书管理系统实训项目3要求我们设计一个简单的图书管理系统,包括图书的录入、查询、借阅和归还等功能。

在这个项目中,我进一步巩固了对结构体和指针的应用,并学会了如何使用文件来进行数据的读写操作。

在实现这个项目的过程中,我学会了如何打开和关闭文件,如何使用文件指针来定位读写位置,以及如何使用不同的文件访问模式来实现不同的功能。

我还学会了如何使用字符串处理函数来处理图书的信息,如拆分和连接字符串等。

5. 实训项目4: 简单汽车租赁系统实训项目4是一个更复杂的项目,要求我们设计一个简单的汽车租赁系统。

在这个项目中,我进一步提高了对C语言的编程能力和解决问题的能力。

c程序设计实验教案

c程序设计实验教案

C程序设计实验教案一、实验目的1. 掌握C语言的基本语法和编程技巧。

2. 培养动手编写C程序的能力。

3. 熟悉集成开发环境(如Visual Studio、Code::Blocks等)的使用。

二、实验内容1. C语言基本数据类型和运算符。

2. 控制语句(条件语句、循环语句)。

3. 函数的定义和调用。

4. 一维数组的操作。

5. 指针的基本概念和应用。

三、实验环境1. 操作系统:Windows 7/8/10或Linux。

2. 集成开发环境:Visual Studio、Code::Blocks或其他支持C语言的IDE。

3. 编程语言:C语言。

四、实验步骤1. 打开集成开发环境,创建一个新的C语言项目。

2. 在项目中新建一个文件,如“实验1.c”。

3. 根据实验内容,编写相应的C程序。

4. 编译并运行程序,观察运行结果。

5. 对比实验结果,分析程序的正确性和性能。

五、实验要求1. 每位同学独立完成实验,不抄袭他人代码。

2. 实验过程中,遇到问题要积极思考,可请教同学或老师。

3. 每个实验至少编写一个C程序,并对程序进行详细注释。

4. 实验报告要求:总结实验过程中遇到的问题及解决方法,阐述程序的设计思路和原理。

六、实验六:控制语句(条件语句、循环语句)1. 实验目的掌握条件语句和循环语句的使用。

学会使用条件语句和循环语句解决实际问题。

2. 实验内容if语句、if-else语句、switch语句。

while循环、do-while循环、for循环。

3. 实验步骤创建一个新的C语言文件,如“实验6.c”。

编写使用条件语句和循环语句的C程序。

编译并运行程序,观察运行结果。

分析程序的正确性和性能。

4. 实验要求每位同学独立完成实验,不抄袭他人代码。

实验过程中,遇到问题要积极思考,可请教同学或老师。

每个实验至少编写一个C程序,并对程序进行详细注释。

实验报告要求:总结实验过程中遇到的问题及解决方法,阐述程序的设计思路和原理。

C++程序设计实习报告

C++程序设计实习报告

C++程序设计实习报告实习报告:C++程序设计一.引言本实习报告旨在总结C++程序设计实习期间的工作内容和所取得的成果,同时对遇到的问题及解决方法进行分析和讨论。

二.实习背景在本章节中,介绍实习的背景和目的,包括实习的时间和地点,实习的主要目标以及实习任务的具体要求。

三.实习任务在本章节中,详细描述实习期间负责的具体任务和相应要求,包括需求的分析、设计方案的制定、编码实现和测试验证等环节。

3.1 需求分析在本小节中,对实习期间需要完成的任务进行需求分析,明确任务的具体要求和实现目标。

3.2 设计方案在本小节中,详细描述实习任务的设计方案,包括算法设计、数据结构设计和模块化设计等方面的内容。

3.3 编码实现在本小节中,描述实习任务的具体编码实现过程,包括使用的编程语言和开发环境,以及编码过程中的主要实现思路和方法。

3.4 测试验证在本小节中,介绍实习任务的测试验证工作,包括测试用例的设计和实施,以及测试结果的分析和总结。

四.问题与解决在本章节中,实习过程中遇到的问题和困难,并对其进行分析和解决方法的总结,以帮助他人在类似情况下快速解决问题。

五.实习成果在本章节中,总结实习期间取得的成果,包括完成的任务数量和质量,以及在实习中获得的经验和技能提升等方面的内容。

六.附件本文档附带以下附件:(列出附件清单,包括代码文件、设计图纸、测试报告等)七.法律名词及注释本章节中对文档中涉及的法律名词进行解释和注释,确保读者对相关法律内容的理解和遵守。

八.结论本实习报告对C++程序设计实习期间的工作内容和成果进行了详细总结和分析,对问题和解决方法进行了讨论,对实习所取得的成果进行了评估。

通过实习,我获得了扎实的编程能力和解决问题的能力,并丰富了自己的实践经验。

C++的集合程序

C++的集合程序
cin >> s[i] ; } int set::length() {
int n=0; while(s[n] != '\0') {
n++; } return n; } int set::getd(int i) { return 0; } void set::disp() { for (int i = 0; i < len; i++)
protected: int len;
int s[MAX]; }; set::set() {
len = 0; //s ={0}; cout << "***建立一个集合***\n"; } void set::input(int d) { len = d; cout << "输入集合元素" << d <<" 个:"; for(int i = 0; i < d; i++ )
} return *this; } set set::operator*(set s1) // -------------------交运算---------------------{ int m[MAX]; int l = 0; for (int i = 0; i < s1.len; i++)
{ for(int j = 0; j < len; j++) // 选出相同的元素 { if(s1.s[i] == s[j]) { m[l] = s[j]; l++;
/*4.编写一个程序,用于进行集合的并、差和交运算。 例如输入整数集合{9 5 4 3 6 7}和{2 4 6 9 }, 计算出它们进行集合的并、差和交运算后的结果。 【提示】 i. 可用以下表达式实现整数集合的基本运算:

数据结构(C语言版)实验报告-集合的交并差

数据结构(C语言版)实验报告-集合的交并差

《数据结构与算法》实验报告一、需求分析问题描述:编制一个能演示执行集合的并、交和差运算的程序基本要求:集合元素限定为小写字母[’a’…’z’];演示程序以用户和计算机对话方式执行。

集合的输入形式为一个以“回车符”为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序运用时自动过滤去,输出的运算结果中将不含重复字符和非法字符。

计算机终端中显示提示信息之后,由用户自行选择下一步命令,相应输入数据和运算结果在其后显示。

数据测试:(1) Set1=”magazine”, Set2=’paper”,Set1∪Set2=”aegimnprz”,Set1∩Set2=”ae”,Set1-Set2=”gimnz”;(2) Set1=”012oper4a6tion89”,Set2=”error data”,Set1∪Set2=”adeinoprt”,Set1∩Set2=”aeort”, Set1-Set2=”inp”.二、概要设计运用顺序表1.定义顺序表typedef struct SET{char *elem;int size;int length;}set;2 基本操作:set InitSet(set s);//初始化集合set Input(set s);//向集合中输入元素set InsertSet(set s, char e);//向集合中插入元素set DelateSet(set s,int n);//从集合中删除元素void display(set s);//显示集合set SetMix(set set1,set set2,set set3);//求集合的交集set check(set s);//检查集合中是否有数字或者重复字母set Sort(set s);//对集合中的元素进行排序三、详细设计1.头文件#include<stdio.h>#include<stdlib.h>#include<string.h>2.定义#define MAX_SIZE 20(顺序表的初始大小)#define ADD_SIZE 10(顺序表的递增大小)3.结构类型typedef struct SET{char *elem;int size;int length;}set;4. 初始化集合set InitSet(set s){s.elem=(char*)malloc(MAX_SIZE*sizeof(char));s.size=MAX_SIZE;s.length=0;return s;}5. 向集合中输入元素set Input(set s){char *newbase;gets(s.elem);s.length+=strlen(s.elem);if(s.size<=s.length){newbase=(char*)realloc(s.elem,(s.size+ADD_SIZE)*sizeof(char));s.elem=newbase;s.size+=ADD_SIZE;}return s;}6.向集合中插入元素set InsertSet(set s,char e){s.elem[s.length]=e;s.elem[s.length+1]='\0';s.length++;return s;}7.从集合中删除元素set DelateSet(set s,int n){int i;for(i=n;i<=s.length;i++){s.elem[i-1]=s.elem[i];}s.length--;return s;}8.显示集合void display(set s){puts(s.elem);}9.检查集合中是否有数字或者重复字母set check(set s){int i,j,count;for(i=1;i<=s.length;i++){for(j=1;j<i;j++){if(s.elem[i-1]==s.elem[j-1]){s=DelateSet(s,i);i--;break;}}}for(i=1;i<=s.length;i++){if(s.elem[i-1]>'z'||s.elem[i-1]<'a'){s=DelateSet(s,i);i--;}}return s;}10.求集合的并集set SetMix(set set1,set set2,set set3){int i;for(i=1;i<=set1.length;i++){set3=InsertSet(set3,set1.elem[i-1]);}for(i=1;i<=set2.length;i++){set3=InsertSet(set3,set2.elem[i-1]);}set3=check(set3);set3=Sort(set3);return set3;}11.求集合的交集set SetSame(set set1,set set2,set set3){int i,j;for(i=1;i<=set1.length;i++){for(j=1;j<set2.length;j++){if(set1.elem[i-1]==set2.elem[j-1]){set3=InsertSet(set3,set1.elem[i-1]);break;}}}set3=check(set3);set3=Sort(set3);return set3;}12.求集合的差set SetReduce(set set1,set set2,set set3){int i,j;for(i=1;i<=set1.length;i++){set3=InsertSet(set3,set1.elem[i-1]);}for(i=1;i<=set3.length;i++){for(j=1;j<set2.length;j++){if(set3.elem[i-1]==set2.elem[j-1]){set3=DelateSet(set3,i);}}}set3=check(set3);set3=Sort(set3);return set3;}set Sort(set s){int i,j;char temp;for(i=0;i<s.length-1;i++){for(j=0;j<s.length-i-1;j++){if(s.elem[j]>s.elem[j+1]){temp=s.elem[j];s.elem[j]=s.elem[j+1];s.elem[j+1]=temp;}}}return s;}13.主程序main(){int i;set set1,set2,set3;set1=InitSet(set1);printf("输入第一个集合:");set1=Input(set1);set2=InitSet(set2);printf("输入第二个集合:");set2=Input(set2);set3=InitSet(set3);printf("选择要进行的操作:1、求交集 2、求并集 3、求集合的差:");scanf("%d",&i);if(i==1){set3=SetSame(set1,set2,set3);set3=check(set3);set3=Sort(set3);printf("交集为:");display(set3);}else if(i==2){printf("并集为:");set3=SetMix(set1,set2,set3);set3=check(set3);set3=Sort(set3);display(set3);}else if(i==3){printf("集合的差:");set3=SetReduce(set1,set2,set3);set3=check(set3);set3=Sort(set3);display(set3);}elseprintf("输入错误");return 0;}四、调试分析1.本程序的模块划分比较合理,且尽可能的将指针的操作封装在结点和链表的两个模块中,致使集合模块的调试比较成功。

C#项目开发实训

C#项目开发实训
部分数据表
• 系统用户表 角色信息表
系统功能介绍
• 登录模块设计
• 并不是任何人都可以登录该系统,系统默认是不允许 匿名登录的,只是使用管理员分配的账号和密码才能登录 才能对该系统进行相应管理,这时就需要通过登录模块验 证登录用户的合法性。登录模块是人力资源管理系统的第 一道安全屏障,其运行结果如下图所示。
系统功能介绍
• 人事调动模块设计
系统功能介绍
• 角色管理模块设计
• 开发人力资源管理系统过程中,需要考虑如何将角色 管理信息显示在页面上,即如何将角色管理信息从数据库 中读取出来。比较合理的做法是将所有角色管理信息存储 在数据库中,然后动态地显示在页面当中。运行结果如下 图所示。
系统功能介绍
• 角色管理模块设计
人力资源管理系统
班级:软件111 制作人:张** 指导老师:李**
人力资源管理系统
系统介绍 系统功能结构 系统数据库设计 系统功能的介绍
系统介绍
• 本系统是以Microsoft Visual Studio 2008为前台和SQL Server Management Studio数据库开发为后台等软件作为 开发工具,以各种单位机构为对象,开发一个从某种程度 上能满足中小型机构对人事信息管理的要求的“人力资源 管理系统”。本系统具有数据管理和企业事务管理功能。 使用该系统,可以方便地进行系统管理,人事档案管理, 部门管理,教育培训管理,还能够快捷地查询公司员工的 情况,方便企业高层领导对该企业人力资源的现状有个比 较全面的认识,也方便他们的管理和人员调动,可辅助企 业领导决策科学化,从而大大减少了工作量,提高了工作 效率。本课题是辅助企业管理的系统,拟采用的开发平台 为Windows平台。
系统功能介绍

cpp报告实验七_MFC_控件编程实验

cpp报告实验七_MFC_控件编程实验

实验七 MFC 控件编程实验一、实验目的(1) 熟悉Visual Studio 开发环境;(2) 掌握类向导的使用方法,熟练使用类向导进行消息映射,添加类的数据成员;(3) 掌握MFC 环境下标准控件的使用方法。

二、实验内容创建基于对话框的应用程序,在图形显示区绘制一个矩形并用单色画刷填充矩形内部。

通过滚动条控件设置填充颜色,并在编辑框中显示颜色的RGB值,通过单选按钮可以设置矩形的边框线型,“显示图形”复选框可以控制是否显示矩形。

设置完成后,单击“显示”按钮在“图形显示区”显示新的绘图效果。

单击“退出”按钮退出程序。

三、实验结果1 列表说明各个控件的属性设置,列出控件功能的实现代码;程序代码:DemoDlg.cpp:#include "stdafx.h"#include "Demo.h"#include "DemoDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifclass CAboutDlg : public CDialog{public:CAboutDlg();enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV supportprotected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()CDemoDlg::CDemoDlg(CWnd* pParent /*=NULL*/): CDialog(CDemoDlg::IDD, pParent), m_nLineStyle(0), m_nShow(TRUE), m_szRGB(_T("")){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CDemoDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);DDX_Radio(pDX, IDC_SOLID, m_nLineStyle);DDX_Check(pDX, IDC_SHOW, m_nShow);DDX_Control(pDX, IDC_RED, m_Red);DDX_Control(pDX, IDC_GREEN, m_Green);DDX_Control(pDX, IDC_BLUE, m_Blue);DDX_Text(pDX, IDC_RGB, m_szRGB);}BEGIN_MESSAGE_MAP(CDemoDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_START, OnStart)ON_BN_CLICKED(IDC_STOP, OnStop)ON_WM_TIMER()ON_WM_HSCROLL()ON_BN_CLICKED(IDC_DOT, &CDemoDlg::OnBnClickedDot)ON_BN_CLICKED(IDC_SHOW, &CDemoDlg::OnBnClickedShow)ON_BN_CLICKED(IDC_SOLID, &CDemoDlg::OnBnClickedSolid)ON_BN_CLICKED(IDC_DASH, &CDemoDlg::OnBnClickedDash)ON_NOTIFY(NM_THEMECHANGED, IDC_RED, &CDemoDlg::OnNMThemeChangedRed) END_MESSAGE_MAP()BOOL CDemoDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}SetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small iconm_Red.SetScrollRange(0, 255);m_Green.SetScrollRange(0, 255);m_Blue.SetScrollRange(0, 255);m_Red.SetScrollPos(100);m_Green.SetScrollPos(100);m_Blue.SetScrollPos(100);m_szRGB = _T("RGB(100,100,100)");UpdateData(FALSE);return TRUE;}void CDemoDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}void CDemoDlg::OnPaint(){CPaintDC dc(this);CPen Pen2,*pOldPen;CBrush Brush, *poldbrush;UpdateData(TRUE);switch (m_nLineStyle){case 0:Pen2.CreatePen(PS_SOLID, 3, RGB(255,0,0));Brush.CreateSolidBrush(RGB(m_Red.GetScrollPos(),m_Green.GetScrollPos(),m_Blue.GetScrollPos()));break;case 1:Pen2.CreatePen(PS_DASH, 1, RGB(255, 0, 0));Brush.CreateSolidBrush(RGB(m_Red.GetScrollPos(),m_Green.GetScrollPos(),m_Blue.GetScrollPos()));break;case 2:Pen2.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));Brush.CreateSolidBrush(RGB(m_Red.GetScrollPos(),m_Green.GetScrollPos(),m_Blue.GetScrollPos()));break;case 3:Pen2.CreatePen(PS_DASHDOTDOT, 1, RGB( 255, 0, 0));Brush.CreateSolidBrush(RGB(m_Red.GetScrollPos(),m_Green.GetScrollPos(),m_Blue.GetScrollPos()));break;}if (m_nShow == true){dc.SelectObject(&Brush);poldbrush = dc.SelectObject(&Brush);dc.SelectObject(&Pen2);pOldPen = dc.SelectObject(&Pen2);dc.Rectangle(20, 30, 410, 210);dc.SelectObject(pOldPen);dc.SelectObject(poldbrush);}}HCURSOR CDemoDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CDemoDlg::OnStart(){SetTimer(1,500,NULL);}void CDemoDlg::OnStop(){KillTimer(1);exit(0);}void CDemoDlg::OnTimer(UINT nIDEvent){CRect rt(15, 20, 420, 220);InvalidateRect(&rt);CDialog::OnTimer(nIDEvent);}void CDemoDlg::OnHScroll(UINT nSBCode, UINT nPos,CScrollBar* pScrollBar){switch (nSBCode){case SB_THUMBTRACK:pScrollBar->SetScrollPos(nPos);break;case SB_LINELEFT:pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 5);break;case SB_LINERIGHT:pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 5);break;case SB_PAGELEFT:pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 20);break;case SB_PAGERIGHT:pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 20);break;}m_szRGB.Format("RGB(%d,%d,%d)",m_Red.GetScrollPos(),m_Green.GetScrollPos(),m_Blue.GetScrollPos());UpdateData(FALSE);CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}void CDemoDlg::OnBnClickedDot(){}void CDemoDlg::OnBnClickedShow(){// TODO: 在此添加控件通知处理程序代码}void CDemoDlg::OnBnClickedSolid(){// TODO: 在此添加控件通知处理程序代码}void CDemoDlg::OnBnClickedDash(){// TODO: 在此添加控件通知处理程序代码}void CDemoDlg::OnNMThemeChangedRed(NMHDR *pNMHDR, LRESULT *pResult){*pResult = 0;}g::OnHScroll(nSBCode, nPos, pScrollBar);}DemoDlg.h:#include "afxwin.h"#if !defined(AFX_DEMODLG_H__C9F67558_0B42_4FF2_B643_A3FB1D923475__INCLUDED_) #define AFX_DEMODLG_H__C9F67558_0B42_4FF2_B643_A3FB1D923475__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CDemoDlg : public CDialog{public:CDemoDlg(CWnd* pParent = NULL); // standard constructorenum { IDD = IDD_DEMO_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX);protected:HICON m_hIcon;virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnStart();afx_msg void OnStop();afx_msg void OnTimer(UINT nIDEvent);DECLARE_MESSAGE_MAP()public:int m_nLineStyle;BOOL m_nShow;CScrollBar m_Red;CScrollBar m_Green;CScrollBar m_Blue;afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);CString m_szRGB;afx_msg void OnBnClickedDot();afx_msg void OnBnClickedShow();afx_msg void OnBnClickedSolid();afx_msg void OnBnClickedDash();afx_msg void OnNMThemeChangedRed(NMHDR *pNMHDR, LRESULT *pResult); };#endif2 运行结果3 总结类向导的功能和使用方法;类向导功能:它为VC提供了一个管理类的一个快捷的界面和快捷的方式,使我们能方便的管理成员变量、成员函数、消息映射等,而不用手动修改单个的代码文件.使用方法:在类视图选中要操作的类(DemoDlg),点击右键弹出类向导,在类向导中选中要操作的命令、消息或成员变量,点击添加处理程序或添加变量,然后在代码中相应位置编辑所需代码。

c++实训报告

c++实训报告

c++实训报告C++实训报告引言:C++是一种广泛应用于软件开发的编程语言,具备高效性、灵活性和可移植性等特点。

本次实训旨在通过实践项目的方式,提高学生对C++语言的理解和应用能力。

本报告将详细介绍实训项目的目标、实施过程以及所取得的成果。

项目目标:本次实训项目的目标是设计一个简单的学生管理系统,以学生的基本信息为核心,实现学生信息的录入、查询、修改和删除等功能。

通过该项目,学生可以熟悉C++的基本语法和面向对象的思想,并掌握C++中的文件操作、函数调用和数据结构等知识。

实施过程:首先,我们通过分析学生管理系统的需求,确定了系统所需要的基本功能和操作界面。

然后,我们采用面向对象的方法,设计了相关的类和数据结构。

在编写代码的过程中,我们注重代码的模块化和可重用性,尽量避免代码冗余和重复工作。

同时,我们使用了C++提供的标准库函数,简化了代码的编写过程。

在实现功能的过程中,我们遇到了一些挑战和问题。

例如,在学生信息录入模块中,我们需要对用户输入进行验证和判断,以保证数据的准确性和完整性。

在学生信息查询模块中,我们需要设计一个高效的搜索算法,以快速定位目标学生的信息。

通过不断的思考和调试,我们最终成功解决了这些问题,并实现了项目的所有功能。

成果与总结:通过本次实训,我们深入了解了C++语言的特点和应用场景,掌握了C++的基本语法和常用函数库。

我们不仅学会了如何使用C++编写一个完整的项目,还学到了团队协作和沟通的重要性。

在实践中,我们不断调试和优化代码,提高了自己的问题解决能力和编程技巧。

总结起来,本次C++实训项目帮助我们将理论知识与实际应用结合起来,提升了我们的编程能力和思维方式。

通过不断地实践和探索,我们更加深入地了解了C++编程语言,并能够独立开发简单的应用程序。

我们相信,在将来的学习和工作中,这些经验和技能将对我们有着重要的意义。

离散数学c语言程序[离散数学集合运算C或C语言实验报告范文]

离散数学c语言程序[离散数学集合运算C或C语言实验报告范文]

离散数学c语言程序[离散数学集合运算C或C语言实验报告范文]实验成绩:202212202201016学号:【实验题目】1.命题逻辑实验四【实验目的】2.掌握用计算机求集合的交、并、差和补运算的方法。

【实验内容】3.编程实现集合的交、并、差和补运算。

【实验要求】4、++语言编程实现C或C【算法描述】5.10},,,9,6,7,,C,E表示集合。

假定A={1,34,5,(1)用数组AB10},9,,8,7,4,5,6,34B={2,,3,,7,8,10},E={1,2,,输入数据时要求检查数据是否重复(集合中的E(全集),B,输入数组A 的子集。

B是集合E,要求集合数据要求不重复)A,置成空集。

以下每一个运算都要求先将集合CB}且某)二个集合的交运算:AB={某|某A(2C中的元素进行比较,将相同的元素放在数组中元素逐一与数组B把数组AB的交。

便是集合中,数组CA和集合C语言算法:for(i=0;i<m;i++)for(j=0;j<n;j++)if(a[i]==b[j])c[k++]=a[i];B}或某3)二个集合的并运算:AB={某|某A(中中的元素逐一与数组AC中。

将数组B中各个元素先保存在数组把数组AB和集合C便是集合A 的元素进行比较,把不相同的元素添加到数组C中,数组的并。

C语言算法:for(i=0;i<m;i++)c[i]=a[i];for(i=0;i<n;i++){for(j=0;j<m;j++)if(b[i]==c[j])break;if(j==m){c[m+k]=b[i];k++;}}(4)二个集合的差运算:A-B={某|某A且某B}将数组A中的元素逐一与数组B中的元素进行比较,把数组A与数组B不同的元素保存在数组C中,数组C便是集合A和集合B的差A-B。

C语言算法:for(j=0;j<m;j++){for(i=0;i<n;i++){if(A[j]==B[i]){C[k]=A[j];k++;break;}if(j==n){C[k]=A[i];k++;}}A}且~A=B-A={某|某B某)集合的补运算:(5把不相同的元素保存到中的元素进行比较,E中的元素逐一与数组A将数组关于集合中,数组数组CC便是集合AE的补集。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

建造集合类实训
#include<iostream.h>
class Jihe{
private:
int Array[1024];
int a;
public:
void chushi();
void Add(int);
void Delete(int);
void Contain(int);
int Sum();
void Full();
void Empty();
void Jiao(Jihe);
void Bing(Jihe);
void display();
};
void Jihe::chushi()
{
a=0;
}
void Jihe::Add(int m) //往集合中添加数据
{
int x=0;
if(a==1024) cout<<"该集合类已满,无法进行添加操作"<<endl;
else
{
for(int i=0;i<=a-1;i++)
{
if(Array[i]==m)x=1;
}
if(x==0)
{
Array[a]=m;
a++;
cout<<"数据"<<m<<"添加成功"<<endl;
}
else
cout<<"该集合类中已包含该数据,无需进行重复添加"<<endl;
}
}
void Jihe::Delete(int m) //对集合中的数据进行删除
{
int y=0,i=0;
if(a==0) cout<<"该集合类为空,无法进行删除操作"<<endl;
else
{
for(i=0;i<=a-1;i++)
{
if(Array[i]==m){y=1;break;}
}
if(y==1)
{
Array[i]=Array[a-1];
a--;
cout<<"数据"<<m<<"删除成功"<<endl;
}
else
cout<<"该集合中无此数据"<<endl;
}
}
void Jihe::Empty() //判断集合是否为空
{
if(a==0) cout<<"该集合类为空"<<endl;
}
void Jihe::Full() //判断集合是否为满
{
if(a==1024) cout<<"该集合类已满"<<endl;
}
void Jihe::Contain(int m) //判断数据是否包含在集合中
{
int i=0,y=0;
for(i=0;i<=a-1;i++)
{
if(Array[i]==m){y=1;break;}
}
if(y==1)cout<<"整数"<<m<<"包含在该集合中"<<endl;
else cout<<"整数"<<m<<"不包含在该集合中"<<endl; }
int Jihe::Sum() //输出该集合中数据的总数
{
return a;
}
void Jihe::display() //输出该集合
{ cout<<"(共有"<<Sum()<<"个数据)"<<"\t";
int i;
for(i=0;i<=a-1;i++)
{cout<<Array[i]<<"\t";
if((i+1)%10==0)cout<<endl;}
cout<<endl<<endl;
}
void Jihe::Jiao(Jihe S) //求两个集合的交集
{
int i,j,k=0;
Jihe H;
H.chushi();
for(i=0;i<=a-1;i++)
{
for(j=0;j<=S.a-1;j++)
{
if(Array[i]==S.Array[j])
{
H.Array[k]=Array[i];
k++;
break;
}
}
}
cout<<"进行交运算的两个集合分别为:"<<endl;
cout<<"集合1:"; display();
cout<<"集合2:"; S.display();
cout<<"进行交运算后的集合为:"<<endl;
cout<<"(共有"<<k<<"个数据)"<<"\t";
for(i=0;i<=k-1;i++)
{cout<<H.Array[i]<<"\t";
if((i+1)%10==0)cout<<endl;}
cout<<endl;
}
void Jihe::Bing(Jihe S) //求两个集合的并集
{
cout<<"进行并运算的两个集合分别为:"<<endl;
cout<<"集合1:"; display();
cout<<"集合2:"; S.display();
cout<<"进行并运算后的集合为:"<<endl;
for(int j=0;j<=S.a-1;j++)
{
int x=0;
for(int i=0;i<=a-1;i++)
{
if(Array[i]==S.Array[j] )x=1;
}
if(x==0)
{
Array[a]=S.Array[j];
a++;
}
}
display();
}
void main()
{
Jihe S,H;
S.chushi();
H.chushi();
int i,j,k,m,n,x[5];
cout<<"请向集合1中输入五个数据:";
for(i=0;i<5;i++)
{
cin>>x[i];
S.Add(x[i]);
}
cout<<"集合1现在包含的数据:"<<endl;
S.display();
cout<<"请输入要添加的数据:";
cin>>j;
S.Add(j);
cout<<"集合1现在包含的数据:"<<endl;
S.display();
cout<<"请输入要删除的数据:";
cin>>k;
S.Delete(k);
cout<<"集合1现在包含的数据:"<<endl;
S.display();
cout<<"请输入需要判断是否在集合1内的一个数据:";
cin>>m;
S.Contain(m);
cout<<endl;
cout<<"请向集合2中输入五个数据:";
for(i=0;i<5;i++)
{
cin>>x[i];
H.Add(x[i]);
}
cout<<"集合2现在包含的数据:"<<endl;
H.display();
cout<<"交运算:"<<endl;
S.Jiao(H);
cout<<endl;
cout<<"并运算:"<<endl;
S.Bing(H);
cout<<endl;
}。

相关文档
最新文档