【问题标题】:My program not returning the value of months我的程序没有返回月份的值
【发布时间】:2021-05-24 16:16:33
【问题描述】:

我必须使用什么来将月份存储为变量? 当我运行代码时,它说“警告字符常量对于它的类型来说太长了”。

我创建了一个程序来检查给定月份中有多少天,因此我从用户那里获取一个值并将其放入m。我也尝试将m 的值作为(字符),但它不起作用。我检查这个月是二月还是另一个月。如果是二月,则要求输入年份,y,如果不是二月,则在所有条件下匹配m的值,并输出月份,m

#include<iostream>
    using namespace std;
    int main(){
    char m;
    int y;
    cout<<"Plase Enter The month:- ";
    cin>>m;
    if (m=='january'||m=='march'||m=='april'||m=='may'||m=='june'||m=='july'||m=='august'||m=='september'||m=='december'||m=='october'||m=='november'||m=='jan'||m=='mar'||m=='apr'||m=='may'||m=='jun'||m=='jul'||m=='aug'||m=='sep'||m=='dec'||m=='oct'||m=='nov'||m=='JANUARY'||m=='MARCH'||m=='APRIL'||m=='MAY'||m=='JUNE'||m=='JULY'||m=='AUGUST'||m=='SEPTEMBER'||m=='OCTOBER'||m=='NOVEMBER'||m=='DECEMBER')
    {
        if (m=='jan'||m=='january'||m=='JANUARY')
        {
            cout<<"There Are 31";
        }
        else if (m=='march'||m=='mar'||m=='MARCH')
        {
            cout<<"There Are 31";
        }
        else if (m=='apr'||m=='april'||m=='APRIL')
        {
            cout<<"There Are 30";
        }
        else if (m=='may'||m=='MAY')
        {
            cout<<"There Are 31";
        }
        else if (m=='june'||m=='jun'||m=='JUNE')
        {
            cout<<"There Are 30";
        }
        else if (m=='jul'||m=='july'||m=='JULY')
        {
            cout<<"There Are 31";
        }
        else if (m=='aug'||m=='august'||m=='AUGUST')
        {
            cout<<"There Are 31";
        }
        else if (m=='sep'||m=='september'||m=='SEPTEMBER')
        {
            cout<<"There Are 30";
        }
        else if (m=='oct'||m=='october'||m=='OCTOBER')
        {
            cout<<"There Are 31";
        }
        else if (m=='nov'||m=='november'||m=='NOVEMBER')
        {
            cout<<"There Are 30";
        }
        else if (m=='dec'||m=='december'||m=='december')
        {
            cout<<"There Are 31";
        }
    }
    else if(m=='feburary'||m=='feb'||m=='FEBURARY'){
        cout<<"You Entered ";
        cout<<m;
        cout<<" which have more days in Leap year's ";
        cout<<"So Please Enter The year:- ";
        
        cin>>y;
        if (y>=1752)
    {
        
    if ((y-1752)%4==0)
    {
        cout<<"There are 29 days";
    }
    else if((y-1752)%4!=0){
        cout<<"There is 28 days";
    }}
    else{
        cout<<"The First leap is started from 1752 so Please enter Number Greater than it";
    }
    
    }
   else cout<<"------------------Please Enter A valid Month or Check Your Spelling--------------------";
        return 0;
    }

【问题讨论】:

  • 使用字符串,字符串和字符是两个不同的东西

标签: c++ if-statement variables compiler-warnings question-answering


【解决方案1】:

试试这个:

#include<iostream>
#include <string>
using namespace std;

int main() {
    std::string m;
    int y;
    cout << "Plase Enter The month:- ";
    cin >> m;
    if (m == "january" || m == "march" || m == "april" || m == "may" || m == "june" || m == "july" || m == "august" || m == "september" || m == "december" || m == "october" || m == "november" || m == "jan" || m == "mar" || m == "apr" || m == "may" || m == "jun" || m == "jul" || m == "aug" || m == "sep" || m == "dec" || m == "oct" || m == "nov" || m == "JANUARY" || m == "MARCH" || m == "APRIL" || m == "MAY" || m == "JUNE" || m == "JULY" || m == "AUGUST" || m == "SEPTEMBER" || m == "OCTOBER" || m == "NOVEMBER" || m == "DECEMBER")
    {
        if (m == "jan" || m == "january" || m == "JANUARY")
        {
            cout << "There Are 31";
        }
        else if (m == "march" || m == "mar" || m == "MARCH")
        {
            cout << "There Are 31";
        }
        else if (m == "apr" || m == "april" || m == "APRIL")
        {
            cout << "There Are 30";
        }
        else if (m == "may" || m == "MAY")
        {
            cout << "There Are 31";
        }
        else if (m == "june" || m == "jun" || m == "JUNE")
        {
            cout << "There Are 30";
        }
        else if (m == "jul" || m == "july" || m == "JULY")
        {
            cout << "There Are 31";
        }
        else if (m == "aug" || m == "august" || m == "AUGUST")
        {
            cout << "There Are 31";
        }
        else if (m == "sep" || m == "september" || m == "SEPTEMBER")
        {
            cout << "There Are 30";
        }
        else if (m == "oct" || m == "october" || m == "OCTOBER")
        {
            cout << "There Are 31";
        }
        else if (m == "nov" || m == "november" || m == "NOVEMBER")
        {
            cout << "There Are 30";
        }
        else if (m == "dec" || m == "december" || m == "december")
        {
            cout << "There Are 31";
        }
    }
    else if (m == "feburary" || m == "feb" || m == "FEBURARY") {
        cout << "You Entered ";
        cout << m;
        cout << " which have more days in Leap year\"s ";
            cout << "So Please Enter The year:- ";

        cin >> y;
        if (y >= 1752)
        {

            if ((y - 1752) % 4 == 0)
            {
                cout << "There are 29 days";
            }
            else if ((y - 1752) % 4 != 0) {
                cout << "There is 28 days";
            }
        }
        else {
            cout << "The First leap is started from 1752 so Please enter Number Greater than it";
        }

    }
    else cout << "------------------Please Enter A valid Month or Check Your Spelling--------------------";
    return 0;
}

在c++中,单引号'只能用于字符,例如'e',但不能用于字符串,例如'hello'。对于字符串,请使用双引号,例如 "

如果您希望将输入与其他内容进行比较,您还应该使用std::strings。

【讨论】:

    【解决方案2】:
    1. 您将m 声明为字符并将其用作字符串。
    2. 您使用'' 来表示字符串,但您应该使用""
    @@ -1,70 +1,35 @@
     #include<iostream>
    +#include<string>
     
     using namespace std;
     
     int main()
     {
    -    char m;
    +    string m;
         int y;
         cout<<"Plase Enter The month:- ";
         cin>>m;
    -    if (m=='january'||m=='march' ...
    +    if (m=="january"||m=="march" ...
         {
    -        if (m=='jan'||m=='january'||m=='JANUARY')
    +        if (m=="jan"||m=="january"||m=="JANUARY")
             {
                 cout<<"There Are 31";
             }
    
    

    【讨论】:

    • 这是一个名为diff的程序的输出,可以使用patch获取更新的源代码,相关:https://opensource.com/article/18/8/diffs-patches
    • 我这样做是为了展示要进行哪些更改才能使其正常工作,并在回答中说明了原因。
    • 没问题,我只是想给没见过这种输出的人解释一下。
    • 测试总是会失败。另外,我很确定这不会编译,因为 chars 和 const char*s 没有 == 运算符。
    • 如果语法正确,它将编译并且测试不会总是失败。从那时起,OP 的工作就是用他的程序做点什么。我们帮助他指出了他的错误,现在他的工作就是从中吸取教训。
    【解决方案3】:

    其实m是一个字符。一个字符的大小是 1 个字节。这意味着你可以分配char m = 'q'; 但你不能说char m = 'qq'; 这里你必须使用一个字符数组,即char m[] = "qq";

    【讨论】:

    • 最好使用std::string
    猜你喜欢
    • 2012-02-23
    • 2020-05-24
    • 2022-09-27
    • 2016-11-28
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多