问题描述
我做了一个程序,将数字转换为罗马数字,当.exe文件不起作用时,我打算将其显示给我的一个朋友。它询问用户要输入哪个号码,然后他将程序关闭。我不明白的是为什么它在DevC ++上编译后就可以工作,但是与.exe却有不同的行为
我发现那里几乎没有解决方案,而对我有用的解决方案是添加一个:
int a;
cin>>a;
返回零之前。现在可以了。我不明白控制台如何不执行该操作。我将代码留在这里。
#include <iostream>
using namespace std;
int main(){
int numero,unidades,decenas,centenas,millares;
int comprobante;
cout<<"Este programa Traduce un numero de 4 cifras a numeros romanos.\nDigite un numero de
maximo cuatro cifras: ";
cin>>numero;
unidades= numero%10;
numero /= 10;
decenas= numero%10;
numero/=10;
centenas= numero%10;
numero/=10;
millares=numero;
comprobante=millares/10;
if(comprobante==0){
cout<<"Su numero Traducido a numeros romanos es: ";
switch(millares){
case 1: cout<<"M"; break;
case 2: cout<<"MM"; break;
case 3: cout<<"MMM"; break;
}
switch(centenas){
case 1: cout<<"C"; break;
case 2: cout<<"CC"; break;
case 3: cout<<"CCC"; break;
case 4: cout<<"CD"; break;
case 5: cout<<"D"; break;
case 6: cout<<"DC"; break;
case 7: cout<<"DCC"; break;
case 8: cout<<"DCCC"; break;
case 9: cout<<"CM"; break;
}
switch(decenas){
case 1: cout<<"X"; break;
case 2: cout<<"XX"; break;
case 3: cout<<"XXX"; break;
case 4: cout<<"XL"; break;
case 5: cout<<"L"; break;
case 6: cout<<"LX"; break;
case 7: cout<<"LXX"; break;
case 8: cout<<"LXXX"; break;
case 9: cout<<"XC"; break;
}
switch(unidades){
case 1: cout<<"I"; break;
case 2: cout<<"II"; break;
case 3: cout<<"III"; break;
case 4: cout<<"IV"; break;
case 5: cout<<"V"; break;
case 6: cout<<"VI"; break;
case 7: cout<<"VII"; break;
case 8: cout<<"VIII"; break;
case 9: cout<<"IX"; break;
}
}
else{
cout<<"Te dije de 4 cifras. Por desgraciado me cierro.";
}
int a;
cin>>a;
return 0;
}
解决方法
当程序完成时,程序将立即在终端中关闭。 cin>>a
结束时,它正在等待输入。参见this。
包含
#include
并在代码末尾添加 getch(); 。这将使您的控制台无法关闭。
,您的代码完全没问题。
当main()
到达return 0;
时,它就完成了。如果您将其作为.exe文件运行,则意味着程序已完成。当程序完成后,它将被关闭。
有几种方法可以使它保持关闭状态。许多人提到的一种方法是在窗口的末尾添加cin >> something;
或getch();
和#include <conio.h>
,以便等到您输入内容后。
您还可以在程序到达return
语句之前延迟程序。您可以在这里How do you add a timed delay to a C++ program?
您还可以使用while
循环将整个程序包装起来,例如:
while(true)
{
// Your programs here
if(someCondition) break;
};
其中someCondition
是bool
类型,也许是char c; cin >> c; bool someCondition = (c == 'x');
,这样程序只有在有人输入'x'时才结束,否则它将再次运行。