请大神们帮忙指点
# include<iostream>#include <windows.h>
# define PI 3.14
using namespace std;
//几何图形
class jhtx
{
public:
jhtx()
{}
virtual void show()
{
cout<<"无规则不成方圆"<<endl;
}
};
//矩形
class rectangle:public jhtx
{
public:
rectangle()
{}
rectangle(float x,float y)
{
length=x;
width=y;
}
void number()
{
cout<<"输入数据"<<endl;
cin>>length>>width;
}
//求周长
float zc()
{
return (length+width)*2;
}
//求面积
float eare()
{
return length*width;
}
void show()
{
cout<<"矩形面积"<<eare()<<endl;
cout<<"矩形周长"<<zc()<<endl;
}
protected:
float length,width;
};
//正方体
class square:public rectangle
{
public:
square()
{}
square(float x,float y,float z):rectangle(x,y)
{
height=z;
}
void number()
{
rectangle::number();
cin>>height;
}
//求体积
float tj()
{
return eare()*height;
}
void show()
{
cout<<"体积"<<tj()<<endl;
}
private:
float height;
};
//圆
class circle:public jhtx
{
protected:
float radius;
public:
circle()
{}
circle(float r)
{
radius=r;
}
void number()
{
cout<<"请输入半径"<<endl;
cin>>radius;
}
//求周长
float zc()
{
return 2.0*radius*PI;
}
//求面积
float eare()
{
return PI*radius*radius;
}
void show()
{
cout<<"圆的周长"<<zc()<<endl;
cout<<"圆的面积"<<eare()<<endl;
}
};
//球
class earth:public circle
{
public:
earth()
{}
//求体积
float tj()
{
return 4.0*PI*radius*radius*radius;
}
void show()
{
cout<<"球的体积"<<tj()<<endl;
}
};
//三角形
class triangle:public jhtx
{
protected:
float a,b;
public:
triangle()
{}
triangle(float x,float y)
{
a=x;
b=y;
}
void number()
{
cout<<"输出三角形的数据"<<endl;
cin>>a>>b;
}
//求面积
float eare()
{
return a*b/2;
}
void show()
{
cout<<"三角形的面积"<<eare()<<endl;
}
};
//三角柱
class ltriangle:public triangle
{
private:
float a,b,c;
public:
ltriangle()
{}
ltriangle(float x,float y,float z):triangle(x,y)
{
c=z;
}
void number()
{
triangle::number();
cin>>c;
}
//求体积
float tj()
{
return eare()*c;
}
void show()
{
cout<<"三角柱的体积"<<tj()<<endl;
}
};
int main()
{
jhtx *p;
int ch;
while(ch!='0')
{
cout<<"1 几何图形"<<"..."<<"2 矩形"<<"..."<<"3 长方体"<<"..."
<<"4 圆"<<"..."<<"5 球"<<"..."
<<"6 三角形"<<"..."<<"7 三角柱"
<<"..."<<"0 退出"<<endl;
cout<<"请输入一个字符"<<endl;
cin>>ch;
switch(ch)
{
case 1:
{
jhtx z;
p=&z;
p->show();
}
break;
case 2:
{
rectangle x;
x.number();
p=&x;
p->show();
}
break;
case 3:
{
square n;
n.number();
p=&n;
p->show();
}
break;
case 4:
{
circle v;
v.number();
p=&v;
p->show();
}
break;
case 5:
{
earth b;
b.number();
p=&b;
p->show();
}
break;
case 6:
{
triangle c;
c.number();
p=&c;
p->show();
}
break;
case 7:
{
ltriangle n;
n.number();
p=&n;
p->show();
}
break;
case 0:
break;
default:
cout<<"输入的不合法,请重新输入"<<endl;
break;
}
//实现清屏,时间间隔为1秒
Sleep(1000);
system("cls");
}
return 0;
} 当你执行这个程序时,清屏掉的东西,为何按任一字母又会出现,按理说当输入字母时,会执行default语句,但结果却不是。请大神们指点迷津!
# include<iostream>
#include <windows.h>
# define PI 3.14
using namespace std;
//几何图形
class jhtx
{
public:
jhtx()
{}
virtual void show()
{
cout<<"无规则不成方圆"<<endl;
}
};
//矩形
class rectangle:public jhtx
{
public:
rectangle()
{}
rectangle(float x,float y)
{
length=x;
width=y;
}
void number()
{
cout<<"输入数据"<<endl;
cin>>length>>width;
}
//求周长
float zc()
{
return (length+width)*2;
}
//求面积
float eare()
{
return length*width;
}
void show()
{
cout<<"矩形面积"<<eare()<<endl;
cout<<"矩形周长"<<zc()<<endl;
}
protected:
float length,width;
};
//正方体
class square:public rectangle
{
public:
square()
{}
square(float x,float y,float z):rectangle(x,y)
{
height=z;
}
void number()
{
rectangle::number();
cin>>height;
}
//求体积
float tj()
{
return eare()*height;
}
void show()
{
cout<<"体积"<<tj()<<endl;
}
private:
float height;
};
//圆
class circle:public jhtx
{
protected:
float radius;
public:
circle()
{}
circle(float r)
{
radius=r;
}
void number()
{
cout<<"请输入半径"<<endl;
cin>>radius;
}
//求周长
float zc()
{
return 2.0*radius*PI;
}
//求面积
float eare()
{
return PI*radius*radius;
}
void show()
{
cout<<"圆的周长"<<zc()<<endl;
cout<<"圆的面积"<<eare()<<endl;
}
};
//球
class earth:public circle
{
public:
earth()
{}
//求体积
float tj()
{
return 4.0*PI*radius*radius*radius;
}
void show()
{
cout<<"球的体积"<<tj()<<endl;
}
};
//三角形
class triangle:public jhtx
{
protected:
float a,b;
public:
triangle()
{}
triangle(float x,float y)
{
a=x;
b=y;
}
void number()
{
cout<<"输出三角形的数据"<<endl;
cin>>a>>b;
}
//求面积
float eare()
{
return a*b/2;
}
void show()
{
cout<<"三角形的面积"<<eare()<<endl;
}
};
//三角柱
class ltriangle:public triangle
{
private:
float a,b,c;
public:
ltriangle()
{}
ltriangle(float x,float y,float z):triangle(x,y)
{
c=z;
}
void number()
{
triangle::number();
cin>>c;
}
//求体积
float tj()
{
return eare()*c;
}
void show()
{
cout<<"三角柱的体积"<<tj()<<endl;
}
};
int main()
{
jhtx *p;
char ch;
while(ch!='0')
{
cout<<"1 几何图形"<<"..."<<"2 矩形"<<"..."<<"3 长方体"<<"..."
<<"4 圆"<<"..."<<"5 球"<<"..."
<<"6 三角形"<<"..."<<"7 三角柱"
<<"..."<<"0 退出"<<endl;
cout<<"请输入一个字符"<<endl;
cin>>ch;
switch(ch)
{
case '1':
{
jhtx z;
p=&z;
p->show();
}
break;
case '2':
{
rectangle x;
x.number();
p=&x;
p->show();
}
break;
case '3':
{
square n;
n.number();
p=&n;
p->show();
}
break;
case '4':
{
circle v;
v.number();
p=&v;
p->show();
}
break;
case '5':
{
earth b;
b.number();
p=&b;
p->show();
}
break;
case '6':
{
triangle c;
c.number();
p=&c;
p->show();
}
break;
case '7':
{
ltriangle n;
n.number();
p=&n;
p->show();
}
break;
case '0':
break;
default:
cout<<"输入的不合法,请重新输入"<<endl;
break;
}
//实现清屏,时间间隔为1秒
Sleep(1000);
system("cls");
}
return 0;
} int ch;
while(ch!='0')
{
cout<<"1 几何图形"<<"..."<<"2 矩形"<<"..."<<"3 长方体"<<"..."
<<"4 圆"<<"..."<<"5 球"<<"..."
<<"6 三角形"<<"..."<<"7 三角柱"
<<"..."<<"0 退出"<<endl;
cout<<"请输入一个字符"<<endl;
cin>>ch;
switch(ch)
你的ch是int型,当你输入一个字符时,类型不匹配从而没有赋值成功,
所以ch还是上次的值,比如说你输入9是就会执行default语句
好长呀,看得眼花..... 友来友网 发表于 2013-11-15 09:45 static/image/common/back.gif
int ch;
while(ch!='0')
{
char ch;
while(ch!='q')
{
cout<<"a 几何图形"<<"..."<<"b 矩形"<<"..."<<"c 长方体"<<"..."
<<"d 圆"<<"..."<<"e 球"<<"..."
<<"f三角形"<<"..."<<"g 三角柱"
<<"..."<<"q 退出"<<endl;
cout<<"请输入一个字符"<<endl;
cin>>ch;
switch(ch)
那么把int类型改为char类型,任意输入一个数字时,如果按你说的类型不符合的话,没有复制成功还是上一句的值。但结果却是,执行了default语句,而且无任何错误。求解释??谢谢 小亮1201 发表于 2013-11-15 14:41 static/image/common/back.gif
好长呀,看得眼花.....
谢谢驻足,正在奋斗的你我 小亮1201 发表于 2013-11-15 14:41 static/image/common/back.gif
好长呀,看得眼花.....
哈啊哈,没办法作业呀 应为你的ch是int型 while 里是 ch!='0' 这个是和字符比较你想怎么会不是default 蜗牛1 发表于 2013-11-15 21:20 static/image/common/back.gif
char ch;
while(ch!='q')
{
数字也是字符,你不知道吗 错误提示 是什么 其实很简单的,首先你定义的是整型的int ch, 在while表示中,ch != '0'是对的,但是请记住,字符'0'的ASCII码是48,在编译器中会把字符'0'转换成int 的ASCII码,所以'0'就等于48,所以你在switch语句中的case没有48,所以就不执行后面的代码,因为都没有符合它的要求 ,所以就不会执行,最后只执行default,但是如果你把switch语句中的第一个case写成这样:case 65:,然后你输入大写A,就会提示对了 ,再把第二个case写成这样: case 97;然后你在输入a,也会提示你输入对了,同理,你就可以得到你想要的结果了。 路过看看,不错不错- - :sweat:孩子,你为何要这么坑爹。为何不把有问题的代码缩短一点呢?要别人帮你寻找问题要学会自己把有疑问的地方贴出来,而不是贴出来整个工程,不然许多人想帮你会望而却步的。 属専色灰 发表于 2013-11-17 02:16 static/image/common/back.gif
孩子,你为何要这么坑爹。为何不把有问题的代码缩短一点呢?要别人帮你寻找问题要学会自己把有疑问的 ...
程序编译没有错误,结果有些匪夷所思,不好意思,以后注意,谢谢 CL0419 发表于 2013-11-16 11:15 static/image/common/back.gif
其实很简单的,首先你定义的是整型的int ch, 在while表示中,ch != '0'是对的,但是请记住,字符'0'的ASCII ...
恩,谢谢{:5_109:} 友来友网 发表于 2013-11-16 10:00 static/image/common/back.gif
数字也是字符,你不知道吗
这个我知道,那该如何改这个程序呢?我相信你的权威,谢谢 友来友网 发表于 2013-11-17 21:04 static/image/common/back.gif
# include
#include
# define PI 3.14
谢谢,努力向你看齐,祝你前程似锦 蜗牛1 发表于 2013-11-17 21:56 static/image/common/back.gif
谢谢,努力向你看齐,祝你前程似锦
如果问题解决了,请评为最佳答案
页:
[1]