none
救命呀,我要疯了,难道我学的都是错的?????vs2008的while(1)问题 RRS feed

  • 问题

  • //任务:根据用户给定的三角形三条边计算三角形面积
    #include <math.h>
    //#include <complex>
    #include <iostream>
    using namespace std
    ;void main()
    {
     double a,b,c,d;
     //double mj;
     a=b=c=0.00;
     cout<<"请输入三角形第一边(A)的长度值(单位:CM):";
     cin>>a;
     cout<<endl<<"请输入三角形第二边(B)的长度值(单位:CM):";
     cin>>b;
     {
     while (1); /////这里的条件错了吗,为什么不执行循环体?改成0就可以,这是为什么?
      cout<<endl<<"根据您提供的A、B两边的值,C边取值范围为:"<<abs(a-b)<<"--"<<a+b;
      cout<<endl<<"请输入三角形第三边(C)的长度值(单位:CM):";
      cin>>c;
      
      if (c>abs(a-b)&&c<(a+b)) exit;  
      else {cout<<endl<<"输入的边长不能构造三角形,请重新输入!"<<endl;}
     }
     d=(a+b+c)/2;
     cout<<endl<<"该三角形的面积为:"<<sqrtl(d*(d-a)*(d-b)*(d-c))<<"平方CM。";
    }

     

     

    2010年9月14日 9:09

答案

全部回复

  • while (1); 是个死循环

    你该写成

    while(1)

    {

          ...... 代码 

          break;

    }

    这是C最基础的内容...好好看书吧


    0xBAADF00D
    2010年9月14日 9:21
    版主
  • 基本语法都错误了,该好好学习基础!!
    2010年9月14日 10:38
  • ls们正解

    while (1); 与while(1){ }是一样的 (一条语句以;结束的)

     

    2010年9月14日 11:59
  • 你写的语法都对,只是while用错了地方:

    要知道while(ex)执行循环体的条件是ex对while为真,C++中,0可以表示假(相当于FALSE)不会执行循环体,但1(相当于TRUE)表示真,1将使while执行循环体,又因为没有结束循环体的条件,将会进入死循环,并不是不执行。

    修改方法:(1)就是你的那种方法

                    (2)直接将其删除(或注释)

    不过,我不明白您为什么要加那么一句,难道是有什么深意吗?望赐教……

    2010年9月16日 4:23
  • 我猜想您的想法,然后做了一点修改:

    #include <math.h>
    #include <iostream>
    using namespace std;

    void main()
    {
     double a,b,c,d;

     a = 0.0;
     b = 0.0;
     c = 0.0;

     cout<<"请输入三角形第一边(A)的长度值(单位:CM):";
     cin>>a;

     cout<<endl<<"请输入三角形第二边(B)的长度值(单位:CM):";
     cin>>b;

     while (1)
     {
      cout<<endl<<"根据您提供的A、B两边的值,C边取值范围为:"<<abs(a-b)<<"--"<<a+b;
      cout<<endl<<"请输入三角形第三边(C)的长度值(单位:CM):";
      cin>>c;
     
      if (c>abs(a-b)&&c<(a+b))
      {
       break;
      }
      else
      {
       cout<<endl<<"输入的边长不能构造三角形,请重新输入!"<<endl;
      }
     }

     d=(a+b+c)/2;

     cout<<endl<<"该三角形的面积为:"<<sqrt(d*(d-a)*(d-b)*(d-c))<<"平方CM。" << endl;
    }

     

    2010年9月16日 4:41