首页 > 解决方案 > 为什么编译器不能输入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。

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

标签: c++

解决方案


就像 Mat 说的,整数 0-9 和 ASCII 中的字符没有直接映射。看看这个。您可以将数字表示为带引号的字符(因此 '1' 而不是 1),它们将被读取为其 ASCII 值(因此 '1' 将被读取为 49)或直接使用 ASCII 值。我推荐第一种方法。


推荐阅读