注册 登录
编程论坛 C++教室

刚学程序,好多问题不懂,求哥哥姐姐们看看除了什么问题,谢谢

a1403232984 发布于 2015-06-02 21:24, 894 次点击
#include<iostream>
#include<stdio.h>
#include<math.h>
#define pi 3.14
using namespace std;
void _1(int);
int xuanze()
{
    char yn;
    int i;
    cout<<"请输入您所需求的图形号码:"<<endl;
    cin>>i;
    switch(i)
    {
        case 1:
            cout<<"您所求的图形为三角形,请确认是否正确"<<endl;
            cin>>yn;
            if(yn=='y')
              return (1);
            else
              xuanze();
            break;
        case 2:
            cout<<"您所求的图形为圆形,请确认是否正确"<<endl;
            cin>>yn;
            if(yn=='y')
             return (2);
            else
              xuanze();
            break;
        case 3:
            cout<<"您所求的图形为平行四边形,请确认是否正确"<<endl;
            cin>>yn;
            if(yn=='y')
             return (3);
            else
             xuanze();
            break;   
        //case 2:
       // case 2:
    //    case 2:
    //    case 2:
        default:cout<<"输入非法"<<endl;
    }
}
int main()
{
  int i;
  do
  {
    i=xuanze();
    _1(i);
    //_2(i);
    //_//3(i);
  }while(1);  
   do
    {
      i=xuanze();
      _2(i);
    }while(2);
   
   return 0;
}
void _1(int i)
{
  float a,b,c,s,area;
  cout<<"请输入三角形的三条边长:"<<endl;
  cin>>a>>b>>c;
  s=(a+b+c)/2;
  area=sqrt(s*(s-a)*(s-b)*(s-c));
  cout<<"三角形的半周长s="<<s<<endl;
  cout<<"三角形的面积area="<<area<<endl;
}
void _2(int i)
{
    float r,area;
    cout<<"请输入圆形的半径:"<<endl;
    cin>>r;
    area=r*r*pi;
    cout<<"圆形的面积area="<<area<<endl;
}
void _3(int i)
{
    float a,h,area;
    cout<<"请输入平行四边形的高和底边长:"<<endl;
    cin>>a>>h;
    area=a*h;
    cout<<"平行四边形的面积area="<<area<<endl;
}
13 回复
#2
林月儿2015-06-02 21:59
void _1(int);
void _2(int i);
int xuanze()
#3
a14032329842015-06-02 22:07
回复 2楼 林月儿
只有本站会员才能查看附件,请 登录
谢谢,可还是这个样子
#4
林月儿2015-06-02 22:19
#include<iostream>
#include<stdio.h>
#include<math.h>
#define pi 3.14
using namespace std;
void _1();
void _2();
void _3();
int xuanze()
{
    char yn;
    int i;
    cout<<"请输入您所需求的图形号码:"<<endl;
    cin>>i;
    switch(i)
    {
        case 1:
            cout<<"您所求的图形为三角形,请确认是否正确"<<endl;
            cin>>yn;
            if(yn=='y')
              return (1);
            else
              xuanze();
            break;
        case 2:
            cout<<"您所求的图形为圆形,请确认是否正确"<<endl;
            cin>>yn;
            if(yn=='y')
             return (2);
            else
              xuanze();
            break;
        case 3:
            cout<<"您所求的图形为平行四边形,请确认是否正确"<<endl;
            cin>>yn;
            if(yn=='y')
             return (3);
            else
             xuanze();
            break;   
        default:cout<<"输入非法"<<endl;
    }
}
int main()
{
  int i;
  i=xuanze();
   switch(i){
       case 1:_1();break;
       case 2:_2();break;
       case 3:_3();break;
       default:cout<<"wrong"<<endl;
   }   
   return 0;
}
void _1()
{
  float a,b,c,s,area;
  cout<<"请输入三角形的三条边长:"<<endl;
  cin>>a>>b>>c;
  s=(a+b+c)/2;
  area=sqrt(s*(s-a)*(s-b)*(s-c));
  cout<<"三角形的半周长s="<<s<<endl;
  cout<<"三角形的面积area="<<area<<endl;
}
void _2()
{
    float r,area;
    cout<<"请输入圆形的半径:"<<endl;
    cin>>r;
    area=r*r*pi;
    cout<<"圆形的面积area="<<area<<endl;
}
void _3()
{
    float a,h,area;
    cout<<"请输入平行四边形的高和底边长:"<<endl;
    cin>>a>>h;
    area=a*h;
    cout<<"平行四边形的面积area="<<area<<endl;
}
#5
林月儿2015-06-02 22:20
已经无话可说。。。楼主加油吧
#6
a14032329842015-06-02 22:32
回复 5楼 林月儿
恩,谢谢啦!!!!我会努力的!!
#7
tlliqi2015-06-02 22:35
楼主加油
#8
a14032329842015-06-03 12:42
回复 7楼 tlliqi
谢谢!!
#9
wp2319572015-06-03 13:32
一般来说 点h头文件不用在c++中吧
#10
yangfrancis2015-06-03 14:50
do
  {
    i=xuanze();
    _1(i);
    //_2(i);
    //_//3(i);
  }while(1);
楼主的问题:无论i接受值是多少,都被锁死在第一个循环里了,所以只能求三角形。其实就是要把while循环换成switch分支。此外楼主的源代码还有个潜在问题,i只能一次性输对,如果要在确认“请确认是否正确”的时候想改动的话,修改的值无法传给主函数的i了。要解决的话,得把xuanze函数递归调用的返回值返回给上一级调用单位。
#11
a14032329842015-06-03 15:30
回复 10楼 yangfrancis
嗯,对。我也发现了,正在看。谢谢你!
#12
a14032329842015-06-03 15:50
回复 9楼 wp231957
书上都这么写的......
#13
林月儿2015-06-03 16:23
回复 12楼 a1403232984
同意9楼 wp231957的说法
加了.h的库函数效果就相当于
声明了多余的变量、函数但不使用,程序依旧执行完成任务。
但建议还是用到再加上。。。
#14
a14032329842015-06-03 17:29
回复 13楼 林月儿
嗯,好
1