Borland C++ 5.02 cout 未在控制台上显示 window
Borland C++ 5.02 cout not showing on the console window
对于这个新手问题,我很抱歉,
我试图使用 borland 5.02 制作这个程序,但由于某种原因,当我写 married 时,if (stat) 中的 cout 没有显示在控制台 window 上。我不知道出了什么问题,我已经被困了几个小时。请帮助我
#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
姓名:维克蒙
派系:1
状态:已婚(问题出在这里)
-结果-
您的全科医生:1500000
你的TI:0
你的助教:0
您的TG:1500000
即使我在状态上写了 married,cout << "Number of children : " << endl ;
也没有出现在控制台 window 上。就好像 if (STAT == "Married" || STAT == "married")
不起作用,而 "Status: married" 算作
else
{
TI = 0 ;
TA = 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 () ;
}
如果 STAT
是 std::string
.,STAT == "Married"
将在标准 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
指令,或 cout
和 endl
等名称限定,即写作 std::cout
和 std::endl
.
在其他新闻中:
通过为宏保留 SHOUTCASE 名称,您可以显着简化代码阅读体验,并避免意外的文本替换启动。更不用说符合关于这个的共同约定了。
通过使用 getline
而不是 >>
,程序可以读取其中包含 space 的名称。然而,这只有在输入缓冲区为空时才能很好地工作(因为 getline
不会跳过 whitespace)。所以,这是需要考虑的事情,但它可能涉及一些工作。
我修改了你的代码!
#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'
或者您可以改为使用字符串,但它可能会引起一些警告。
对于这个新手问题,我很抱歉, 我试图使用 borland 5.02 制作这个程序,但由于某种原因,当我写 married 时,if (stat) 中的 cout 没有显示在控制台 window 上。我不知道出了什么问题,我已经被困了几个小时。请帮助我
#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
姓名:维克蒙
派系:1
状态:已婚(问题出在这里)
-结果-
您的全科医生:1500000
你的TI:0
你的助教:0
您的TG:1500000
即使我在状态上写了 married,cout << "Number of children : " << endl ;
也没有出现在控制台 window 上。就好像 if (STAT == "Married" || STAT == "married")
不起作用,而 "Status: married" 算作
else
{
TI = 0 ;
TA = 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 () ;
}
STAT
是 std::string
.,STAT == "Married"
将在标准 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
指令,或 cout
和 endl
等名称限定,即写作 std::cout
和 std::endl
.
在其他新闻中:
通过为宏保留 SHOUTCASE 名称,您可以显着简化代码阅读体验,并避免意外的文本替换启动。更不用说符合关于这个的共同约定了。
通过使用
getline
而不是>>
,程序可以读取其中包含 space 的名称。然而,这只有在输入缓冲区为空时才能很好地工作(因为getline
不会跳过 whitespace)。所以,这是需要考虑的事情,但它可能涉及一些工作。
我修改了你的代码!
#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' 或者您可以改为使用字符串,但它可能会引起一些警告。