C案例分析解析Word文档格式.docx
- 文档编号:20416584
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:15
- 大小:27.55KB
C案例分析解析Word文档格式.docx
《C案例分析解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《C案例分析解析Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
s<
s=t1-t2;
}
2、试建立一个类Student用于描述学生信息,具体要求如下:
私有数据成员
intid:
学生学号。
charyuwen:
语文成绩(五级分制:
A、B、C、D和E,其它无效)。
floatshuxue:
数学成绩(百分制)。
公有成员函数
1)缺省构造函数:
初始化数据成员为0或NULL值。
2)带参构造函数:
用参数初始化数据成员。
3)voidPrint():
输出本对象的学号、语文成绩和数学成绩。
4)修改函数voidChange():
从键盘输入新的学号、语文成绩和数学成绩,修改相应数据成员的值。
5)比较函数voidComp(Student&
a,Student&
b):
比较a学生和b学生的数学成绩,找出数学成绩最高和最低的学生,输出他们的信息。
主程序:
定义三个以上的对象,并且每个成员函数至少被调用一次。
classStudent{
intid;
//学生学号。
charyuwen;
//语文成绩(五级分制:
floatshuxue;
//数学成绩(百分制)。
Student(){id=0,yuwen=NULL;
shuxue=0;
Student(int,char,float);
voidPrint();
voidChange();
voidComp(Student&
b);
voidmain(){
StudentA(78,'
E'
86),B(84,'
D'
82),C;
C.Change();
A.Comp(B,C);
Student:
:
Student(inta,charb,floatc){
id=a,yuwen=b;
shuxue=c;
voidStudent:
Print(){
cout<
学号:
"
id<
语文成绩:
<
yuwen<
数学成绩:
shuxue<
Change(){
请输入学生的学号、语文成绩(五级分制:
A/B/C/D/E,其它无效)和数学成绩:
\n"
cin>
>
id>
yuwen>
shuxue;
Comp(Student&
b){
Studentmax,min;
max=shuxue>
a.shuxue?
(shuxue>
b.shuxue?
*this:
(a.shuxue>
a:
min=shuxue<
(shuxue<
(a.shuxue<
数学成绩最高和最低的学生分别是:
max.Print();
min.Print();
3、【要求】按以下描述和要求建立两个类:
基类Rectangle和派生类Cube:
Rectangle
私有成员:
doublex1,y1;
//左下角的坐标
doublex2,y2;
//右上角的坐标
公有成员
Rectangle(doublea=0,doubleb=0,doublec=0,doubled=0);
//带缺省值的构造函数
doublegetwidth();
//计算并返回矩形的宽
doublegetlength();
//计算并返回矩形的长
virtualvoiddisplay();
//输出矩形的各坐标及长宽
注:
正立方体Cube的底面矩形从基类继承
Cube:
stringname;
//立方体名称(字符串对象)
doubleh;
//立方体高度
公有成员:
Cube(string="
double=0,……);
voidset(string,double);
//修改立方体标识符和高度值
voiddisplay();
//输出立方体全部信息,并计算输出体积
Cubeadd(Cube&
S);
//将参数对象S的高度加到this对象上。
以上成员函数的参数名如有未给出的则自已命名。
头文件包含语句为:
#include<
string.h>
主函数要求:
(1)定义Rectangle类对象A{坐标:
10,10,30,40};
定义Cube类对象B{坐标:
20,10,30,40;
名称和高度:
Box,60}、C(C数据由B拷贝生成)和D(D数据暂无)。
(2)调用函数set修改对象C的名称和高度值。
数据为{Trunk,95}。
(3)调用函数display及相关函数输出对象A、B和C的全部数据,计算输出B和C的体积。
每个对象的信息占一行。
(4)调用add函数,计算D=B+C。
输出D的全部数据,计算并输出D的体积。
classRectangle{
doublex1,y1;
doublex2,y2;
Rectangle(doublea=0,doubleb=0,doublec=0,doubled=0){
x1=a,y1=b;
x2=c,y2=d;
}
doublegetwidth(){return(x2-x1);
}//计算并返回矩形的宽
doublegetlength(){return(y2-y1);
}//计算并返回矩形的长
voiddisplay();
classCube:
publicRectangle{
charname[10];
doubleh;
Cube(doublea=0,doubleb=0,doublec=0,doubled=0,
char*s=0,doubleh1=0):
Rectangle(a,b,c,d){//带缺省值的构造函数
if(s)strcpy(name,s);
h=h1;
voidset(char*,double);
//修改立方体标识符和高度值
voiddisplay();
Cubeadd(Cube&
S);
RectangleA(10,10,30,40);
CubeB(20,10,30,40,"
Box"
60),C(B),D;
B.set("
Trunk"
95);
A.display();
B.display();
C.display();
D=B.add(C);
D.display();
voidRectangle:
display(){
矩形:
左下角的坐标:
x1<
'
'
y1<
右上角的坐标:
x2<
y2<
长:
(x2-x1)<
宽:
(y2-y1)<
voidCube:
set(char*s,doubleh1){
h=h1;
strcpy(name,s);
doublemj=getwidth()*getlength();
长方体:
底面积为:
mj<
体积为:
mj*h<
CubeCube:
add(Cube&
S){
h+=S.h;
return*this;
1、模拟人脑神经网络的神经元结构模型如下图所示:
其中,xi表示输入信号,wi表示输入信号的加权系数,y表示神经元的输出,它们的之间的关系为:
这里,∑表示各项的和,exp(z)为求z的自然指数值ex的函数,包含在头文件math.h中,其函数原型为doubleexp(doublez)。
试定义一个NN类实现上述模型。
具体要求如下:
1)私有成员
●floatx[5],w[5],dt:
数组x和数组w分别存放输入信号xi及其加权系数wi;
dt存放非零参数σ。
●doubley:
神经元的突出。
2)公有成员:
●NN(floatt[],floatd)用数组t初始化加权系统wi,用d初始化dt。
●voidfun(floatt[]):
用数组t初始化xi,并根据上述公式计算y的值。
●voidprint():
输出输入信号和输出信号的值
在主函数中,用输入信号{1.2,3.5,2.3,3.2,2.8}以及加权系数{o.5,0.8,1.2,1.8,1.1}对该类进行测试。
classNN{
floatx[5],w[5],dt;
doubley;
NN(floatt[],floatd);
//用数组t初始化加权系统wi,用d初始化dt。
voidfun(floatt[]);
//用数组t初始化xi,并根据上述公式计算y的值。
voidprint();
//输出输入信号和输出信号的值
floata[5]={1.2,3.5,2.3,3.2,2.8};
floatb[5]={0.5,0.8,1.2,1.8,1.1};
NNt(b,0.2);
t.fun(a);
t.print();
NN:
NN(floatt[],floatd){
for(inti=0;
i<
5;
i++)
w[i]=t[i];
dt=d;
voidNN:
fun(floatt[]){
x[i]=t[i];
doublen=0.0;
n+=(x[i]-w[i])*(x[i]-w[i]);
y=exp(-n/(2*dt*dt));
print(){
x[i]="
x[i]<
'
y="
y<
2、编程题
已知由一个数组派生出另一个数组的派生规则如下:
假定原始数组为a[10],新数组为b[10],则b[i]的值为数组a中大于a[i]的元素的个数。
例如,对于说明“inta[]={1,2,3,4,5};
intb[5];
”,其中a[1]=2,数组a中有3个元素比a[1]大,则b[1]=3。
试建立一个实现此功能的类ARRAY。
1)私有数据成员。
●inta[10],b[10];
a存放原始数组,b存放派生数组。
2)公有成员函数。
●构造函数ARRAY(intdata[10]);
初始化成员数组a。
●voidprocess();
由数组a根据上述派生类规则,用循环语句计算数组b的各元素。
●voidprint();
屏幕显示数组a和b。
classARRAY{
inta[10],b[10];
ARRAY(intdata[10]);
//初始化成员数组a。
voidprocess();
//由数组a根据上述派生类规则,用循环语句计算数组b的各元素。
voidprint();
//屏幕显示数组a和b。
inta[]={7,4,9,23,56,44,18,33,21,17};
ARRAYarray(a);
array.process();
array.print();
ARRAY:
ARRAY(intdata[10]){
10;
i++){
a[i]=data[i];
b[i]=0;
voidARRAY:
process(){
for(intk=0;
k<
k++)
if(a[k]>
a[i])b[i]++;
print(){
a[10]="
a[i]<
b[10]="
for(i=0;
b[i]<
3、编程题:
1)实现描述超市的的类Suppermacket类,记录系统中现有商品(用指针实现),定义增加商品的函数Append,删除商品的函数Delete,查询商品的函数Query,并显示查询结果;
2)定义商品类Goods,具有商品名称Name,商品价格Price,商品数量number等属性,操作Sale(销售商品,余额不足时给予提示)、Add(商品上架操作)和ShowMe(显示商品信息)。
3)编写main函数,测试以上所要求的各种功能,完成商品的增加、删除和查询商品,以及商品销售和商品上架的操作。
4)可以利用对象成员来实现。
classSuppermacket;
classGoods{
intPrice;
intnumber;
Goods(){
strcpy(name,"
);
Price=0;
number=0;
voidSale(intn);
voidAdd();
voidShowME(){
商品:
name<
价格:
Price<
,有"
number<
件。
\n\n"
};
friendSuppermacket;
classSuppermacket{
Goods*PGoods;
intnum;
Suppermacket(intn=10){
PGoods=newGoods[n];
num=n;
voidAppend();
voidDelete();
voidQuery();
~Suppermacket(){
delete[]PGoods;
SuppermacketA(3);
A.Append();
A.Delete();
A.Query();
voidSuppermacket:
Append(){
num;
if(PGoods[i].number==0){
PGoods[i].Add();
PGoods[i].ShowME();
return;
}
没有空货架上货了!
Delete(){
intn;
请输入需要销售商品名称和数量:
name>
n;
if(strcmp(PGoods[i].name,name)==0){
PGoods[i].Sale(n);
查无此商品!
}
Query(){
请输入需要查询的商品名称;
name;
voidGoods:
Sale(intn){
if(n<
number){
number-=n;
ShowME();
else
商品数量不够,无法销售!
Add(){
请输入上架的商品名称、价格及数量:
Price>
number;
1.建立一个类NUM,求指定范围内的所有素数(质数)。
3)私有数据成员。
●intdata[25];
依次存放指定范围内的所有素数。
●intspanl,span2;
存放要求计算的素数的范围。
●intnum;
存放span1与span2之间的素数个数。
4)公有成员函数。
●构造函数NUM(inta,intb);
初始化所要求的素数的范围span1、span2及num(值为0)。
●voidprocess():
求出指定范围内的所有素数,把它们依次存放在数组data中,并将求出的素数的个数赋给num。
输出求出的所有素数。
5)在主程序中对该类进行测试。
使用测试数据span1=100,span2=200。
即求100~200之间的所有素数。
classNUM{
intdata[25];
//依次存放指定范围内的所有素数。
intspan1,span2;
//存放要求计算的素数的范围。
//存放span1与span2之间的素数个数。
NUM(inta,intb);
voidprocess();
NUMa(100,200);
a.process();
a.print();
NUM:
NUM(inta,intb){
span1=a;
span2=b;
num=0;
voidNUM:
inti,n,f=0;
for(i=span1;
=span2;
for(n=2,f=0;
n<
=sqrt(i);
n++)
if(i%n==0){f=1;
break;
if(f==1)continue;
data[num++]=i;
){
data[i]<
\t'
if(++i%6==0)cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 案例分析解析 案例 分析 解析