为什么编译器无法输入if语句?

时间:2020-02-29 16:36:38

标签: c++

这是一个简单的时间转换代码。问题是:

给出12小时AM / PM格式的时间,将其转换为军事(24小时)时间。

注意::午夜是12点钟的12:00:00 AM,24点钟是00:00:00。中午是在12小时制的12:00:00 PM和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:00 AM时,应将其更改为00:00:00,但是由于某种原因,它没有输入第一个if语句。即使对于12:34:41 AM,它也会给出12:34:41。

我知道错误可能真的很愚蠢,但是请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

就像Mat所说的那样,整数0-9和ASCII中的字符没有直接映射。签出this。您可以将数字表示为带引号的字符(因此用“ 1”代替1),它们将被读取为其ASCII值(因此“ 1”将被读取为49)或直接使用ASCII值。我推荐第一种方法。