C++课程设计报告--小型特殊计算器
C语言课程设计报告书____简易计算器[1]
![C语言课程设计报告书____简易计算器[1]](https://img.taocdn.com/s3/m/3456b6ea6294dd88d0d26b83.png)
C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。
特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。
通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。
2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。
3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。
提高程序开发能力。
二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。
2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。
3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。
4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。
5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。
四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。
计算器课程设计c

计算器课程设计c一、教学目标本课程的教学目标是使学生掌握计算器的基本使用方法,包括加减乘除、科学计算等功能,能够运用计算器解决实际问题。
知识目标为学生能够理解计算器的基本工作原理和各种功能的使用方法;技能目标为学生能够熟练操作计算器,进行正确的数值计算和科学计算;情感态度价值观目标则是培养学生的计算思维,使他们认识到计算器在现代学习和工作中的重要性,养成良好的学习习惯和科学精神。
二、教学内容根据课程目标,本课程的教学内容主要包括计算器的基本操作、各种功能的使用方法以及计算器在实际问题中的应用。
具体的教学大纲如下:1.计算器的基本操作:学习如何开机、关机、清屏等基本操作。
2.数值计算:学习如何进行加减乘除等基本的数值计算。
3.科学计算:学习如何进行幂次计算、平方根、倒数等科学计算。
4.实际问题应用:通过实例讲解计算器在解决实际问题中的应用,如面积、体积计算等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
讲授法用于讲解计算器的基本操作和功能使用方法;讨论法用于引导学生交流计算器使用的心得和遇到的问题;案例分析法用于分析计算器在实际问题中的应用;实验法用于让学生亲自动手操作计算器进行实际计算。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于提供理论知识的学习,多媒体资料用于辅助讲解和演示计算器的操作,实验设备则是让学生进行实际操作的重要工具。
在教学过程中,教师应充分利用这些资源,丰富学生的学习体验,提高学习效果。
五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。
平时表现主要评估学生在课堂上的参与度、提问回答等情况;作业则主要评估学生的动手操作能力和对知识的理解运用;考试则是对学生学习成果的全面检验,包括理论知识和实际操作两部分。
评估方式应公正客观,能够全面反映学生的学习成果。
c实现计算器课程设计报告

得分:信电工程学院课程设计报告基于VC的表达式计算器软件设计课程:程序设计综合训练1班级:12软嵌2班学号:223姓名:***指导教师:**2013年6 月28日目录1引言------------------------------------------------------------------------------- 1 课题背景-----------------------------------------------------------------2课程设计目的-----------------------------------------------------------32需求分析-------------------------------------------------------------------------5 系统功能模块-----------------------------------------------------------5设计要求-----------------------------------------------------------------63系统实现------------------------------------------------------------------------8 对话框界面设计-------------------------------------------------------8数值计算功能的实现-----------------------------------------------104程序关键代码及运行结果-------------------------------------------------12 5总结与体会------------------------------------------------------------------151 引言课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具;要实现计算功能,可以用VC++的知识编写程序来解决此问题;该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度;该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行;同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力;学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等;为今后计算机编程的学习和工作打下良好、扎实的理论实践基础;2 需求分析系统功能模块1输入的符号,数字从左向右显示; 点击“=”输出结果,在输出行显示2支持加减乘除运算;3支持“xˆy”的运算;4 括号“”“”的使用;5支持混合运算;6功能键“ANS” ,“CLEAR” ,“BACKSPACE”的使用;7计算器的输入方式:支持鼠标点击计算器键输入;8计算器计算结果的输出方式:在计算器窗口的输出行显示9算数运算的数据类型:整数和浮点数;10特殊情况的计算;11以上所有的运算都是在10进制下进行.1输入的符号,数字从右向左显示;先输入“8”再输入“×”点击“=”输出结果,在输出行显示.2支持加减乘除运算.a.c. 减法计算d.除法运算特殊情况见2)支持求次方x ˆy运算;求次方x ˆy运算:“ˆ”为次方x ˆy在输入行中的显示符号4“”“”的使用;括号的使用要使用“”“”的时候,先点击“”,再输入数字或符号,内容输入完毕以后,点击“”,完成“”“”的所有功能;例如:2×2+2=22+222+222+25支持混合运算;附:运算符的优先级表 优先级 功能键 显示 结合律从 高 到 低、 、 自左向右 x ˆy 、1/x ˆ、~ 自左向右 ×、÷ 、/ 自左向右 ﹢﹣ ﹢﹣自左向右例如:5+2×5=5+256功能键“CLEAR ”及“BACKSPACE ”的使用;a .“CLEAR ”为清0键;只要按下“CLEAR ”键,输入行所有字符清0,输出行回到原始状态; 输入前:5+25输入后:b.“BACKSPACE ”为退格键;当输入任何数字或运算符,只要按下“BACKSPACE ”混合运算则按优先级表中的运算符优先顺序从左向右计算键,字符位自右向左消去一位;注:初始的“0”不能被删除输入前:输入后:C.“ANS”为变量储存器;当一次结果被清除后,个结果;如:按“CLEAR”键后,再按“ANS”键就会这样7计算器的输入方式:只支持鼠标点击计算器键输入;8计算器计算结果的输出方式:在计算器窗口的输出行显示;9算数运算的数据类型:整数和浮点数;a.输入行最大显示的字符数32位,每个运算符算一位;b.“”,“”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时;“0”消失,输入的的数字取代“0”;当输入任何运算符时;默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字;10特殊情况的运算A.运算结果整数部分超出32位,显示Infinity无穷大;出现运算异常B.除数为0的情况,提示用户被除数不能为零C.在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃;若舍弃超出部位后,结果全为0,则结果为0D.在运算时,若结果的整数位不为0a.总位数在最大字符位内,则直接显示;b.总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符E.当用户输入“^0”时,若“^0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”11)以上所有的运算都是在10进制下进行设计要求1 了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2 理解需求分析过程,掌握需求分析文档编写;3 理解面向对象程序设计的基本思路和方法;4 掌握用VC++开发MFC应用程序的一般步骤和方法;5 掌握基于对话框的应用程序的编写,主要包括文本框和按钮等;6 掌握后缀表达式算法;7 掌握VC++开发工具的使用;包括资源管理,项目创建,运行调试等;8 完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能;3系统实现对话框界面设计数值计算实现例如:2×2+2=2222+222+222+284程序关键代码及运行结果include <iostream>include <string>include ""include <cmath>using namespace std;bool jisuandouble a,double b,char c,double& d{switch c{case '+':d=a+b;"using namespace std;ifdef _DEBUGdefine new DEBUG_NEWendifvoid CCompuetrDlg::OnPaint{if IsIconic{CPaintDC dcthis; // 用于绘制的设备上下文SendMessageWM_ICONERASEBKGND, reinterpret_cast<WPARAM>, 0;// 使图标在工作矩形中居中int cxIcon = GetSystemMetricsSM_CXICON;int cyIcon = GetSystemMetricsSM_CYICON;CRect rect;GetClientRect▭int x = - cxIcon + 1 / 2;int y = - cyIcon + 1 / 2;// 绘制图标x, y, m_hIcon;}else{CRect rect;CPaintDC dcthis;GetClientRectrect;rect,RGB255,0,0;//设置背景颜色CDialog::OnPaint;CDialog::OnPaint;}}// : 定义应用程序的类行为;//include ""include ""include ""ifdef _DEBUGdefine new DEBUG_NEWendif// CCompuetrAppBEGIN_MESSAGE_MAPCCompuetrApp, CWinAppON_COMMANDID_HELP, CWinApp::OnHelpEND_MESSAGE_MAP// CCompuetrApp 构造CCompuetrApp::CCompuetrApp{// TODO: 在此处添加构造代码,// 将所有重要的初始化放置在InitInstance 中}// 唯一的一个CCompuetrApp 对象CCompuetrApp theApp;// CCompuetrApp 初始化BOOL CCompuetrApp::InitInstance{// 如果一个运行在Windows XP 上的应用程序清单指定要// 使用版本6 或更高版本来启用可视化方式,//则需要InitCommonControls;否则,将无法创建窗口;InitCommonControls;CWinApp::InitInstance;// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名SetRegistryKey_T"应用程序向导生成的本地应用程序";CCompuetrDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = ;if nResponse == IDOK{// TODO: 在此放置处理何时用“确定”来关闭//对话框的代码}else if nResponse == IDCANCEL{// TODO: 在此放置处理何时用“取消”来关闭//对话框的代码}// 由于对话框已关闭,所以将返回FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵;return FALSE;}//stackinclude<iostream>include<string>include<new>using namespace std;template <class T>class LinkedStack;template <class T>class Node{friend LinkedStack<T>; private:T data;Node<T> link;};template <class T>class LinkedStack{public:LinkedStack{top=0;length=0;}~LinkedStack;bool isEmptyconst{return top==0;}bool isFullconst;T Top const;LinkedStack<T>&Addconst T& x;LinkedStack<T>&DeleteT& x;int getLength{return length;} private:Node<T> top;int length;};template <class T>LinkedStack<T>::~LinkedStack{Node<T> next;whiletop{next=top->link;delete top;top=next;}}template <class T>bool LinkedStack<T>::isFullconst{try{Node<T> p=new Node<T>;delete p;return false;}catchbad_alloc& e{return true;}}template <class T>T LinkedStack<T>::Topconst{ifisEmptythrow CString"堆栈空异常";return top->data;}template <class T>LinkedStack<T>& LinkedStack<T>::Addconst T& x {Node<T> p=new Node<T>;p->data=x;p->link=top;top=p;length++;return this;}template <class T>LinkedStack<T>& LinkedStack<T>::DeleteT& x {ifisEmptythrow CString"堆栈空异常";x=top->data;Node<T> p=top;top=top->link;delete p;length--;return this;}5总结与体会计算器虽然是我们生活中常见的一样工具,但不知道实现这样一个工具,说实话不是很简单,对于我这个学习一般的人来说,很难计算器虽小,但包含了一些简单却又重要的功能,包括加减乘除,次方,括号等一些基本功能,它方便了大众的日常生活中遇到的计算问题;完成这个任务,说实话很艰难,但挺了过来,坚持了过来,所谓凡事贵在坚持,所以要学会坚持,坚持就是胜利;一个人的力量是有限的,学会与人合作,积极请教他人谦虚学习是必要的,它只会让你更加的进步,会更好;所以这个任务让我学到了很多,坚持,努力,合作,进取,积极向上,天下无难事,只要肯用心。
c课程设计计算器报告

c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
c简易计算器课程设计

c 简易计算器课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握加、减、乘、除四则运算的操作方法。
2. 学生能够运用所学知识,解决生活中简单的数学问题。
3. 学生了解计算器的发展历程,认识到科技对生活的影响。
技能目标:1. 学生能够熟练操作简易计算器,进行基本的四则运算。
2. 学生通过实际操作,培养动手能力和问题解决能力。
3. 学生能够运用计算器辅助学习,提高数学学习效率。
情感态度价值观目标:1. 学生培养对数学学习的兴趣,树立正确的数学观念。
2. 学生在合作交流中,培养团队意识和沟通能力。
3. 学生通过计算器的使用,认识到科技发展的成果,增强民族自豪感。
课程性质:本课程为信息技术与数学学科的整合课程,旨在通过简易计算器的学习,提高学生的数学素养和信息技术能力。
学生特点:四年级学生具备一定的数学基础和信息技术能力,好奇心强,善于合作交流。
教学要求:教师需结合学生的特点,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和问题解决能力。
在教学过程中,关注学生的情感态度,激发学生的学习兴趣,使学生在轻松愉快的氛围中学习。
通过本课程的学习,使学生达到预期的学习成果。
二、教学内容1. 计算器的历史与原理:介绍计算器的发展简史,探讨计算器的工作原理,让学生了解计算器的演变过程,认识到科技对生活的改变。
2. 简易计算器操作方法:详细讲解加、减、乘、除四则运算的操作步骤,让学生熟练掌握计算器的使用方法。
3. 实践应用:结合数学课本中的实际例题,指导学生运用计算器进行计算,解决实际问题,提高计算速度和准确性。
4. 计算器在数学学习中的应用:探讨计算器在辅助数学学习中的作用,如:简化计算过程、提高解题效率等。
教学内容安排和进度:第一课时:计算器的历史与原理,计算器的简单操作。
第二课时:四则运算的操作方法,实践练习。
第三课时:计算器在数学学习中的应用,解决实际问题。
教材章节:《信息技术》第四章:计算器与计算机。
c计算器实验报告

c计算器实验报告C计算器实验报告引言:计算器是我们日常生活中常见的工具之一。
无论是在学习、工作还是生活中,我们都会频繁地使用计算器来进行各种数学运算。
而随着科技的不断发展,计算器也在不断地演化和改进。
本实验旨在通过对C计算器的研究和实验,深入了解计算器的原理和功能,并对其进行性能测试和评估。
一、背景介绍计算器是一种用于进行数学运算的设备或工具。
它可以进行基本的四则运算,如加减乘除,以及更复杂的科学运算,如三角函数、指数和对数等。
计算器的发展历史可以追溯到早期的机械计算器,如阿贝尔计算器和帕斯卡计算器。
而现代计算器则采用电子技术,通过电子元件和芯片来实现计算功能。
二、C计算器的原理和功能C计算器是一种基于C语言开发的计算器软件。
它通过编写程序来实现各种数学运算和功能。
C语言是一种通用的高级编程语言,具有强大的计算能力和灵活的语法结构。
C计算器利用C语言的特性,可以实现复杂的数学运算和逻辑判断。
C计算器具有以下主要功能:1.基本运算:C计算器可以进行加减乘除等基本的四则运算。
用户只需输入相应的表达式,C计算器会自动计算并给出结果。
2.科学运算:C计算器支持各种科学运算,如三角函数、指数和对数等。
用户可以通过特定的函数调用来实现这些功能。
3.变量和常量:C计算器可以定义和使用变量和常量。
用户可以将某个数值赋给一个变量,并在后续的计算中使用这个变量。
4.条件判断:C计算器支持条件判断语句,用户可以根据不同的条件执行不同的操作。
这使得C计算器具有一定的逻辑判断能力。
5.循环结构:C计算器可以实现循环结构,用户可以通过循环语句重复执行某个操作,从而简化计算过程。
三、C计算器的性能测试和评估为了评估C计算器的性能,我们进行了一系列的测试。
首先,我们测试了C计算器进行基本运算的速度。
通过输入大量的基本运算表达式,我们测量了C计算器的响应时间和计算速度。
结果显示,C计算器的运算速度非常快,几乎可以瞬间完成复杂的运算。
C语言课程设计-计算器程序设计报告书

C语言课程设计-计算器程序设计报告书课程设计说明书题目计算器程序设计起讫日期 2006 年 7月 3日至 2006 年 8月 6日所在院系软件学院专业机械+软件班级 04-2 学生姓名学号指导教师2010年 8 月日摘要当今社会是信息社会,科技经济高速发展的社会~为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。
由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品~随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小~电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成~电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延~下面我们将用我们学习的c 语言编写一个简易的计算器程序~实现简单的初步的计算功能~本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。
生成的程序可移植性强兼容性好稳定~现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。
这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。
但是,每次只能运算一个表达式。
不能运算多个表达式。
在程序里面在添加一组选择函数即可。
本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。
重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。
关键词:C语言 Tubro c 2.0汉化版计算器时钟目录第一章综述…………………………………………………………………1 (1 课题的现实意义………………………………………………………1 11(2 软件环境........................................................................1 1(3 硬件环境 (1)第二章系统设计流程图……………………………………………………2 2(1 系统流程图……………………………………………………………2 (2 主要功能表……………………………………………………………2 2第三章系统分析和设计……………………………………………………3 (1 图形的绘制和输出……………………………………………………3 33(2 文本的输出显示...............................................................3 3(3 计算函数的调用...............................................................4 3(4 程序的运行和退出 (5)第四章系统测试.....................................................................6 4(1 系统测试........................................................................6 4(2 调试..............................................................................6 4(3 错误原因分析一...............................................................6 4(4 错误原因分析二 (6)第五章用户使用说明书……………………………………………………8 5(1 运行Turbo C程序进入计算器界面…………………………………8 5(2 计算器的使用..................................................................9 5(3 退出程序 (9)第六章工作总结 (10)参考文献………………………………………………………………………11 附录: 源代码第一章综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。
vc计算器课程设计

描写童年趣事作文600字高二描写童年趣事作文600字高二6篇童年是七色的,是热忱的、可爱的、好玩的,布满笑声的。
共享一下你的童年趣事吧。
下面是我为大家收集的描写童年趣事作文600字高二例文,期望你宠爱。
描写童年趣事作文600字高二(篇1)一进教室,映入眼帘的就是讲台上的那几个易拉罐和几根“专业”的钓鱼竿。
我一下子就呆住了,心里不禁猜想起老师葫芦里卖的是什么药?“莫非是去钓鱼,不对,要易拉罐干什么?莫非里面装的是鱼食?不对,不对”“下面我们来玩一个叫‘钓旱鱼’的玩耍吧!”老师的一句话打断了我的猜想,也点破了我的困惑。
首先,江老师将我们分成四个大组,每个大组有六名“钓鱼者”。
老师为了让我们生疏玩耍规章,便让我们先进行练习。
在练习的过程中,我渐渐把握了要领,能在十五秒之内钓起一条“旱鱼”了。
在为自己的成绩窃喜时,我才发觉真是“人外有人,天外有天”啊!———有些同学格外娴熟,不出十秒就能钓起一条“旱鱼”,这使我不由得站在一旁观看起其他人的动作。
不一会儿,练习结束,老师让各组前来抽签。
令我欣喜的是:我们组竟幸运的抽到了第5号,这样我们就有机会进行训练了。
这时,老师让每组选出2名队员来参赛。
然而,在参赛问题上,大家竟不约而同的推选了我和刘宇欣,这是我颇感意外的。
竞赛最终开头了。
首先上场的是闵耀东和王涵,他们或许是由于第一个上场产生了恐惊心理,或许是由于不太娴熟,所以显得有些力不从心,连续2次都使“鱼儿”顺当脱钩,最终才钓起了2次。
我和队友们马上对他们报以了“鼓舞”的掌声。
最精彩的也是最使人感到意外的,是第四个上场的李亦桐和方菁如一组。
她们一开头上场的表现是顺风顺水,一连钓起了2个,但到中间的时候,不知是谁顺手将竿一抖,两根鱼竿就像热恋情人一般纠缠在一起了,害得同学们费了九牛二虎之力才将难分难舍的它们分开。
“哈!哈!哈!”的笑声始终萦绕在我的耳畔,它不仅使我的童年丰富多彩,更使它意义非凡。
描写童年趣事作文600字高二(篇2)每个人的童年生活都是丰富多彩的,布满了无穷的乐趣。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程:面向对象程序设计学号:姓名:班级:教师:课程设计名称:小型特殊计算器1.设计内容:实现一个特殊的计算器,可以实现复数、有理数、矩阵和集合的特殊计算。
程序可以实现复数、有理数的加、减、乘、除,可以实现矩阵的加法、减法和乘法运算,也可以实现集合的求交集、并集、子集的运算。
2.设计目的与要求:2.1设计目的达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2.2设计要求要求利用面向对象的方法以及C++的编程思想来完成系统的设计;要求在设计的过程中,建立清晰的类层次;在系统的设计中,至少要用到面向对象的一种机制。
3.系统分析与设计3.1主要知识点运算符重载增加了C++语言的可扩充性。
运算符的重载实际上就是一种函数调用的形式,可以用成员函数重载运算符,就是将运算符重载定义为一个类的成员函数的形式;也可以用友元函数重载。
用友元重载运算符的友元函数是独立于类以外的一般函数。
3.2关键技术程序中每一种数据类型用一个类来实现,共设计了4个类。
复数类complex,矩阵类matrix,有理数类rational以及集合类set。
每一种类都定义了相应的运算符重载函数。
具体定义如下所示:(1)类complex类complex中,成员变量image表示虚部,real表示实部。
成员函数print()用来显示数据。
运算符重载函数都是用友元函数来实现的。
分别重载+、-、*、/运算符。
(2)类matrix类matrix中,成员变量elems用来存放矩阵的所有元素,rows表示矩阵的行,cols表示矩阵的列。
成员函数SetElems()用来给矩阵中的每一个元素赋值,Disp()用来显示矩阵中的所有元素。
其它友元函数分别重载+、-、*、/运算符。
(3)类rational类rational中,有两个成员变量:denominator用来表示有理数的分母,numerator表示有理数的分子。
有理数成员函数print()用来显示有理数,optimization()用来优化有理数函数。
友元函数real()用来将有理数转换为实数,其它友元函数分别重载+、-、*、/运算符。
(4)类set类set中,有两个成员变量:elems用来存储集合中的元素,card表示集合中元素的个数。
成员函数print()用来输出集合中的元素,additem()用来给集合增加元素。
友元函数分别重载了&、==、!=、+、*、<、<=运算符。
程序中的运算符重载函数都用友元函数来实现。
①类complex的友元函数复数的表达形式为a+bi,对复数进行运算符重载不像对一般书进行运算那样简单,它的运输方法如下:加法:(a+bi)+(c+di)=(a+c)+(b+d)i减法:(a+bi)-(c+di)=(a-c)+(b-d)i乘法:(a+bi)*(c-di)=(ac-bd)+(ad+bc)i除法:(a+bi)/(c+di)=((a+bi)*(c-di))/(c2+d2)重载函数将以上算法用在了函数中。
②类matrix的友元函数矩阵类的赋值,实质上是给二维数组赋值;矩阵相加减就是两个行数列数相同的二维数组相加减;二维数组相乘,其实就是两个二维数组,其中一个的行数等于另一个的列数,按矩阵相乘的法则进行计算。
③类rational的友元函数对有理数类进行的操作有下面几种:有理数相加:当两个有理数a/b和c/d相加时,可得到这样的算式:a/b+c/d=(a*d+b*c)/(b*d)有理数相减:当两个有理数a/b和c/d相减时,得到的结果是:分子:a*d-b*c分母:b*d有理数相乘:当两个有理数a/b和c/d相乘时,得到的结果是:分子:a*c分母:b*d有理数相除:当两个有理数a/b和c/d相除时,得到的结果是:分子:a*d分母:b*c每次得到结果时,都需要对有理数进行优化。
④类set的友元函数集合类的运算符重载操作主要有以下几种:判定某一元素是否属于集合:此操作用重载运算符函数&实现,返回值只有两种情况true或者false,取bool类型。
判断两个集合是否相等:判定两个集合是否相等,需要看两个集合中所包含的元素是否相同,并且不管顺序如何。
用重载运算符==来实现。
判断两个集合是否不等:是相等操作的取反,用!=来实现两个集合的交集:即求出两个集合中的公共元素,用运算符*实现。
两个个集合的并集:即两个集合相合并,合并以后去掉重复的元素,用运算符+来实现。
判定一个集合是否是另一个集合的子集:用运算符<=来实现判定一个集合是否是另一个集合的纯子集:用运算符<实现3.3基本功能要求(1)功能选择可以用菜单来实现例如:请选择您的计算内容:1.复数计算2.有理数计算3.矩阵计算4.集合计算0.退出用户通过输入不同的数字进入不同的菜单。
次级菜单主要显示本程序的功能,主要的功能有加法、减法、乘法和除法以及集合的求交集、求并集、求子集。
(2)运行时给出明确的提示信息。
比如,输入一个什么类型的数据。
根据用户的输入计算输出结果。
由于数据类型比较多,可以一次输入第一个复数的实部,第一个复数的虚部,再输入第二个复数的实部、虚部。
矩阵运算需要先输入矩阵的行数和列数,然后依次输出矩阵的第一行第一列的元素、第一行第二列的元素等等,依次类推。
有理数运算需要一次输入有理数的分子、分母。
集合运算需要输入集合的元素个数,然后依次输入集合中的每一个元素。
4.系统总体设计(确定程序功能模块)本程序的功能结构如1所示:图1程序功能结构图5.源程序代码/**************************************************************** *************/// complex.h: interface for the complex class.#include<stdlib.h>class complex{public:void print();complex();complex(float r,float i){real= r;image= i;}virtual ~complex();friend complex operator + (complex a,complex b);friend complex operator - (complex a,complex b);friend complex operator * (complex a,complex b);friend complex operator / (complex a,complex b);private:float image;float real;};/**************************************************************** *************/// rational.h: interface for the rational class.class rational{public:void print(); //输出函数rational(int x=0,int y=0);virtual ~rational();friend rational operator + (rational num1,rational num2); //重载运算符+friend rational operator - (rational num1,rational num2); //重载运算符-friend rational operator * (rational num1,rational num2); //重载运算符*friend rational operator / (rational num1,rational num2); //重载运算符/friend bool operator ==(rational num1,rational num2); //重载运算符==friend double real(rational x); //声明转换函数private:void optimization(); //优化有理数函数int denominator; //分母int numerator; //分子};/**************************************************************** *************/// matrix.h: interface for the matrix class.class matrix{public:void Disp(); //显示矩阵所有元素int matrix::operator ()(short row, short col); //重载运算符成员函数()void SetElem(short row,short col,int val); //将元素(row,col)设置为valmatrix();matrix(short r,short c){rows= r;cols= c;elems= new int[rows*cols];}virtual ~matrix();friend matrix operator +(matrix p,matrix q); //重载运算符+friend matrix operator -(matrix p,matrix q); //重载运算符-friend matrix operator *(matrix p,matrix q); //重载运算符×private:int * elems; //存放矩阵的所有元素short cols; //矩阵的列short rows; //矩阵的行};/**************************************************************** *************/// set.h: interface for the set class.#include <iostream.h>//enum bool {false,true};enum errcode {noerr,overflow};//定义集合类class set{public:void print(); //显示输出集合元素set(){card=0;}virtual ~set();errcode additem(int); //增加集合元素friend bool operator &(int,set); //声明重载运算符&,判断某一整数是否属于某一集合friend bool operator ==(set,set); //声明重载运算符==,判断两个集合是否相等friend bool operator !=(set,set); //声明重载运算符!=,判断两个集合是否不等friend set operator *(set,set); //声明重载运算符*,求两个集合的交friend set operator +(set,set); //声明重载运算符+,求两个集合的并friend bool operator <(set,set); //声明重载运算符<,判断某一集合是否为另一集合的纯子集friend bool operator <=(set,set); //声明重载运算符<=,判断某一集合是否为另一集合的子集private:int elems[16];int card;};/**************************************************************** *************/// complex.cpp: implementation of the complex class.#include <iostream.h>#include "complex.h"complex::complex(){}complex::~complex(){}/**************************************************************** *************//*函数名称:print功能描述:显示复数修改记录:*/void complex::print(){cout<<real;if(image>0)cout<<"+";if(image!=0)cout<<image<<"i\n";}/**************************************************************** *************//*函数名称:operator +功能描述:显示复数修改记录:*/complex operator + (complex a,complex b){complex temp;temp.real= a.real +b.real ;temp.image= a.image +b.image ;return temp;}/**************************************************************** *************//*函数名称:operator -功能描述:显示复数修改记录:*/complex operator - (complex a,complex b){complex temp;temp.real= a.real -b.real ;temp.image= a.image -b.image ;return temp;}/**************************************************************** *************//*函数名称:operator *功能描述:显示复数修改记录:*/complex operator * (complex a,complex b){complex temp;temp.real= a.real *b.real -a.image *b.image ;temp.image =a.real *b.image +a.image *b.real ;return temp;}/**************************************************************** *************//*函数名称:operator /功能描述:显示复数修改记录:*/complex operator / (complex a,complex b){complex temp;float tt;tt=1/(b.real *b.real +b.image *b.image );temp.real =(a.real *b.real +a.image *b.image )*tt;temp.image =(b.real *a.image -a.real *b.image )*tt;return temp;}/**************************************************************** *************/// rational.cpp: implementation of the rational class.#include <math.h>#include <iostream.h>#include "rational.h"rational::rational(int x,int y){numerator= x;denominator= y;optimization(); //有理数优化}rational::~rational(){}/**************************************************************** *************//*函数名称:optimization功能描述:定义有理数优化函数修改记录:*/void rational::optimization(){int gcd;if(numerator==0) //如果分子为零,则分母为1后返回{denominator= 1;return;}//取分子分母中较小的数作为公约数极限gcd=(abs(numerator)>abs(denominator))?abs(numerator):abs(denominator);if(gcd==0)return; //若为0,则返回for(int i= gcd;i>1;i--) //用循环找最大公约数if((numerator%i==0)&& (denominator%i==0))break;numerator/=i; //i为最大公约数,将分子分母整除它,重新赋值denominator/=i;//若分子分母均为负数,则结果为正if(numerator<0 && denominator<0){numerator= -numerator;denominator= -denominator;}//若分子分母只有一个为负数,则调整为分子取负,分母取正else if(numerator<0 || denominator<0){numerator= -abs(numerator);denominator=abs(denominator);}}/**************************************************************** *************//*函数名称:print功能描述:显示复数修改记录:*/void rational::print(){cout<<numerator;if(numerator!=0 && denominator!=1)cout<<"/"<<denominator<<"\n";elsecout<<"\n";}/**************************************************************** *************//*函数名称:operator +功能描述:重载运算符+修改记录:*/rational operator + (rational num1,rational num2){rational temp;temp.denominator =num1.denominator *num2.denominator ;temp.numerator = num1.numerator *num2.denominator+num1.denominator *num2.numerator ;temp.optimization ();return temp;}/**************************************************************** *************//*函数名称:operator -功能描述:重载运算符-修改记录:*/rational operator - (rational num1,rational num2){rational temp;temp.denominator =num1.denominator *num2.denominator ;temp.numerator = num1.numerator *num2.denominator-num1.denominator *num2.numerator ;temp.optimization ();return temp;}/**************************************************************** *************//*函数名称:operator *功能描述:重载运算符*修改记录:*/rational operator * (rational num1,rational num2){rational temp;temp.denominator =num1.denominator *num2.denominator ;temp.numerator = num1.numerator *num2.numerator ;temp.optimization ();return temp;}/**************************************************************** *************//*函数名称:operator /功能描述:重载运算符/修改记录:*/rational operator / (rational num1,rational num2){rational temp;temp.denominator =num1.denominator *num2.numerator ;temp.numerator = num1.numerator *num2.denominator ;temp.optimization ();return temp;}/**************************************************************** *************//*函数名称:operator ==功能描述:重载运算符==修改记录:*/bool operator ==(rational num1,rational num2){if(num1.numerator ==num2.numerator && num1.denominator==num2.denominator )return true;elsereturn false;}/**************************************************************** *************//*函数名称:print功能描述:声明转换函数,将有理数对象转换为实数修改记录:*/double real(rational x){return(double(x.numerator ))/(double(x.denominator ));}/**************************************************************** *************/// matrix.cpp: implementation of the matrix class.#include <iostream.h>#include <iomanip.h>#include "matrix.h"matrix::matrix(){}matrix::~matrix(){}/**************************************************************** *************//*函数名称: matrix::operator ()(short row, short col)功能描述:重载运算符成员函数修改记录:*/int matrix::operator ()(short row, short col){if(row>=1 && row<=rows && col>=1 && col<=cols)return elems[(row-1)*cols + (col-1)];elsereturn 0;}/**************************************************************** *************//*函数名称: matrix::SetElem(short row, short col,int val)功能描述:将元素(row,col)设置为val修改记录:*/void matrix::SetElem(short row, short col,int val){if(row>=1 && row<=rows && col>=1 && col<=cols)elems[(row-1)*cols+(col-1)]= val;}/**************************************************************** *************//*函数名称: matrix::Disp()功能描述:显示矩阵元素修改记录:*/void matrix::Disp(){for(int row=1;row<=rows;row++){for(int col=1;col<=cols;col++)cout<<setw(2)<<(*this)(row,col)<<" ";cout<<endl;}}/**************************************************************** *************//*函数名称: operator +(matrix p,matrix q)功能描述:重载运算符+修改记录:*/matrix operator +(matrix p,matrix q){matrix m(p.rows,p.cols);if(p.rows!=q.rows || p.cols!=q.cols)return m;for(int r=1;r<=p.rows;r++)for(int c=1;c<=p.cols;c++)m.SetElem(r,c,p(r,c)+q(r,c));return m;}/**************************************************************** *************//*函数名称: operator -(matrix p,matrix q)功能描述:重载运算符-修改记录:*/matrix operator -(matrix p,matrix q){matrix m(p.rows,p.cols);if(p.rows!=q.rows || p.cols!=q.cols)return m;for(int r=1;r<=p.rows;r++)for(int c=1;c<=p.cols;c++)m.SetElem(r,c,p(r,c)-q(r,c));return m;}/**************************************************************** *************//*函数名称: operator *(matrix p,matrix q)功能描述:重载运算符*修改记录:*/matrix operator *(matrix p,matrix q)matrix m(p.rows,p.cols);if(p.cols!=q.rows)return m;for(int r=1;r<=p.rows;r++)for(int c=1;c<=p.cols;c++){int s=0;for(int i=1;i<=p.cols;i++)s+=p(r,i)*q(i,c);m.SetElem(r,c,s);}return m;}/**************************************************************** *************/// set.cpp: implementation of the set class.#include "set.h"set::~set(){}/**************************************************************** *************//*函数名称:print功能描述:显示复数修改记录:*/void set::print(){cout<<"{";for(int i=0;i<card-1;i++)cout<<elems[i]<<",";if(card>0)cout<<elems[card-1]<<"}\n";}/**************************************************************** *************//*函数名称:additem功能描述:增加集合元素修改记录:*/errcode set::additem(int elem)for(int i=0;i<card;i++)if(elems[i]==elem)return noerr;if(card<16){elems[card++]=elem;return noerr;}elsereturn overflow;}/**************************************************************** *************//*函数名称:operator &功能描述:声明重载运算符&,判断某一整数是否属于某一集合修改记录:*/bool operator &(int elem,set set1){for(int i=0;i<set1.card ;++i)if(set1.elems[i]==elem)return true;return false;}/**************************************************************** *************//*函数名称:operator ==功能描述:声明重载运算符==,判断两个集合是否相等修改记录:*/bool operator ==(set set1,set set2){if(set1.card !=set2.card ) //两个集合个数不等,必不相等return false;for(int i=0;i<set1.card;i++)if(!(set1.elems [i]& set2)) //调用&定义return false;return true;}/**************************************************************** *************//*函数名称:operator !=功能描述:声明重载运算符!=,判断两个集合是否不等修改记录:*/bool operator !=(set set1,set set2){if(set1== set2)return false;elsereturn true;}/**************************************************************** *************//*函数名称:operator *功能描述:声明重载运算符*,求两个集合的交修改记录:*/set operator *(set set1,set set2){set res;for(int i=0;i<set1.card ;i++)for(int j=0;j<set2.card ;j++)if(set1.elems [i]==set2.elems [j]){res.elems [res.card ++]= set1.elems [i];break;}//取set1中的每一个元素判断是否属于set2,若属于则加入到res中return res;}/**************************************************************** *************//*函数名称:operator +功能描述:声明重载运算符+,求两个集合的并修改记录:*/set operator +(set set1,set set2){set res=set1;for(int i=0;i<set2.card ;i++)res.additem (set2.elems [i]); //将set2中的元素追加到res中return res;}/**************************************************************** *************//*函数名称:operator <功能描述:声明重载运算符<,判断某一集合是否为另一集合的纯子集修改记录:*/bool operator <(set set1,set set2){if(set1.card<set2.card && set1<=set2)return true;elsereturn false;}/**************************************************************** *************//*函数名称:operator <=功能描述:声明重载运算符<=,判断某一集合是否为另一集合的子集修改记录:*/bool operator <=(set set1,set set2){if(set1.card >set2.card )return false;for(int i=0;i<set1.card ;i++)if(!(set1.elems [i] & set2))return false;return true;}/**************************************************************** *************/#include <iostream.h>#include "matrix.h"#include "complex.h"#include "rational.h"#include "set.h"void jiemian();void tuichu();void complexcompute();void rationalcompute();void matrixcompute();void setcompute();/**************************************************************** ********//* main函数*//**************************************************************** ********/int main(){jiemian();return 0;}/**************************************************************** ********//* 主界面函数,实现了界面及函数调用*//**************************************************************** ********/void jiemian(){int i;cout<<endl<<endl;cout<<"---------------------------------------------------------------"<<endl;cout<<"**"<<endl;cout<<" 欢迎进入用运算符重载实现特殊计算器程序"<<endl;cout<<"**"<<endl;cout<<"----------------------------------------------------------------"<<endl;while(i){cout<<endl<<endl;cout<<"请选择您的计算类型:"<<endl<<endl;cout<<" 1.复数计算;"<<endl;cout<<" 2.有理数计算;"<<endl;cout<<" 3.矩阵计算;"<<endl;cout<<" 4.集合计算;"<<endl;cout<<" 0.退出;"<<endl;cout<<"请选择按键(0-4):";cin>>i;cout<<endl;//判断输入,0退出if(i>=0 && i<=4){switch(i){case 1:complexcompute();break;case 2:rationalcompute();break;case 3:matrixcompute();break;case 4:setcompute();break;case 0:tuichu();break;}}else{cout<<"输入错误!";cout<<"重新输入"<<endl;}}}/**************************************************************** ********//* 退出函数*//**************************************************************** ********/void tuichu(){cout<<"---------------------------------------------------------------"<<endl;cout<<"**"<<endl;cout<<" 谢谢使用运算符重载实现特殊计算器程序,再见!"<<endl;cout<<"**"<<endl;cout<<"----------------------------------------------------------------"<<endl;exit(1);}/**************************************************************** ********//* 复数计算函数*//**************************************************************** ********/void complexcompute(){int j;cout<<"请选择您的复数计算内容:"<<endl<<endl;cout<<" 1.两个复数相加;"<<endl;cout<<" 2.两个复数相减;"<<endl;cout<<" 3.两个复数相乘;"<<endl;cout<<" 4.两个复数相除;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-4):";cin>>j;while(j){//判断输入,0退出if(j>=0 && j<=4){float r1,j1,r2,j2;cout<<"请输入第一个复数的实部:";cin>>r1;cout<<"请输入第一个复数的虚部:";cin>>j1;cout<<"请输入第二个复数的实部:";cin>>r2;cout<<"请输入第二个复数的虚部:";cin>>j2;complex c1(r1,j1);complex c2(r2,j2);complex c3;switch(j){//case1:复数相加case 1:c3=c1+c2;c1.print ();c2.print ();c3.print ();break;case 2:c3=c1-c2;c1.print ();c2.print ();c3.print ();break;case 3:c3=c1*c2;c1.print ();c2.print ();c3.print ();break;case 4:c3=c1/c2;c1.print ();c2.print ();c3.print ();break;}}elsecout<<"按键错误,请重新选择!"<<endl;cout<<endl;cout<<"请选择您的复数计算内容:"<<endl<<endl;cout<<" 1.两个复数相加;"<<endl;cout<<" 2.两个复数相减;"<<endl;cout<<" 3.两个复数相乘;"<<endl;cout<<" 4.两个复数相除;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-4):";cin>>j;cout<<endl;}}/**************************************************************** ********//* 有理数计算函数*//**************************************************************** ********/void rationalcompute(){int j;cout<<"请选择您的有理数计算内容:"<<endl<<endl;cout<<" 1.两个有理数相加;"<<endl;cout<<" 2.两个有理数相减;"<<endl;cout<<" 3.两个有理数相乘;"<<endl;cout<<" 4.两个有理数相除;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-4):";cin>>j;cout<<endl;while(j){//判断输入,0退出if(j>=0 && j<=4){int r1,j1,r2,j2;cout<<"请输入第一个有理数的分子:";cin>>r1;cout<<"请输入第一个有理数的分母:";cin>>j1;cout<<"请输入第二个有理数的分子:";cin>>r2;cout<<"请输入第二个有理数的分母:";cin>>j2;rational c1(r1,j1);rational c2(r2,j2);rational c3;switch(j){//case1:有理数相加case 1:c3=c1+c2;c1.print ();c2.print ();c3.print ();break;case 2:c3=c1-c2;c1.print ();c2.print ();c3.print ();break;case 3:c3=c1*c2;c1.print ();c2.print ();c3.print ();break;case 4:c3=c1/c2;c1.print ();c2.print ();c3.print ();break;}}elsecout<<"按键错误,请重新选择!"<<endl;cout<<endl;cout<<"请选择您的有理数计算内容:"<<endl<<endl;cout<<" 1.两个有理数相加;"<<endl;cout<<" 2.两个有理数相减;"<<endl;cout<<" 3.两个有理数相乘;"<<endl;cout<<" 4.两个有理数相除;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-4):";cin>>j;cout<<endl;}}/**************************************************************** ********//* 矩阵计算函数*//**************************************************************** ********/void matrixcompute(){int j;cout<<"请选择您的矩阵计算内容:"<<endl<<endl;cout<<" 1.两个矩阵相加;"<<endl;cout<<" 2.两个矩阵相减;"<<endl;cout<<" 3.两个矩阵相乘;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-3):";cin>>j;cout<<endl;while(j){//判断输入,0退出if(j>=0 && j<=3){int r1,j1,r2,j2,val;cout<<"请输入第一个矩阵的行数:";cin>>r1;cout<<"请输入第一个矩阵的列数:";cin>>j1;cout<<"请输入第二个矩阵的行数:";cin>>r2;cout<<"请输入第二个矩阵的列数:";cin>>j2;matrix c1(r1,j1);matrix c2(r2,j2);matrix c3;cout<<"请输入第一个矩阵的元素:"<<endl;for(int m=1;m<=r1;m++)for(int n=1;n<=j1;n++){cout<<"第"<<m<<"行"<<n<<"列:";cin>>val;c1.SetElem (m,n,val);}c1.Disp();cout<<"请输入二个矩阵的元素:"<<endl;for(int h=1;h<=r2;h++)for( int k=1;k<=j2;k++){cout<<"第"<<h<<"行"<<k<<"列:";cin>>val;c2.SetElem (h,k,val);}c2.Disp();switch(j){//case1:矩阵相加case 1:c3=c1+c2;cout<<"第一个矩阵为:"<<endl;c1.Disp();cout<<"第二个矩阵为:"<<endl;c2.Disp();cout<<"第三个矩阵为:"<<endl;c3.Disp();break;case 2:c3=c1-c2;cout<<"第一个矩阵为:"<<endl;c1.Disp();cout<<"第二个矩阵为:"<<endl;c2.Disp();cout<<"第三个矩阵为:"<<endl;c3.Disp();break;case 3:c3=c1*c2;cout<<"第一个矩阵为:"<<endl;c1.Disp();cout<<"第二个矩阵为:"<<endl;c2.Disp();cout<<"第三个矩阵为:"<<endl;c3.Disp();break;}}elsecout<<"按键错误,请重新选择!"<<endl;cout<<endl;cout<<"请选择您的矩阵计算内容:"<<endl<<endl;cout<<" 1.两个矩阵相加;"<<endl;cout<<" 2.两个矩阵相减;"<<endl;cout<<" 3.两个矩阵相乘;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-3):";cin>>j;cout<<endl;}}/**************************************************************** ********//* 集合计算函数*//**************************************************************** ********/void setcompute(){int j;cout<<"请选择您的集合计算内容:"<<endl<<endl;cout<<" 1.两个集合的交集;"<<endl;cout<<" 2.两个集合的并集;"<<endl;cout<<" 3.一个集合是否为另一个集合的子集;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-3):";cin>>j;cout<<endl;while(j){//判断输入,0退出if(j>=0 && j<=3){int r1,r2,val;set set1,set2,set3;cout<<"请输入第一个集合的元素个数:";cin>>r1;cout<<"请输入第二个集合的元素个数:";cin>>r2;cout<<"请输入第一个集合的元素:"<<endl;for(int n=1;n<=r1;n++){cout<<"第"<<n<<"个元素为:";cin>>val;set1.additem (val);}set1.print ();cout<<"请输入二个集合的元素:"<<endl;for(n=1;n<=r2;n++){cout<<"第"<<n<<"个元素为:";cin>>val;set2.additem (val);}set2.print ();switch(j){//case1:并集case 1:set3=set1*set2;cout<<"第一个集合为:"<<endl;set1.print ();cout<<"第二个集合为:"<<endl;set2.print ();cout<<"交集为:"<<endl;set3.print ();break;case 2:set3=set1+set2;cout<<"第一个集合为:"<<endl;set1.print ();cout<<"第二个集合为:"<<endl;set2.print ();cout<<"并集为:"<<endl;set3.print ();break;case 3:cout<<"第一个集合为:"<<endl;set1.print ();cout<<"第二个集合为:"<<endl;set2.print ();if(set1<set2)cout<<"第一个集合为第二个集合的子集!"<<endl;break;}}elsecout<<"按键错误,请重新选择!"<<endl;cout<<endl;cout<<"请选择您的集合计算内容:"<<endl<<endl;cout<<" 1.两个集合的交集;"<<endl;cout<<" 2.两个集合的并集;"<<endl;cout<<" 3.一个集合是否为另一个集合的子集;"<<endl;cout<<" 0.返回主界面;"<<endl;cout<<"请选择按键(0-3):";cin>>j;cout<<endl;}}6.运行结果程序运行时,首先出现主界面菜单,由用户进行功能选择,选择不同的数。