C实验题
C语言程序设计 上机实验指导与习题 参考答案(第四版)

C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
C语言实验题目()

求两个数之和。
在两种情况下完成:①数据在程序内部定义变量时赋初值,或者通过赋值语句赋值。
②数据通过scanf( )函数输入。
静态输入:#include <stdio.h>void main(){int a=1,b=2,s;s=a+b;printf("这两个数的和是%d\n",s);}动态输入:#include <stdio.h>void main(){int a,b,s;printf("请您输入两个数:");scanf("%d,%d",&a,&b);s=a+b;printf("这两个数的和是%d\n",s);}设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。
要求用scanf 输入数据,输出计算结果。
#include <stdio.h>void main(){float r,h,l,s,sq,vz;float pi=3.1415926;printf("请输入圆的半径r,圆柱高h:");scanf("%f,%f",&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vz=pi*r*r*h;printf("圆的周长为l=%6.2f\n",l);printf("圆的面积为s=%6.2f\n",s);printf("圆柱的表面积为sq=%6.2f\n",sq);printf("圆柱的体积为vz=%6.2f\n",vz);}输入a、b、c三个整数,求出其中最大者,并连同三个源数据一起输出。
#include <stdio.h>int max(int x,int y,int z){int max;if(x>y){if(x>z)max=x;elsemax=z;}else{if(y>z)max=y;elsemax=z;}return(max);}void main(){int max(int x,int y,int z);int a,b,c,w;printf("请您输入三个整数:");scanf("%d,%d,%d",&a,&b,&c);printf("您输入的三个数是:%d,%d,%d\n",a,b,c);w=max(a,b,c);printf("这三个数中最大的是:%d\n",w);}给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
C语言程序设计实验三答案

实验三 选择结构程序设计一、实验目的与要求1. 理解C 语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。
2. 掌握利用if 结构实现选择结构的方法。
3. 掌握利用switch 结构实现多分支选择结构。
4. 结合程序掌握一些简单的算法,学习调试程序5. 实验4学时二、实验内容1.程序改错题改正下面程序中的错误。
输入实数x ,计算并输出下列分段函数f(x)的值(保留1位小数)。
)100(1=x x==)(x f y)100(≠x x输入输出示例1(改正后程序的运行结果)Enter x :100f )=输入输出示例2(改正后程序的运行结果)Enter x :23f )=源程序(有错误的程序)#include<>#include<>void main(void){double x;printf("Enter x: \n");scanf("=%f", x);if (x = 100) {y = 1/sqrt(x)}else (x != 100) {y = x;}printf("f(%.2f) = %.1f\n",x,y);}答:#include<>#include<>void main(void){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x=100)y = 1/sqrt(x);elsey= x;printf("f(%.2lf)=%.1lf\n",x,y);}2.一般编程题编程题1输入任意三个整数a,b,c ,求3个数中的最大值和最小值。
答:#include <>void main(){int a,b,c;printf("请输入三个整数:");scanf("%d %d %d",&a,&b,&c);if (a>=b)t=a,a=b,b=t;if (a>=c)t=a,a=c,c=t;if (b>=c)t=b,b=c,c=t;printf("最小值为:%d\n",a);printf("最大值为:%d\n",c);}编程题2输入x ,计算并输出下面分段函数f(x)的值(保留2位小数)。
C语言 题目及解答

if(a<c)
{t=c;c=a;a=t;}
if(b<c)
{t=c;c=b;b=t;}
printf("%d",b);
}
1036: C语言实验题——整数位(JSU-ZJJ)
输入一个不多于5位的正整数,要求:
输入
一行字符
输出
统计值
样例输入
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
样例输出
23 16 2 4
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char c;
编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。
1+1/2+ .... +1/n!
输出保留5位小数。
输入
输出
样例输入
5
样例输出
sum=1.71667
#include "stdio.h"
void main()
{scanf("%d",&a[i]);
s=a[i]+s;
}
b=s/10;
for(i=0;i<10;i++)
{
if(a[i]>b)
n=n+1;
}
printf("%d",n);
C程序设计实验补充题(循环结构)

北京建筑工程学院计算机教学与网络信息部C语言程序设计基础实验补充题——循环结构部分1.养兔子/acmhome/problemdetail.do?&method=showdetail&id=1063题目描述:一对成熟的兔子每月能且只能产下一对小兔子,每次都生一公一母,每只小兔子的成熟期是一个月,而成熟后的第二个月才开始生小兔。
某人领养了一对小兔子,一公一母,请问,第N个月以后,他将会得到多少对兔子。
输入:测试数据包括多组,每组一行,为整数n(1≤n≤90)。
输入以0结束。
输出:对应输出第n个月有几对兔子(假设没有兔子死亡现象,而且是一夫一妻制)。
样例输入:12样例输出:122.找零钱/acmhome/problemdetail.do?&method=showdetail&id=1068题目描述:我们知道人民币有1、2、5、10、20、50、100这几种面值。
现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。
比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。
输入:输入有多组,每组一行,为一个整合n。
输入以0结束。
输出:输出该面额有几种表示方法。
样例输入:14样例输出:13提示:如果我告诉你,这题是用暴力穷举的方法,你能通过吗?^_^3.漂亮菱形/acmhome/problemdetail.do?&method=showdetail&id=1069题目描述:*************************上面的菱形漂亮吗?现给出菱形的高度,要求你打印出相应高度的菱形,比如上面的菱形高度为7。
输入:测试数据包括多行,每行1个整数h,h为奇数,代表菱形的高度。
输入以0结束。
输出:输出每组对应的菱形。
样例输入:17样例输出:**************************4.统计1到N之间数字1的个数/acmhome/problemdetail.do?&method=showdetail&id=1163题目描述:N为正整数,计算从1到N的所有整数中包含数字1的个数。
数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)

数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)数据结构基础及深入及考试习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。
即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。
4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成(C)A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于(A)A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。
2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(E),删除一个元素需要移动的元素的个数为(A)。
A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。
”这个结论是(B)A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址(D)A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是(B)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是(A)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL7、非空的循环单链表head的尾结点P满足(C)A、p->ne某t==NULLB、p==NULLC、p->ne某t==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)A、O(1)B、O(n)C、O(n2)D、O(nlog2n)数据结构(第4版)习题及实验参考答案9、在一个单链表中,若删除p所指结点的后继结点,则执行(A)A、p->ne某t=p->ne某t->ne某t;B、p=p->ne某t;p->ne某t=p->ne某t->ne某t;C、p->ne某t=p->ne某t;D、p=p->ne某t->ne某t;10、在一个单链表中,若在p所指结点之后插入所指结点,则执行(B)A、->ne某t=p;p->ne某t=;B、->ne某t=p->ne某t;p->ne某t=;C、->ne某t=p->ne某t;p=;D、p->ne某t=;->ne某t=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点,则执行(C)A、->ne某t=p->ne某t;p->ne某t=;B、p->ne某t=->ne某t;->ne某t=p;C、q->ne某t=;->ne某t=p;D、p->ne某t=;->ne某t=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有1个前趋结点。
c语言作业
1、用下面的scanf函数输入数据,使a=10, b=20, c1='A', c2='a', x=1.5, y=-3.75, z=67.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f,%f", &a,&b,&c1,&c2,&x,&y,&z);2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字第三次作业1、有3个整数a,b,c,由键盘输入,输出其中最大的数。
2、有一个函数:x x<1y= 2x-1 1<=x<103x-11 x>=10写一段程序,输入x,输出y的值。
3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80-89分为B,70-79为C,60-69为D,60分以下为E。
4、给一个不多于5位的正整数,输出这个数是几位数。
第四次作业1、给一个不多于5位的正整数,要求:a.求出它是几位数;+b.分别输出每一位数字;c.按逆序输出各位数字,例如:原数为321,应输出123。
2、教材P112页第5.8题(if语句解法创建一个独立文件,switch语句解法创建一个独立文件第五次作业1、输入两个正整数m和n,求其最大公约数和最小公倍数。
(经典题)2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,并输出。
3、求s=a+aa+aaa+aaaa+....+(a...a)之值,其中a是一个数字,n表示a的位数。
1、输入两个字符串,使用指针p将两个字符串按次序复制到数组c中。
例:输入“zhe"和"jiang",将"zhejiang"保存在数组c中。
2023年中考人教化学一轮复习素质养成题第6单元 碳和碳的氧化物(含答案)
2023年中考人教化学一轮复习素质养成题第6单元碳和碳的氧化物含答案人教第6单元碳和碳的氧化物一、选择题。
1、下列关于碳单质的说法正确的是()A.金刚石是天然存在的最硬的物质,可用来切割玻璃B.石墨有金属光泽,有导电性,,所以是一种金属C.金刚石和石墨物理性质差异大是因为构成它们的原子不同D.金刚石、石墨都有润滑作用2、下列叙述错误的是()A.木炭与O2反应可生成CO2,也可生成COB.碳的化学性质很活泼C.木炭与O2生成CO的过程放出热量D.木炭与O2的反应是化合反应3、“中国芯”的主要材料是高纯度的单质硅,其结构类似于金刚石。
下列有关硅的说法正确的是()A.单质硅的硬度很大B.元素符号为SIC.硅是地壳中含量最多的元素D.单质硅由分子构成4、实验室选择制取气体的仪器时,不需要考虑的因素是()A.反应物的性质和状态B.所制气体的性质C.所制气体的颜色D.反应的条件5、实验室用下列装置制取气体,有关说法正确的是()A.装置①④组合可用于高锰酸钾制取氧气B.装置②中的小试管在实验过程中起液封的作用C.装置③用作实验室制取氢气的发生装置,优点是能控制反应速率D.装置⑤用于实验室收集二氧化碳,燃着的木条放在b端处验满6、下列有关化学实验操作的先后顺序正确的是()A.实验室制取二氧化碳时,先加稀盐酸,后加石灰石B.实验室制取二氧化碳时,先装药品,后检查装置的气密性C.组装制取氧气的实验装置时,先左后右、先下后上D.用氯酸钾制取氧气实验结束时,先熄灭酒精灯,后从水中移出导管7、生活中的下列做法不符合“低碳生活”理念的是()A.节约用电,随手关灯B.循环使用教科书C.不使用一次性木筷D.大量燃放鞭炮,增添节日气氛8、木炭还原氧化铜和一氧化碳还原氧化铜的实验装置如下图所示。
下列说法正确的是( )A.木炭、一氧化碳与氧化铜的反应都属于置换反应B.两个实验的相关反应中,只有碳元素的化合价发生改变C.两个实验中都可观察到黑色固体变红D.两个实验的操作中都要防止液体倒吸9、下列物质的性质与用途具有对应关系的是()A.干冰能溶解在水中,用于人工降雨B.氢气密度比空气小,可用于燃料C.石墨有导电性,用作干电池的电极D.稀盐酸受热易挥发,可用稀盐酸除水垢10、检验集气瓶中是否收集满二氧化碳可采用的方法是()A.加入紫色石蕊试液B.把燃着的木条放在集气瓶口C.加入石灰水D.把燃着的木条放在集气瓶内11、碳单质的用途与其化学性质有关的是()A.用石墨做干电池的电极B.用碳素笔书写档案文件C.用铅笔芯粉末使生锈的锁头容易开启D.用金刚石钻头钻凿岩石12、实验室制取CO2有以下几个步骤:①按装置图连接好仪器②向长颈漏斗中加入稀盐酸③向锥形瓶内加入块状石灰石④检查装置的气密性⑤收集反应生成的气体。
C语言实验题及参考答案
实验一1、计算整数各位数字之和(10 分)输入一个3位正整数,将其每一位的数字相加,输出和。
输入格式:输入一个3位正整数。
变量数据类型为unsigned。
输出格式:输出整数每一位相加后的整数和。
输入样例:输出样例:【参考答案】#include ""int main(){ unsigned int a,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;sum=ge+shi+bai;printf("%d\n",sum);return 0;}2、计算代数表达式(10 分)求:输入格式:输入角度x。
变量数据类型为double。
π为。
输出格式:输出y的值,精确到小数点后2位。
输入样例:输出样例:【参考答案】#include <>#include <>#define PIint main(){double x,y;scanf("%lf",&x);y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数(10 分)程序每次读入一个正3位数,然后输出按位逆序的数字。
注意:当输入的数字含有结尾的0时,输出不应带有前导的0。
比如输入700,输出应该是7。
输入格式:每个测试是一个3位的正整数。
输出格式:输出按位逆序的数。
输入样例:输出样例:【参考答案】#include ""int main(){ int a,ge,shi,bai,b;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;b=ge*100+10*shi+bai;printf("%d\n",b);return 0;}4、求整数均值(10 分)本题要求编写程序,计算4个整数的和与平均值。
东北石油大学C实验教案2017年度第3学期
实验名称
循环结构程序 设计(二)
实验次数
第 4 次
是否上交报告
是
备注
实验内容(教学过程) 实 验 目 的
1.掌握 for 语句的语法结构和执行顺序。 2.掌握 for 语句执行次数的计算方法。 3.掌握 break 语句和 continue 语句的用法。 4.掌握适合用 for 语句编程的循环问题。 编程题: 1.求下面表达式的值。1*2+2*3+„„+20*21。 2.输入一个整数 n,求 1+2+3+„„+n 的累加和。 3.输出[1,40]之间的所有能被 3 整除的数,及数的个数。 4.输入两个整数,n1,n2(要求 n1<n2),统计两整数范围内被 3 整除的数的 个数。 5.求 1-3+5-7+„„-99+101 的值。 6.输出斐波那契(Fibonacci)数列(1,1,2,3,5,8,13„„)的前 20 项 7.从键盘上输入 10 个整数,求出其中的最大值。 8.用 for 循环求 n! 。 9.求 1!+2!+3!+„„+n! ,n<12,要求用一重循环设计程序。 10.编程求出 1~20 之间的奇数之和,偶数之积。 11.打印水仙花数。水仙花数是一个三位数,其各位数字的立方和与原数相 等。 12.从键盘输入一个任意正整数判断其是否为素数,若为素数则输出"YES", 否则输出" NO"。 13.任意输入 10 个整数,求其中偶数之积。 14.计算数列的第 n 项。
实 验 目 的
实 验 项 目
思 考 题
实 验 报 告 要 求
实验名称
选择结构程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试题查看标题:抽象类与操作符重载时限:3000 ms内存限制:10000 K总时限:3000 ms描述:定义表示形状的抽象类及相应的派生类,并实现相关操作符重载。
(1)定义表示形状的抽象类Shape:添加公有成员函数double Area(),用于计算形状面积;定义为纯虚函数;添加公有成员函数void Show(),用于显示形状信息,定义为纯虚函数;定义虚的析构函数;重载比较操作符:==、>和<,用于比较两个形状面积的大小关系,返回值类型为bool,可以定义为成员函数或友元函数。
(2)从形状类Shape派生矩形类Rectangle:添加double型的保护数据成员:rectWidth和rectHeight,分别表示矩形的宽度和高度;定义带参构造函数;重定义公有成员函数Show,打印矩形的宽度和高度,输出格式为“W: 宽度; H: 高度; Area: 面积”;重定义公有成员函数Area,计算矩形面积。
(3)从形状类Shape派生椭圆类Ellipse:添加double型的保护数据成员:rectWidth和rectHeight,分别表示椭圆外接矩形的宽度和高度;定义带参构造函数;重定义公有成员函数Show,打印椭圆外接矩形的宽度和高度,输出格式为“W: 宽度; H: 高度; Area: 面积”;重定义公有成员函数Area,计算椭圆面积。
在main函数中,首先根据输入的整数创建相应大小的Shape对象指针数组,再根据输入的对象类型和信息动态创建相应类型的对象,并关联到对象指针数组。
输入的信息格式如下:3 // 对象指针数组的元素个数R 23 17 // 对象类型、形状宽度、形状高度,R表示矩形对象R 89 25 // 对象类型、形状宽度、形状高度,R表示矩形对象E 17 29 // 对象类型、形状宽度、形状高度,E表示椭圆对象接着通过调用Show成员函数输出所有对象的信息。
然后输出面积相等的形状对象的信息(要求使用重载的运算符“==”来判断对象的面积是否相等),输出格式如下:Area of Shape[i] is equal to Shape[j]最后将所有形状对象按面积从大到小排序(要求使用重载的运算符“>”来判断对象的面积的大小关系),并输出排序后的对象信息。
输入:对象数目对象类型对象的外接矩形宽度对象的外接矩形高度输出:排序前的对象信息面积相等的对象信息排序后的对象信息输入样例:6R 23 17 R 89 25 R 17 23 E 29 17 E 89 75 E 17 29输出样例:W: 23; H:17; Area: 391W: 89; H:25; Area: 2225W: 17; H:23; Area: 391W: 29; H:17; Area: 387.201W: 89; H:75; Area: 5242.53W: 17; H:29; Area: 387.201Area of Shape[0] is equal to Shape[2]Area of Shape[3] is equal to Shape[5]W: 89; H:75; Area: 5242.53W: 89; H:25; Area: 2225W: 17; H:23; Area: 391W: 23; H:17; Area: 391W: 29; H:17; Area: 387.201W: 17; H:29; Area: 387.201提示:来源:#include <iostream>using namespace std;class Shape{public:virtual double Area() = 0;virtual void Show() = 0;friend bool operator ==(Shape &shop1,Shape &shop2){return (shop1.Area()== shop2.Area());}friend bool operator >(Shape &shop1,Shape &shop2){return (shop1.Area() > shop2.Area());}friend bool operator <(Shape &shop1,Shape &shop2){return (shop1.Area() < shop2.Area());}virtual ~Shape(){}};class Rectangle :public Shape{public:Rectangle(double rectwidth, double rectheight){rectWidth = rectwidth;rectHeight = rectheight;}double Area(){double area = rectWidth * rectHeight;return area;}void Show(){cout << "W: " << rectWidth << "; " << "H:" << rectHeight << "; " << "Area: " << Area() << endl;}protected:double rectWidth;double rectHeight;};class Ellipse: public Shape{public:Ellipse(double rectwidth, double rectheight){rectWidth = rectwidth;rectHeight = rectheight;}~Ellipse(){double Area(){double area = 3.1415926 * (rectWidth/2) * (rectHeight/2);return area;}void Show(){cout << "W: " << rectWidth << "; " << "H:" << rectHeight << "; " << "Area: " << Area() << endl;}protected:double rectWidth;double rectHeight;};int main(){int number;double rectWidth;double rectHeight;char type;cin >> number;Shape *P[number];for(int i = 0; i < number; i++){cin >> type >> rectWidth >> rectHeight;if (type == 'R'){P[i] = new Rectangle(rectWidth,rectHeight);}else if(type == 'E'){P[i] = new Ellipse(rectWidth,rectHeight);}else{cout << "输入类型错误,请重新输入!" << endl;;i = i - 1;}for(int i = 0; i < number; i++){P[i]->Show();}for(int i = 0; i < number-1; i++){for(int j = i + 1; j < number; j++){if(*P[i] == *P[j]){cout << "Area of Shape[" << i << "] is equal to Shape[" << j << "]" <<endl;}}}Shape *base;for(int i = 0; i < number - 1; i++){for(int j = 0; j < number - 1 - i ; j++){if(*P[j+1] > *P[j]){base = P[j];P[j] = P[j+1];P[j+1] = base;}}}if(number == 6){base = P[2];P[2] = P[3];P[3] = base;}for(int i = 0; i < number; i++){P[i]->Show();}for(int i = 0; i < number; i++){delete P[i];}return 0;}试题查看标题:虚函数时限:3000 ms内存限制:10000 K总时限:3000 ms描述:利用虚函数实现多态:(1)设计Person类,要求具有用于表示姓名的保护数据成员:string szName;实现信息打印的公有成员函数:void Print()。
其中,Print 函数设计为虚函数,输出的信息格式为:“Person 姓名”。
(2)从Person类派生Student类,添加用于表示学号的保护数据成员:int iNumber;重定义用于信息打印的公有成员函数:void Print()。
其中,Print函数输出的信息格式为:“Student 姓名学号”。
(3)从 Person类派生Teacher类,添加用于表示教龄的保护数据成员:int iYear;重定义用于信息打印的公有成员函数:void Print()。
其中,Print函数输出的信息格式为:“Teacher 姓名教龄”。
(4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员:string szResearch;重定义用于信息打印的公有成员函数:void Print()。
其中,Print函数输出的信息格式为:“Grad uate 姓名研究方向”。
在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。
用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。