蜗牛1 发表于 2013-11-15 09:21:58

请大神们帮忙指点

# 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语句,但结果却不是。请大神们指点迷津!

友来友网 发表于 2013-11-15 09:21:59

# 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;
}

友来友网 发表于 2013-11-15 09:45:35

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语句

小亮1201 发表于 2013-11-15 14:41:50

好长呀,看得眼花.....

蜗牛1 发表于 2013-11-15 21:20:02

友来友网 发表于 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语句,而且无任何错误。求解释??谢谢

蜗牛1 发表于 2013-11-15 21:21:30

小亮1201 发表于 2013-11-15 14:41 static/image/common/back.gif
好长呀,看得眼花.....

谢谢驻足,正在奋斗的你我

蜗牛1 发表于 2013-11-15 21:22:40

小亮1201 发表于 2013-11-15 14:41 static/image/common/back.gif
好长呀,看得眼花.....

哈啊哈,没办法作业呀

牡丹花下死做鬼 发表于 2013-11-16 08:17:25

应为你的ch是int型 while 里是 ch!='0' 这个是和字符比较你想怎么会不是default

友来友网 发表于 2013-11-16 10:00:21

蜗牛1 发表于 2013-11-15 21:20 static/image/common/back.gif
char ch;
while(ch!='q')
{


数字也是字符,你不知道吗

莫名C 发表于 2013-11-16 10:21:05

错误提示 是什么

CL0419 发表于 2013-11-16 11:15:13

其实很简单的,首先你定义的是整型的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,也会提示你输入对了,同理,你就可以得到你想要的结果了。

不抛弃不放弃 发表于 2013-11-16 12:39:36

路过看看,不错不错- -

属専色灰 发表于 2013-11-17 02:16:18

:sweat:孩子,你为何要这么坑爹。为何不把有问题的代码缩短一点呢?要别人帮你寻找问题要学会自己把有疑问的地方贴出来,而不是贴出来整个工程,不然许多人想帮你会望而却步的。

蜗牛1 发表于 2013-11-17 19:03:42

属専色灰 发表于 2013-11-17 02:16 static/image/common/back.gif
孩子,你为何要这么坑爹。为何不把有问题的代码缩短一点呢?要别人帮你寻找问题要学会自己把有疑问的 ...

程序编译没有错误,结果有些匪夷所思,不好意思,以后注意,谢谢

蜗牛1 发表于 2013-11-17 19:04:27

CL0419 发表于 2013-11-16 11:15 static/image/common/back.gif
其实很简单的,首先你定义的是整型的int ch, 在while表示中,ch != '0'是对的,但是请记住,字符'0'的ASCII ...

恩,谢谢{:5_109:}

蜗牛1 发表于 2013-11-17 19:07:43

友来友网 发表于 2013-11-16 10:00 static/image/common/back.gif
数字也是字符,你不知道吗

这个我知道,那该如何改这个程序呢?我相信你的权威,谢谢

蜗牛1 发表于 2013-11-17 21:56:48

友来友网 发表于 2013-11-17 21:04 static/image/common/back.gif
# include
#include
# define PI 3.14


谢谢,努力向你看齐,祝你前程似锦

友来友网 发表于 2013-11-17 22:15:28

蜗牛1 发表于 2013-11-17 21:56 static/image/common/back.gif
谢谢,努力向你看齐,祝你前程似锦

如果问题解决了,请评为最佳答案
页: [1]
查看完整版本: 请大神们帮忙指点