鱼C论坛

 找回密码
 立即注册
查看: 2538|回复: 17

请大神们帮忙指点

[复制链接]
发表于 2013-11-15 09:21:58 | 显示全部楼层 |阅读模式
1鱼币
# 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 #include # define PI 3.14 using namespace std; //几何图形 class jhtx { public: jhtx() {} virtual void show() { cout
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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语句

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-15 14:41:50 | 显示全部楼层
好长呀,看得眼花.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-15 21:20:02 | 显示全部楼层

char ch;
while(ch!='q')
{
  cout<<"a 几何图形"<<"..."<<"b 矩形"<<"..."<<"c 长方体"<<"..."
   <<"d 圆"<<"..."<<"e 球"<<"..."
   <<"f三角形"<<"..."<<"g 三角柱"
   <<"..."<<"q 退出"<<endl;
   cout<<"请输入一个字符"<<endl;
   cin>>ch;
  switch(ch)

那么把int类型改为char类型,任意输入一个数字时,如果按你说的类型不符合的话,没有复制成功还是上一句的值。但结果却是,执行了default语句,而且无任何错误。求解释??谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-15 21:21:30 | 显示全部楼层
小亮1201 发表于 2013-11-15 14:41
好长呀,看得眼花.....

谢谢驻足,正在奋斗的你我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-15 21:22:40 | 显示全部楼层
小亮1201 发表于 2013-11-15 14:41
好长呀,看得眼花.....

哈啊哈,没办法作业呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 08:17:25 | 显示全部楼层
应为你的ch是int型 while 里是 ch!='0' 这个是和字符比较你想怎么会不是default
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 10:00:21 | 显示全部楼层
蜗牛1 发表于 2013-11-15 21:20
char ch;
while(ch!='q')
{

数字也是字符,你不知道吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 10:21:05 | 显示全部楼层
错误提示 是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,也会提示你输入对了,同理,你就可以得到你想要的结果了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 12:39:36 | 显示全部楼层
路过看看,不错不错- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-17 02:16:18 | 显示全部楼层
:sweat:孩子,你为何要这么坑爹。为何不把有问题的代码缩短一点呢?要别人帮你寻找问题要学会自己把有疑问的地方贴出来,而不是贴出来整个工程,不然许多人想帮你会望而却步的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-17 19:03:42 | 显示全部楼层
属専色灰 发表于 2013-11-17 02:16
孩子,你为何要这么坑爹。为何不把有问题的代码缩短一点呢?要别人帮你寻找问题要学会自己把有疑问的 ...

程序编译没有错误,结果有些匪夷所思,不好意思,以后注意,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-17 19:04:27 | 显示全部楼层
CL0419 发表于 2013-11-16 11:15
其实很简单的,首先你定义的是整型的int ch, 在while表示中,ch != '0'是对的,但是请记住,字符'0'的ASCII ...

恩,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-17 19:07:43 | 显示全部楼层
友来友网 发表于 2013-11-16 10:00
数字也是字符,你不知道吗

这个我知道,那该如何改这个程序呢?我相信你的权威,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-17 21:56:48 | 显示全部楼层
友来友网 发表于 2013-11-17 21:04
# include
#include
# define PI 3.14

谢谢,努力向你看齐,祝你前程似锦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-17 22:15:28 | 显示全部楼层
蜗牛1 发表于 2013-11-17 21:56
谢谢,努力向你看齐,祝你前程似锦

如果问题解决了,请评为最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表