Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编写一个输入数字1-12并输出相应月份的程序_C++ - Fatal编程技术网

C++ 编写一个输入数字1-12并输出相应月份的程序

C++ 编写一个输入数字1-12并输出相应月份的程序,c++,C++,我的程序会提示用户输入数字1-12并输出相应的月份。 好的,我知道我错过了这个程序的一个非常重要的部分,但我知道我正在努力找出该使用什么。我需要一个包含所有月份名称的字符串吗?我也知道我需要在cout之后放一些东西你应该使用cin>>这个月 在if语句之前。因为若你们不使用这个,你们的键盘输入将永远不会被分配到你们的整数 我还建议使用switch case,尽可能避免使用if语句 在您的情况下,字符串数组也适用,但switch case更方便 您可以检查下面的代码。我建议删除break语句,然后

我的程序会提示用户输入数字1-12并输出相应的月份。
好的,我知道我错过了这个程序的一个非常重要的部分,但我知道我正在努力找出该使用什么。我需要一个包含所有月份名称的字符串吗?我也知道我需要在cout之后放一些东西你应该使用
cin>>这个月
在if语句之前。因为若你们不使用这个,你们的键盘输入将永远不会被分配到你们的整数

我还建议使用switch case,尽可能避免使用if语句

在您的情况下,字符串数组也适用,但switch case更方便

您可以检查下面的代码。我建议删除break语句,然后运行代码删除默认语句,然后输入无效的inpu,然后运行代码。它将帮助您了解开关盒的工作原理

#include <iostream>

using namespace std;

int main (){
    int month;
    cout<<"Enter month: ";
    cin>>month;

    switch(month){
    case 1:
        cout<<"Jan"<<endl;
        break;
    case 2:
        cout<<"Feb"<<endl;
        break;
    case 3:
        cout<<"Mar"<<endl;
        break;
    case 4:
        cout<<"Apr"<<endl;
        break;
    case 5:
        cout<<"May"<<endl;
        break;
    case 6:
        cout<<"Jun"<<endl;
        break;
    case 7:
        cout<<"Jul"<<endl;
        break;
    case 8:
        cout<<"Aug"<<endl;
        break;
    case 9:
        cout<<"Sep"<<endl;
        break;
    case 10:
        cout<<"Oct"<<endl;
        break;
    case 11:
        cout<<"Nov"<<endl;
        break;
    case 12:
        cout<<"Dec"<<endl;
        break;

    default: // default is for when you enter a number out of 1-12 range. for instance, 13
        cout<<"invalid input!"<<endl;
    }

    return (0);
}
#包括
使用名称空间std;
int main(){
整月;
每月一次;
开关(月){
案例1:
库特
我需要一个包含所有月份名称的字符串吗

不是字符串,而是字符串数组可以用来使代码更加紧凑,正如Timur指出的,您可以使用
cin
从控制台输入读取:

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

int main()
{
    int m;
    string months[] = {"Jan", "Feb", "Mar", "Apr", "May",
                       "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    cout << "Enter a month number: ";
    cin >> m;
    cout << "You selected " << months[m-1] << endl;
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int m;
字符串月份[]={“一月”、“二月”、“三月”、“四月”、“五月”,
“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
cout>m;

cout有几种方法可以做到这一点。首先,你的方法是正确的,但是我会在if块中指定一个字符串作为月份值,并在末尾设置字符串。
如果您了解数组,另一种更简单的方法是使用月份创建一个数组,并使用数组[monthnumber]而不是自己创建,我想我会使用标准库中内置的一些函数:

struct tm t = { 0 };

std::cin >> t.tm_mon;

char buffer[32];

strftime(buffer, sizeof(buffer), "%B", &t);
std::cout << buffer;

…在执行上面的代码之前,用户输入,比如说,
5
,您将得到德语(“Juni”)的结果。通常您希望使用:
setlocale(LC_ALL,”);
,它检索用户为其设置操作系统的区域设置,并使用该区域设置,因此在根本不修改代码的情况下,它将打印“June”对于我来说,“Juni”表示使用德语的人,“Junio”表示使用西班牙语的人等等。

首先,定义一个变量来保存月份名称:

string monthName;
然后,在if-else嵌套中的每个cout命令之后,添加以下内容:

monthName.assign("YOUR_MONTH_HERE");
例如,如果month=1,上面的行应该是
monthName.assign(“一月”);

节目结束时,将monthName放入cout:

cout<< "The month is "<<monthName;

coutt您的问题是如何实际将
month
设置为用户键入的任何内容或其他内容?我已经设置了月份,因此它显示了我现在正在尝试获取coutt。这个问题似乎脱离主题,因为它涉及的是一个非常低级和独特的问题,除了询问者之外,对任何人都没有用处。因此,这不是一个问题“修好我的密码"我们还没有学习数组。我改变了这个:int month;如果你在第一个月插入一个空字符串,那么你就不必从索引中减去1。
我还建议使用switch case,并尽量避免使用if语句--
--为什么?@RobertHarvey:还有:嗯,好的uch说这是一个风格的问题,执行速度在这里几乎肯定是无关紧要的。只是说,“@RobertHarvey这对这个案例可能没有什么不同。但我不久前问过自己这个问题,对于密集的情况,案例值编译器生成跳转表,对于稀疏的情况-二进制搜索或一系列if/else,所以在最坏的情况下,切换速度和if/else一样快,但通常更快。尽管有人说一些编译器也可以类似地优化if/else
monthName.assign("YOUR_MONTH_HERE");
cout<< "The month is "<<monthName;