编写一个程序,输入数字 1-12 并输出相应的月份
writting a program that inputs a number 1-12 and outputs the corresponding month
我的程序假设提示用户输入数字1-12并输出相应的月份。 好的,我知道我错过了这个程序的一个非常重要的部分,但我知道我正在努力弄清楚该使用什么。我是否需要一个包含所有月份名称的字符串?我也知道我需要在 cout<<"月份是"之后放一些东西<<有些东西必须放在这里,所以答案会打印出来,但我现在不确定是什么。我也认为我需要 int month= 一些东西,但不确定它应该是 1-12 还是月名。这是我编辑的程序,它正在运行,但现在它有一个调试错误,变量"month"在没有初始化的情况下被使用。那是什么意思?
#include <iostream>
#include <string>
using namespace std;
char chr;
int main()
{
int month;
cout<<"Enter a number from 1-12.";
if (month ==1)
cout<<"January";
else if (month==2)
cout<< "February";
else if (month==3)
cout<<"March";
else if (month==4)
cout<<"April";
else if (month==5)
cout<<"May";
else if (month==6)
cout<<"June";
else if (month==7)
cout<<"July";
else if (month==8)
cout<<"August";
else if (month==9)
cout<<"September";
else if (month==10)
cout<<"October";
else if (month==11)
cout<<"November";
else if (month==12)
cout<<"December";
else if (month>12)
cout<<"Sorry I need a number from 1-12."<<endl;
else if(month<=12)
cout<< "The month is "<<month;
cin>>chr;
return 0;
}
你应该使用cin>>month;
在 if 语句之前。因为如果您不使用它,则来自键盘的输入将永远不会分配给您的整数。
我还建议使用开关大小写,并尽可能避免使用 if 语句。
在您的情况下,字符串数组也适用,但开关盒更方便
您可以检查以下代码。我建议删除中断语句然后运行代码或删除默认语句并输入无效的 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);
}
不是字符串,我是否需要一个包含所有月份名称的字符串?
而是字符串数组可以用来使代码更加紧凑,正如 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;
}
数组索引在 C/C++ 中从 0 开始,这就是为什么您需要从用户输入的数字中减去 1
。您可能还需要添加一个 if
语句,以确保数字介于 1 和 12 之间(包括 1 和 12),但我会将其留给读者作为练习。
与其自己做这件事,我想我会使用标准库中内置的一些函数:
struct tm t = { 0 };
std::cin >> t.tm_mon;
char buffer[32];
strftime(buffer, sizeof(buffer), "%B", &t);
std::cout << buffer;
除此之外,这还具有区域设置感知的优点,因此,如果(例如)您执行以下操作:
setlocale(LC_ALL, "de-DE");
。在执行上面的代码之前,用户输入,比如说,5
,你会得到德语的结果("Juni")。通常你想使用:setlocale(LC_ALL, "");
,它检索用户已为其设置操作系统的区域设置,并使用它,因此根本不修改您的代码,它会为我打印"June",为使用德语的人打印"Juni",为使用西班牙语的人打印"Junio",等等。
首先,定义一个变量来保存月份的名称:
string monthName;
然后在 if else 嵌套中的每个 cout 命令之后,添加以下内容:
monthName.assign("YOUR_MONTH_HERE");
例如,如果 month=1,则上面的行应monthName.assign("January");
在程序结束时,只需将 monthName 放入 cout:
cout<< "The month is "<<monthName;
有几种方法可以做到这一点。首先,你的方式是正确的,但是我会在 if 块中为一个字符串分配月份值,并在末尾引用字符串。另一种更简单的方法是,如果你知道数组,是用月份创建一个数组,然后<-(你能找到该语句中的错误吗)。
此外,最好将其放在一个循环中,直到用户输入 1 到 12 之间的数字
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 如果我决定输入 (1 2) 而它要求 x,为什么我的输出会出错,但如果我输入 (12) 工作正常
- 为什么以下程序中的输出为 12 字节,而总大小仅为 6 位
- 如何在C++中输出日期如下2013年12月8日
- 编写一个程序,输入数字 1-12 并输出相应的月份