东北大学C++实验报告6
东北大学 c++实验报告 exercise6

Exercise 6 数组、指针与字符串班级:计算机1102班姓名:xxx学号:2011xxxx1实验目的(1)学习使用数组。
(2)学习字符串数据的组织和处理。
(3)学习标准C++库的使用。
(4)掌握指针的使用方法。
(5)练习通过Debug观察指针的内容及其所指的对象的内容(6)联系通过动态内存分配实现动态数组,并体会指针在其中的作用。
(7)分别使用字符数组和标准C++库练习处理字符串的方法。
2 实验要求(1)编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。
(2)使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
(3)编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
(4)使用string类定义字符串对象,重新实现上一小题。
(5)定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。
实现并测试这个类。
(6)定义包含5个元素的对象数组,每个元素都是Employee类型的对象。
(7)(选做)修改实验4中的选做实验中的people(人员)类。
具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。
其中“出生日期”定义为一个“日期”类内嵌对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
在测试程序中定义people类的对象数组,录入数据并显示。
3 程序代码及截图(1)矩阵转置1:代码:#include<iostream>using namespace std;void zhuanzhi(int array[3][3]);int main(){int array1[3][3];int i,j;cout<<"请输入一个3*3的矩阵,矩阵元素以空格分开:"<<endl;for(i=0;i<=2;i++){for(j=0;j<=2;j++){cin>>array1[i][j];}};cout<<"您所输入的矩阵为:"<<endl;for(j=0;j<=2;j++){ or(i=0;i<=2;i++){cout<<array1[j][i]<<ends;}cout<<endl;}zhuanzhi(array1);return 0;}void zhuanzhi(int array[3][3]){int i,j;int array2[3][3];for(i=0;i<=2;i++){for(j=0;j<=2;j++){array2[j][i]=array[i][j];}}cout<<"转置后的矩阵为:"<<endl;for(j=0;j<=2;j++){for(i=0;i<=2;i++){cout<<array2[j][i]<<ends;} cout<<endl;}}程序截图:(2)矩阵转置2:#include<iostream>using namespace std;void zhuanzhi(int *b){int i,j,t;for(i=0;i<3;i++){for(j=0;j<3;j++){t=*(b+i*3+j);*(b+i*3+j)=*(b+j*3+i);*(b+j*3+i)=t;}}}void main()int i,j;int *a=new int[3*3];cout<<"请输入一个3*3矩阵,矩阵元素用空格分开:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++){cin>>a[i*3+j];}}cout<<"输入的矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<a[i*3+j]<<" ";cout<<endl;}zhuanzhi(a);cout<<"转置后的矩阵是:"<<endl;for(j=0;j<3;j++){for(i=0;i<3;i++)cout<<a[i*3+j]<<" ";cout<<endl;}}程序截图:(3)字符串连接:①程序代码:#include<iostream>using namespace std;void main(){ char a[100],b[100],c[200];int i,j;cout<<"请输入两个字符串:";cin>>a;cin>>b;cout<<"两字符串连接后为:"<<endl;for(i=0;a[i]!='\0';i++)c[i]=a[i];for(j=0;b[j]!='\0';j++){c[i]=b[j];i++;}c[i]='\0';cout<<c<<endl;}②程序截图:(4)字符串连接2:①程序代码:#include<iostream>#include<string>using namespace std;void main(){string a,b,c;cout<<"请输入两个字符串:";cin>>a>>b;cout<<"这两个字符串连接后为:"; c=a+b;cout<<c<<endl;}程序截图:。
c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。
熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。
2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。
运用 switch 语句进行多分支选择,处理不同的情况。
利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。
3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。
掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。
4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。
实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。
5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。
掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。
6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。
了解共用体的概念和使用场景,比较结构体和共用体的区别。
四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。
c语言实验报告5篇

c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
c语言大实验报告

c语言大实验报告C 语言大实验报告一、实验目的本次 C 语言大实验的主要目的是通过实际的编程项目,深入巩固和应用 C 语言的基础知识,提高编程能力和解决实际问题的能力。
具体而言,包括熟练掌握数据类型、控制结构、函数、数组、指针等核心概念,并能够运用它们构建较为复杂的程序逻辑。
二、实验要求1、完成一个具有一定规模和功能的 C 语言程序,例如学生成绩管理系统、图书管理系统等。
2、程序应具备良好的代码结构和可读性,遵循编程规范。
3、实现数据的输入、处理和输出功能,能够进行数据的存储和查询。
4、对程序进行充分的测试,确保其稳定性和正确性。
三、实验环境1、操作系统:Windows 102、编程工具:Visual Studio 2019四、实验内容本次实验我选择开发一个学生成绩管理系统,该系统能够实现学生成绩的录入、查询、修改、删除以及成绩统计分析等功能。
(一)数据结构设计为了存储学生的信息,我定义了一个结构体`Student` ,包含学生的学号、姓名、各科成绩等字段:```ctypedef struct {int id;char name50;float score3; //假设存储三门课程的成绩} Student;```同时,使用一个动态数组来存储多个学生的信息:```cStudent students;int numStudents = 0; //记录学生数量```(二)功能模块实现1、成绩录入通过循环让用户输入学生的信息,包括学号、姓名和各科成绩,并将其添加到动态数组中:```cvoid inputStudent(){Student newStudent;printf("请输入学号:");scanf("%d",&newStudentid);printf("请输入姓名:");scanf("%s", newStudentname);printf("请输入三门课程的成绩:");for (int i = 0; i < 3; i++){scanf("%f",&newStudentscorei);}students =(Student )realloc(students, (numStudents + 1) sizeof(Student));studentsnumStudents++= newStudent;}```2、成绩查询根据用户输入的学号,在动态数组中查找对应的学生信息并输出:```cvoid queryStudent(){int id;printf("请输入要查询的学号:");scanf("%d",&id);for (int i = 0; i < numStudents; i++){if (studentsiid == id) {printf("学号:%d\n", studentsiid);printf("姓名:%s\n", studentsiname);printf("成绩:");for (int j = 0; j < 3; j++){printf("%2f ", studentsiscorej);}printf("\n");return;}printf("未找到该学号的学生信息!\n");}```3、成绩修改先查询要修改的学生信息,然后让用户输入修改后的成绩:```cvoid modifyStudent(){int id;printf("请输入要修改的学号:");scanf("%d",&id);for (int i = 0; i < numStudents; i++){if (studentsiid == id) {printf("请输入修改后的三门课程成绩:");for (int j = 0; j < 3; j++){scanf("%f",&studentsiscorej);printf("修改成功!\n");return;}}printf("未找到该学号的学生信息!\n");}```4、成绩删除根据学号删除指定的学生信息,并重新调整动态数组:```cvoid deleteStudent(){int id;printf("请输入要删除的学号:");scanf("%d",&id);int found = 0;for (int i = 0; i < numStudents; i++){if (studentsiid == id) {found = 1;for (int j = i; j < numStudents 1; j++){studentsj = studentsj + 1;}numStudents;students =(Student )realloc(students, numStudents sizeof(Student));printf("删除成功!\n");return;}}if (!found) {printf("未找到该学号的学生信息!\n");}}```5、成绩统计分析计算所有学生的平均成绩,并输出最高和最低成绩:```cvoid statistics(){float totalScore = 0;float maxScore = students0score0;float minScore = students0score0;for (int i = 0; i < numStudents; i++){float sum = 0;for (int j = 0; j < 3; j++){sum += studentsiscorej;}totalScore += sum / 3;if (sum / 3 > maxScore) {maxScore = sum / 3;}if (sum / 3 < minScore) {minScore = sum / 3;}}printf("平均成绩:%2f\n", totalScore / numStudents);printf("最高成绩:%2f\n", maxScore);printf("最低成绩:%2f\n", minScore);}```(三)主函数在主函数中,通过菜单的方式让用户选择要执行的操作:```cint main(){int choice;while (1) {printf("1、录入成绩\n");printf("2、查询成绩\n");printf("3、修改成绩\n");printf("4、删除成绩\n");printf("5、成绩统计分析\n");printf("6、退出\n");printf("请选择操作:");scanf("%d",&choice);switch (choice) {case 1:inputStudent();break;case 2:queryStudent();break;case 3:modifyStudent();break;case 4:deleteStudent();break;case 5:statistics();break;case 6:free(students);return 0;default:printf("无效的选择,请重新输入!\n");}}return 0;}```五、实验结果经过多次测试,本系统能够稳定运行,实现了预期的各项功能。
(完整版)c实验报告

(完整版)c实验报告实验名称: C语言实验报告实验内容:本次实验主要针对C语言编程进行实验。
通过实验的设计和完成,检验和加深对C语言的理解和应用能力。
实验步骤:1. 实验准备在开始实验之前,需要准备好以下必要的工具和材料:- 计算机- C语言编译器(比如GCC、Clang等)- 文本编辑器(比如Notepad++、Sublime Text等)2. 实验环境搭建在计算机上安装C语言编译器,并配置好相应的环境变量。
这样可以在终端或命令提示符中执行相关的C程序。
3. 编写实验代码根据实验要求,使用文本编辑器编写C语言代码。
根据实验的要求和功能需求,合理设计和组织代码结构,包括头文件的引用、变量的定义、函数的声明和定义等。
4. 编译和运行代码在命令行或终端中使用编译器对编写好的C语言代码进行编译,并生成可执行文件。
编译命令的具体格式根据不同的编译器而有所差异,但一般形式如下:```gcc -o output_file input_file.c```其中,"output_file"表示生成的可执行文件名,"input_file.c"表示待编译的C源代码文件名。
编译成功后,通过命令行或终端执行生成的可执行文件,检查程序的运行结果是否符合预期。
5. 实验结果分析根据实际运行结果,对实验数据进行分析和归纳。
可以通过输出结果、打印特定信息或观察程序的行为来判断程序是否正确地实现了预期的功能。
6. 实验总结在实验报告中对本次实验的过程、方法、结果进行总结,并提出实验中遇到的问题和解决方法。
同时,对所学习的C语言相关知识点进行总结和归纳,以加深对相关知识的理解和记忆。
实验结果:通过本次实验的设计和实现,我成功完成了对C语言编程的实验,达到了预期的目标。
通过编写实际的代码,我巩固了对C语言语法和基本概念的理解。
在实验过程中,我遇到了一些问题,通过查阅资料和与同学的讨论,我成功解决了这些问题。
c语言实习报告3篇

c语言实习报告3篇c语言实习报告1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的.学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
东北大学C语言实验报告要求及模板模版

C语言上机实验要求:1、每次实验满分10分,每次试验按要求写实验报告。
2、每次把实验报告提交到LINTIAN8@信箱里。
3、上实验课不得迟到、早退(扣2分),旷课本次实验0分记。
4、事假必须有假条,否则一律按旷课处理。
5、上实验课不得做与实验无关的事情,否则酌情扣分或取消上实验课资格。
6、实验报告不得抄袭,发现实验报告雷同者,一律按0分记。
参考看网站:1)、/ 上-->教学资源中心-----〉资源共享课-----〉工学--------〉高级语言程序设计2)、/cxsj/ 上------〉上机实践(教学视频1,2,3)----〉程序实例C语言程序运行过程四个步骤:1、编辑(EDIT)2、编译(COMPILE)3、链接(BUILD)4、运行(RUN)具体操作步骤:启动VisualC++6.0-->文件--〉新建(new)-->文件---〉C++Sourcefile-->添加文件名(必须后缀.C)--->添加存放文件目录-->编辑文件-->编译文件--->链接文件--->运行文件--->看结果.C语言程序设计实验报告1实验目的2实验内容3算法描述流程图4源程序5测试数据6运行结果7出现问题及解决方法8实验心得C语言程序设计实验报告1实验目的1.熟练掌握if、if...else、if...else if语句,掌握if语句中的嵌套关系和匹配原则,利用if语句实现分支选择结构。
2.熟练掌握for语句格式及使用方法3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧.进一步学习调试程序,掌握语法错误和逻辑的检查方法。
4.掌握C函数的定义方法,函数的调用方法,参数说明以及返回值,掌握实参与形参的对应关系以及参数之间的“值传递”的方式。
5.在编程的过程中加深函数调用的设计思想。
2实验内容输入一个数值,计算并输出该数值以内最大的10个素数以及它们的和.要求:(1) 在程序内部加必要的注释.(2)要对小于该数以内不够10个素数的情况进行处理.(3)输出的形式为:素数1+素数2+...+素数10=总和值.3算法描述流程图主函数流程图:判断素数函数流程图:4源程序int a(int n) /*设计一个求素数的函数*/{ int i;for(i=2;i<=n/2;i++)if(n%i==0) return 0; /*不是素数则返回0*/return 1; /*是素数则返回1*/}main(){int i=1,n,sum=0,k;printf(“Input a number:”);scanf("%d",&k); /*输入一个整数*/for(n=k;n>1;n-=1){if(a(n)) /*调用a(int n)函数,判断是否为素数*/ {if(i==1) printf("%d",n);else printf("+%d",n); /*是素数以和的形式输出*/sum+=n; /*是素数则求和*/i++;}if(i==11) break; /*当i>10时就退出循环*/}printf("=%d\n",sum);if(i<=10) printf("not shuchu.\n"); /*当i〈10时,程序结束*/}5测试数据测试数据为10,100,1000.6运行结果当测试数据为10时:当测试数据为100时:当测试数据为1000时:7出现问题及解决方法1)在本实验中,需按要求的格式输出“素数1+素数2+...+素数10=总和值.”,因采用循环for(n=k;n>1;n-=1){if(a(n)){if(i==1) printf("%d",n);else printf("+%d",n);sum+=n;i++;}if(i==11) break;}printf("=%d\n",sum);从而使输出结果符合题目要求;2)要对不足10个的素数进行处理,因而要加入“if(i<=10) printf("not shuchu.\n");”8实验心得通过该实验,我对分支(if,if``else,if```else if```)和循环结构(for,while,do```while)的几种用法更加熟练,并掌握了函数的定义与调用,参数说明以及返回值使用。
东北大学C语言课程设计程序实践报告

C语言程序设计报告工资管理系统学生姓名:学生系别:计算机科学与技术学生班级:日期:20xx年x月x日程序实践报告【运行环境】软件:Windows、Microsoft Visual C++ 6.0PC一台【实践要求】工资信息包括:编号、姓名、基本工资、岗位工资、实发工资、房改补助、奖励、公积金、扣税使之提供以下功能:(1)用户登陆。
(2)背景音乐。
(3)工资信息录入功能。
(4)工资信息浏览功能。
(5)工资信息查询功能。
(6)工资信息删除功能。
(7)工资信息修改功能。
(8)工资信息排序功能。
【概要设计】【存储设计】程序数据存取主要由两个文件:pay.txt、admin.txt组成。
admin.txt :主要存储用户名和密码pay.txt :职工信息。
包括编号、姓名、基本工资、岗位工资、实发工资、房改补助、奖励、公积金、扣税【头函数】typedef struct pay{long num;short month;char name[20];float should_pay,rebate,actual_pay,post_wage,merit_pay,house_subsidy,prize,reserve_fund;struct pay *next;}PAY;定义了一个包含编号、姓名、基本工资、岗位工资、实发工资、房改补助、奖励、公积金、扣税变量的结构体。
【模块功能】1、void menu();z这个是菜单,用来提示用户选择需要的功能。
打印出各种选项可供用户选择。
2、PAY *input();y这是用来新建职工信息。
包括编号、姓名、基本工资、岗位工资、实发工资、房改补助、奖励、公积金、扣税。
用预先定义的结构体和指针链表来完成。
3、void output();m这是用来输出职工信息。
可以按照各种关键字排序输出。
包括按编号输出、按基本工资输出、按岗位工资输出、按实发工资输出。
用预先定义的结构体和指针链表来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六
1.实验要求
(1)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。
(2)定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。
观察虚函数的作用。
2. 实验内容及实验步骤
(1) 编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point&operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。
程序名:1ab8_1.cpp。
(2) 编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。
在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。
再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。
程序名:lab8_2.cpp。
3. 源程序
Lab8_1
#include<iostream>
using namespace std;
class Point{
public:
Point(int X,int Y): _x(X),_y(Y){}
Point operator++();
Point operator++(int);
Point operator--();
Point operator--(int);
void Putout() const;
private:
int _x,_y;
};
void Point::Putout() const{
cout<<"("<<_x<<","<<_y<<")"<<endl; }
Point Point:: operator++(){
_x++;
_y++;
return *this;
}
Point Point::operator++(int){
++_x;++_y;
return *this;
}
Point Point::operator--(){
_x--;
_y--;
return *this;
}
Point Point::operator--(int){
--_x;
--_y;
return *this;
}
int main(){
Point A(6,7);
cout<<"Point++: ";
(A++).Putout();
cout<<"++Point: ";
(++A).Putout();
cout<<"Point--: ";
(A--).Putout();
cout<<"--Point: ";
(--A).Putout();
return 0;
}
运行结果
Lab8_2
1)在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数。
#include<iostream>
using namespace std;
class Vehicle{
public:
void Run(){cout<<"基类Vehicle的Run函数调用"<<endl;}
void Stop(){cout<<"基类Vehicle的Stop函数调用"<<endl;}
};
class bicycle :public Vehicle
{
public:
void Run(){cout<<"派生类bicycle的Run函数调用"<<endl;}
void Stop(){cout<<"派生类bicycle的Stop函数调用"<<endl;}
};
class motorcar :public Vehicle
{
public:
void Run(){cout<<"派生类motorcar的Run函数调用"<<endl;}
void Stop(){cout<<"派生类motorcar的Stop函数调用"<<endl;}
};
class motorcycle :public bicycle,public motorcar
{
public:
void Run(){cout<<"派生类motorcycle的Run函数调用"<<endl;}
void Stop(){cout<<"派生类motorcycle的Stop函数调用"<<endl;}
};
int main(){
Vehicle V;
bicycle B;
motorcar M;
motorcycle Mc;
V.Run(); V.Stop();
B.Run(); B.Stop();
M.Run(); M.Stop();
Mc.Run(); Mc.Stop();
return 0;
}
运行结果
2)用vehicle类型的指针来调用这几个对象的成员函数。
#include<iostream>
using namespace std;
class Vehicle{
public:
virtual void Run(){cout<<"基类Vehicle的Run函数调用"<<endl;} virtual void Stop(){cout<<"基类Vehicle的Stop函数调用"<<endl;} };
class bicycle :virtual public Vehicle
{
public:
void Run(){cout<<"派生类bicycle的Run函数调用"<<endl;}
void Stop(){cout<<"派生类bicycle的Stop函数调用"<<endl;} };
class motorcar :virtual public Vehicle
{
public:
void Run(){cout<<"派生类motorcar的Run函数调用"<<endl;}
void Stop(){cout<<"派生类motorcar的Stop函数调用"<<endl;} };
class motorcycle :public bicycle,public motorcar
{
public:
void Run(){cout<<"派生类motorcycle的Run函数调用"<<endl;} void Stop(){cout<<"派生类motorcycle的Stop函数调用"<<endl;} };
void fun(Vehicle *p){
p->Run();
p->Stop();
}
int main(){
Vehicle V;
bicycle B;
motorcar M;
motorcycle Mc;
fun(&V);
fun(&B);
fun(&M);
fun(&Mc);
return 0;
}
运行结果
4.思考题
(1).函数类型operator 运算符(形参表)
{
函数体;
}
(2). friend 函数类型operator 运算符(形参表)
{
函数体;
}
(3).通过指向基类类型的指针和引用来调用对象的虚函数来实现。