Borland C ++ 5.02 cout没有显示在控制台窗口

时间:2016-11-06 07:23:00

标签: c++ console-application borland-c++

对不起这个新手问题, 我尝试使用borland 5.02制作这个程序,但由于某些原因,if(stat)中的cout在我写完结婚时没有在控制台窗口显示。我不知道什么是错的,而且我已经被困了好几个小时。请帮帮我

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

int main()
{
   int NIP, GOL, GP, TI, TA, JA, TG ;
   char NM[20], STAT[10] ;

   cout << "ID Number : " ;
   cin >> NIP ;

   cout << "Name : " ;
   cin >> NM ;

   cout << "Faction : " ;
   cin >> GOL ;

   if (GOL == 1)
   {
    GP = 1500000 ;
   }
   else if (GOL == 2)
   {
    GP = 2000000 ;
   }
   else
   {
    GP = 2500000 ;
   }

   cout << "Status  : " ;
   gets (STAT) ;

   if (STAT == "Married" || STAT == "married")
   {
      cout << "Number of children : " << endl ;
      cin >> JA ;
      TI = 0.05 * GP ;

      if (JA <= 3)
      {
        TA = 0.02 * GP * JA ;
      }
      else
      {
        TA = 0.02 * GP * 3 ;
      }
   }
   else
   {
    TI = 0 ;
    TA = 0 ;
   }

   TG = GP + TI+ TA ;

   cout << endl << "-Results-" << endl ;
   cout << "Your GP: " << GP << endl ;
   cout << "Your TI: " << TI << endl ;
   cout << "Your TA: " << TA << endl ;
   cout << "Your TG: " << TG << endl ;

   getch () ;

}

更新:我之前尝试将gets(STAT) ;更改为cin >> STAT ;,但似乎没有任何效果。当我运行它时程序看起来像这样

身份证号码:0123141421

姓名:Vykmon

派系:1

状态:结婚(这是问题)

- 结果 -

您的GP:1500000

您的TI:0

你的TA:0

您的TG:1500000

即使我已经在状态上写了结婚,cout << "Number of children : " << endl ;也没有显示在控制台窗口上。好像if (STAT == "Married" || STAT == "married")没有工作,而且状态:已经结婚&#34;算作

else
   {
    TI = 0 ;
    TA = 0 ;
   }

3 个答案:

答案 0 :(得分:1)

如果STAT == "Married"STAT

std::string将在标准C ++中有效。

但是,它是char的数组,这意味着您要比较两个指针。因为C ++不支持直接比较数组。因此,两个数组表达式中的每一个都会衰减到指向第一个项目。

这些指针保证不同。

注1:Borland C ++ 5.02听起来像1990年代中期,在第一个C ++标准之前。有许多免费的现代编译器。最着名的三个是g ++,clang和Visual C ++(后者仅适用于PC平台)。

注2:我记得Borland C ++中的std::string完全是拙劣的。如果仅使用std::string不起作用,请考虑使用strcmp来比较C字符串(就像您拥有的数组一样)。

注3:在标准C ++中(自1998年的第一个标准以来),没有<iostream.h>标题。而是包含<iostream>,并可能添加using namespace std;。或适当的using指令,或coutendl等名称的资格,即撰写std::coutstd::endl

在其他新闻中:

  • 通过为宏保留SHOUTCASE名称,可以显着简化代码阅读体验,并避免意外的文本替换进行引导。更不用说符合关于此的共同惯例。

  • 通过使用getline代替>>,程序可以读取其中包含空格的名称。但是,这仅在输入缓冲区为空时才能正常工作(因为getline不会跳过空格)。所以,这是需要考虑的事情,但它可能涉及一些工作。

答案 1 :(得分:0)

我尝试以不同的方式编写代码,并以某种方式使用它。但我仍然不知道前面代码中的问题来源。

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

main()
{
    char NM [20], STAT ;
    int NIP, GOL, GP, JA, TI, TA, TG ;

    cout << "ID Number: " ;
    cin >> NIP ;

    cout << "Name: " ;
    gets (NM) ;

    cout << "Faction: " ;
    cin >> GOL ;

    if (GOL == 1)
        GP = 1500000 ;
    else if (GOL == 2)
        GP = 2000000 ;
    else
        GP = 2500000 ;

    cout << "Status: " ;
    cin >> STAT ;

    if (STAT == 'K')
    {
        TI = 0.05 * GP ;
        cout << "Number of children: " ;
        cin >> JA ;
        if (JA <= 3)
            TA = 0.02 * GP * JA ;
        else
            TA = 0.02 * GP * 3 ;
    }
    else
        TI = 0, TA = 0 ;

    TG = GP + TI + TA ;

    cout << endl << "-Results-" << endl ;
    cout << "Your GP: " << GP << endl ;
    cout << "Your TI: " << TI << endl ;
    cout << "Your TA: " << TA << endl ;
    cout << "Your TG: " << TG << endl ;

    getch () ;

}

答案 2 :(得分:0)

我修改了你的代码!

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

int main()
{
   int NIP, GOL, GP, TI, TA, JA, TG ;
   char NM[20];
   string STAT; // FIX 1 --------------------------------------------------------

   cout << "ID Number : " ;
   cin >> NIP ;

   cout << "Name : " ;
   gets(NM);

   cout << "Faction : " ;
   cin >> GOL ;

   if (GOL == 1)
   {
    GP = 1500000 ;
   }
   else if (GOL == 2)
   {
    GP = 2000000 ;
   }
   else
   {
    GP = 2500000 ;
   }

   cout << "Status  : " ;
   cin>>STAT;

   if ((STAT == "Married") || (STAT == "married"))
    {
      cout << "Number of children : " ; // FIX #2 -------------------------------------------------
      cin >> JA ;
      TI = 0.05 * GP ;

      if (JA <= 3)
      {
        TA = 0.02 * GP * JA ;
      }
      else
      {
        TA = 0.02 * GP * 3 ;
      }
   }
   else
   {
    TI = 0 ;
    TA = 0 ;
   }

   TG = GP + TI+ TA ;

   cout << endl << "-Results-" << endl ;
   cout << "Your GP: " << GP << endl ;
   cout << "Your TI: " << TI << endl ;
   cout << "Your TA: " << TA << endl ;
   cout << "Your TG: " << TG << endl ;

   getch () ;

}

问题是你不能只使用C ++中的if语句来比较数组 你可以使用char,然后只使用像M&#39; M&#39; 或者你可以使用字符串,但也许它会引起一些警告。