我有一个关于本学期早些时候的 DS&OOP 作业的问题。其中一个问题是模拟桥上的汽车收费站,您必须跟踪 1) 经过的汽车 2) 支付过路费的汽车 3) 经过的汽车总数和收取的现金总额。用户必须按“p”表示付费汽车,“n”表示非付费汽车,按退出按钮(esc)必须结束代码并打印出经过的汽车总数和收取的钱数。我使用 while 循环完成了这部分代码,如下所示:
int main()
{
tollBooth t;
char c = 0;
while (c != 'e' && c != 'E')
{
cout << "Choose:\n'p' paying car \n'n' nonpaying car \n'e' exit \n";
cin >> c;
switch (c) {
case 'p':
case 'P':
t.payingCar();
break;
case 'n':
case 'N':
t.nopayCar();
break;
case 'e':
case 'E':
break;
default:
cout << "Invalid choice, try again." << endl;
break;
}
}
t.Display();
return 0;
}
我不知道如何在按下退出按钮时结束代码,所以我只是选择了字母 E 而不是 esc 按钮。但如果我使用退出按钮来完成此操作,代码中需要进行哪些更改?
别担心,我会支持你的!
因此,为了解决这个问题,我们使用“_getch()”函数,该函数通常可以在“
Escape 键的 ASCII 代码是 27。当您按下 Escape 键时,它会生成 ASCII 值 27。因此,我将稍微更改您的程序以获得您想要的结果:
int main()
{
tollBooth t;
char key;
while (key != 27)
{
key = _getch();
cout << "Choose:\n'p' paying car \n'n' nonpaying car \n'e' exit \n";
if (key != 27)
cout << key << endl;
if (key == 'p')
t.payingCar();
else if (key == 'n')
t.nopayCar();
else if (key != 27)
cout << "Invalid input"<<endl;
}
t.display();
return 0;
}
在上面的程序中,为了更好地理解,我使用了“key”而不是“c”。