帮我看看这个C++程序有什么问题,是24小时制转化为12小时制

2025-02-25 05:03:29
推荐回答(4个)
回答1:

#include
using namespace std;
void in(int& hour,int& minute);
void transfer(int& hour,int& minute,char& mark);
int main()
{
int hour=0,minute=0;
char maohao=':',mark='A',ans='y';
while(ans=='y'||ans=='Y') //这里用==
{
in(hour,minute);

transfer(hour,minute,mark);
cout<<"该时间转化为:"<<<"是否需要再次计算?需要,请按y.";
cin >> ans;
}
return 0;
}
void in(int& hour,int& minute)
{
cout<<"请分别输入小时和分钟(24小时制):\n";
cin>>hour; //分开输入,以清除残存数据
cin>>minute;
}
void transfer(int& hour,int& minute,char& mark)
{
if(hour>=0 && hour<=12)
{
mark='A';
}
else
{
hour-=12;
mark='p';
}
}
就这么几个错误,不过你这个
in(int& hour,int& minute); 函数过于简单了,应该对输入进行选择,也就是说hour应该在1-24之间,而minute在0-59之间,超出这个范围就给出错误信息,并且要求用户重新输入,这样更好

回答2:

晕while(ans='y'||ans='Y')
应该是while(ans=='y'||ans=='Y')

其他的没问题,不过你没考虑如果输入的数据是25 90,会出现什么问题呢~

回答3:

while(ans=='y'||ans=='Y') //这里用==
hour-=12; 改成hour%=12;

回答4:

#include

using
namespace
std;
void
in(int&
hour,int&
minute);
void
transfer(int&
hour,int&
minute,char&
mark);
int
main()
{
int
hour=0,minute=0;
char
maohao=':',mark='A',ans='y';
while(ans=='y'||ans=='Y')
//这里用==
{
in(hour,minute);
transfer(hour,minute,mark);
cout<<"该时间转化为:"<<<"是否需要再次计算?需要,请按y.";
cin
>>
ans;
}
return
0;
}
void
in(int&
hour,int&
minute)
{
cout<<"请分别输入小时和分钟(24小时制):\n";
cin>>hour;
//分开输入,以清除残存数据
cin>>minute;
}
void
transfer(int&
hour,int&
minute,char&
mark)
{
if(hour>=0
&&
hour<=12)
{
mark='A';
}
else
{
hour-=12;
mark='p';
}
}
就这么几个错误,不过你这个
in(int&
hour,int&
minute);
函数过于简单了,应该对输入进行选择,也就是说hour应该在1-24之间,而minute在0-59之间,超出这个范围就给出错误信息,并且要求用户重新输入,这样更好