c++ - 为什么编译器不能输入if语句?
问题描述
这是一个简单的时间转换代码。问题是:
给定 12 小时 AM/PM 格式的时间,将其转换为军用(24 小时)时间。
注意:午夜是 12 小时制的凌晨 12:00:00,而 24 小时制的午夜是 00:00:00。中午是 12 小时制的中午 12:00:00,而 24 小时制的中午是 12:00:00。
我的代码:-
#include<iostream>
using namespace std;
int main()
{
char a[10];
for(int i=0;i<10;i++)
cin>>a[i];
if( a[0]== 1 && a[1]== 2 )
{
if(a[8]=='A')
{
a[0]=0;
a[1]=0;
}
}
else if(a[8]=='P')
{
a[0]+=1;
a[1]+=2;
}
for(int k=0;k<8;k++)
cout<<a[k];
}
但是当输入是 12:00:00AM 时,它应该将其更改为 00:00:00 但由于某种原因,它没有输入第一个 if 语句。即使是上午 12:34:41,它也会给出 12:34:41。
我知道这个错误可能真的很愚蠢,但请帮我解决这个问题
解决方案
就像 Mat 说的,整数 0-9 和 ASCII 中的字符没有直接映射。看看这个。您可以将数字表示为带引号的字符(因此 '1' 而不是 1),它们将被读取为其 ASCII 值(因此 '1' 将被读取为 49)或直接使用 ASCII 值。我推荐第一种方法。
推荐阅读
- c - 如何用C获取窗口的类名
- postgresql - sql文件中的Postgresql命令行变量使用
- java - Java: Gson: fromJson: 获取元素值
- dask - dask_lightgbm 使用的完整训练集?
- python - django中的排除列表无法更新
- javascript - 如何在javascript中的列表中添加元素?
- github - 推送源主机后 GitHub 和终端的 SSH 问题
- java - FakeFtpServer 错误:连接被拒绝(连接被拒绝)
- microsoft-graph-api - Office 插件:如何处理“此插件的许可证信息丢失或过期。所以它可能有有限的功能警告?
- javascript - 是否有替代 Chromebook 的 Chrome 开发者工具已禁用的替代方法?