⑴ 关于Shape类用C++编
1、 设计一个Shape类, a) Shape具有一个成员函数来计算面积,Shape具有public Shape{ public: Circle(double x, double y, double r):c(x,y)
⑵ C语言打印菱形详细讲解
/*下面的程序是菱形打印的【终结者】,
改变下设置,就基本可以满足所有菱形打印的题目。
程序主体 for 语句只有9行,简单而强大
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 这个小函数用来输出 repeatTimes 个字符 c
void printChar(char c,int repeatTimes)
{
int i;
for(i=0;i<repeatTimes;i++)
printf("%c",c);
}
/*
特别的函数,获取当前要打印的下一个菱形图案
height : 菱形的高
shapeVariantStep : 变化的步数
baseShape : 菱形的基本图案
row : 当前打印的菱形图案的行坐标。
col : 当前打印的菱形图案的列坐标。
*/
char _buffer_[2]={0};
char* getShape(int height,int shapeVariantStep,char baseShape[],int row,int col)
{
int first = baseShape[0],last = first +(height-1)/2*shapeVariantStep;
if(shapeVariantStep==0 || strlen(baseShape)!=1)
return baseShape;
else
{
if( first>='0'&&first<='9'&&last<='9' ||
first>='a'&&first<='z'&&last<='z' ||
first>='A'&&first<='Z'&&last<='Z'
)
{
_buffer_[0] = first + ((height-2*abs(row)-1)/2 - abs(col))*shapeVariantStep;
_buffer_[1] = '\0';
return _buffer_;
}
else
{
return baseShape;
}
}
}
int main(int argc, char *argv[])
{
// 菱形的图案
char shape[]="*";
// 菱形图案间的空白图案
char space=' ';
// 每个图案之间的最小间隔(以一个字符为单位,不足用空白图案填充)
int interval=5;
// 菱形的高(要求是奇数)
int height=7;
// 菱形是否空心(只有边上的图案)。是:1,否 0
int isHollow=0;
/* 特别的参数:设定菱形的图案是变化。
只有指定 shape 为 :
"0","1",...,"9",
或者 "a","b",...,"z",
或者 "A","B",...,"Z" 其中之一,
并且要保证从指定图形开始,后面至少还有连续的:
(height-1)/2*shapevariantStep
个可选的图形,菱形的图形才会是可变的。
*/
int shapeVariantStep = 0;
int i,j,k,n;
interval = interval < strlen(shape)?strlen(shape):interval;
for(i=-(height-1)/2;i<=(height-1)/2;i++)
{
// 用来输出每行前的空白
printChar(space,abs(i)*interval);
// 这个 for(j) 语句用来输出每行的菱形图案
for(j=-(height-2*abs(i)-1)/2;j<=(height-2*abs(i)-1)/2;j++)
{
// 如果是非空心,输出所有图案;否则只输出两端的图案。
if(!isHollow || (isHollow && (j==0 || j==height-2*abs(i)-1)))
{
n=printf("%s",getShape(height,shapeVariantStep,shape,i,j));
// 补齐为到宽度为 interval
printChar(space,interval-n);
}
// 对于空心的菱形,在本应该输出图案的地方,输出空白。
else
{
printChar(space,interval);
}
}
// 这个 for(j) 语句用来输出每行后的空白
printChar(space,abs(i)*interval);
printf("\n");
}
return 0;
}
/*
运行结果:
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
shape[]="**";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
**
** ** **
** ** ** ** **
** ** ** ** ** ** **
** ** ** ** **
** ** **
**
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
...............*...................
..........*....*....*..............
.....*....*....*....*....*.........
*....*....*....*....*....*....*....
.....*....*....*....*....*.........
..........*....*....*..............
...............*...................
shape[]="*";
space[]=" ";
interval=0;
height=7;
isHollow=0;
shapevariantStep = 0
*
***
*****
*******
*****
***
*
shape[]="*";
space[]=" ";
interval=5;
height=11;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=1;
shapevariantStep = 0
*
* *
* *
* *
* *
* *
*
shape[]="A";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
shape[]="a";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
a
a b a
a b c b a
a b c d c b a
a b c d e d c b a
a b c d e f e d c b a
a b c d e f g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g h i h g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g f e d c b a
a b c d e f e d c b a
a b c d e d c b a
a b c d c b a
a b c b a
a b a
a
shape[]="1";
space[]=" ";
interval=5;
height=9;
isHollow=0;
shapevariantStep = 2
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
1 3 5 7 5 3 1
1 3 5 3 1
1 3 1
1
*/
⑶ Cshape语言中用ref和不用ref的区别(希望从用法讲解,不要用堆栈解释,谢谢)
怎么可以这么不负责任的回答啊,用不用当然有很大的区别了。
ref是按引用传递,不写的话默认按值传递。如果你是初学,能按值传递就按值传递即可。
ref是将变量的引用的地址传递过去的,函数执行完后该内存地址中还保存有数据,而按值传递函数执行完了会自动释放,等待垃圾回收。
我也不是高手,是按我自己的理解描述的,仅供参考。
⑷ 写一个程序,定义抽象基类Cshape,由它派生出5个派生类:
这是测你的设计模式啊~还有多态,封装,继承三大特性啊
⑸ C shape 是什么
不是C shape
是C#(C Sharp)是微软(Microsoft)为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。
http://ke..com/view/107979.htm?fr=ala0_1
⑹ 编程完成如下要求:(1)假设已有一个CShape图形类,并满足如下要求:1)CShape类有
没有问题我可以搞定。
⑺ C#从shape类中派生出Rectangle,Circle等具体形状类,并计算图形对象的周长和面积
明显是在考抽象类。
一个Shape有封闭的边界,它总是可以被计算周长和面积,但是Shape本身没有明确的描述时不是一个实体,故Shape是抽象类。Rectangle和Circle都应该继承Shape并实现其抽象方法。
publicabstractclassShape
{
();
();
}
publicclassCircle:Shape
{
publicdoubleRadius{get;set;}
()
{
returnMath.PI*Radius*Radius;
}
()
{
return2*Math.PI*Radius;
}
}
publicclassRectangle:Shape
{
publicdoubleWidth{get;set;}
publicdoubleHeight{get;set;}
()
{
returnWidth*Height;
}
()
{
return2*(Width+Height);
}
}
⑻ 用C++定义一个shape类知道
#include<iostream>
using
namespace
std;
class
shape
{
public:
virtual
float
area()=0;//纯虚函数
virtual
void
show()=0;//纯虚函数
};
class
circle:public
shape//公共继承
{
public:
circle(float
a=0,float
b=0,float
r=0):x(a),y(b),radius(r){}//用参数初始化表对构造函数进行初始化
virtual
void
show(){cout<<"x="<<x<<",y="<<y<<",radius="<<radius<<",area="<<area()<<endl;}//对虚函数进行重新定义
virtual
float
area(){return
3.14*radius*radius;}//同上
private:
float
x,y,radius;//数据成员
};
class
Rectangle:public
shape//公共继承
{
public:
Rectangle(float
w=0,float
l=0):width(w),length(l){}//同上
virtual
float
area(){return
width*length;}//同上
virtual
void
show(){cout<<"width="<<width<<",length="<<length<<",area="<<area()<<endl;}//同上
private:
float
width,length;
};
int
main()
{
circle
c(1.0,1.0,1.0);//定义circle类的对象c
c.show();//用对象c调用show函数
Rectangle
r(10.0,10.0);//定义Rectangle类对象r
r.show();//用对象r调用s...
#include<iostream>
using
namespace
std;
class
shape
{
public:
virtual
float
area()=0;//纯虚函数
virtual
void
show()=0;//纯虚函数
};
class
circle:public
shape//公共继承
{
public:
circle(float
a=0,float
b=0,float
r=0):x(a),y(b),radius(r){}//用参数初始化表对构造函数进行初始化
virtual
void
show(){cout<<"x="<<x<<",y="<<y<<",radius="<<radius<<",area="<<area()<<endl;}//对虚函数进行重新定义
virtual
float
area(){return
3.14*radius*radius;}//同上
private:
float
x,y,radius;//数据成员
};
class
Rectangle:public
shape//公共继承
{
public:
Rectangle(float
w=0,float
l=0):width(w),length(l){}//同上
virtual
float
area(){return
width*length;}//同上
virtual
void
show(){cout<<"width="<<width<<",length="<<length<<",area="<<area()<<endl;}//同上
private:
float
width,length;
};
int
main()
{
circle
c(1.0,1.0,1.0);//定义circle类的对象c
c.show();//用对象c调用show函数
Rectangle
r(10.0,10.0);//定义Rectangle类对象r
r.show();//用对象r调用show函数
return
0;
}
这个应该符合要求。
展开