如何通过用户输入打印一周的 7 天?
How to Print 7 Days of week by taking user input?
问题是当我第一次 运行 我的程序并输入 5 时程序将 return 星期五 然后按 y 在不关闭控制台的情况下重新启动操作并输入 9 程序将 return 默认错误消息并且还将 return Friday 这是我代码中的一个严重错误,我无法确定是什么导致了错误。
代码:
#include <iostream>
#include <limits>
using namespace std;
enum Dayofweek {monday = 1 , tuesday = 2, wednesday = 3, thursday = 4, friday = 5, saturday = 6, sunday = 7};
string Day (Dayofweek);
int main()
{
int i;
char resTart;
Dayofweek d = monday;
do
{
cin.clear();
system ("cls");
cout << "Enter the day of a week:[1] [2] [3] [4] [5] [6] [7]: ";
while (!(cin >> i))
{
//system ("cls");
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
system ("cls");
cout << "Invalid Input detected, Only numbers are allowed. 1, 2, 3, 4 ,5 ,6 ,7. Try Again." << '\n';
cout << "Enter the day of a week: ";
}
cout << Day (Dayofweek (i)) << '\n';
do
{
cin.clear();
cout << "Do you want to Continue [Y/n]" << '\n';
cin >> resTart;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
system ("cls");
}while (resTart != 'Y' && resTart != 'y' && resTart != 'N' && resTart != 'n' );
}while (resTart == 'Y' || resTart == 'y');
}
string Day (Dayofweek d)
{
switch (d)
{
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
default:
cout << "Invalid Input detected, Only numbers are allowed in limit to 7 days of week, Try Again." << '\n';
}
}
控制台输出:
输入星期几:1 [2] [3] [4] [5] [6] [7]: 9
检测到无效输入,只允许输入数字。 1、2、3、4、5、6、7。再试一次。
星期五
你想继续吗[Y/n]
Day
函数应该 return 一个 string
。但是,在 switch 语句的 default
情况下,您没有 returning string
,它调用未定义的行为(在您的情况下,函数 returned "Friday",但 任何事情 都可能发生)。
您需要 return 一些东西 才能使程序定义明确:
string Day (Dayofweek d)
{
switch (d)
{
case 1:
return "Monday";
// etc ...
case 7:
return "Sunday";
default:
cout << "Invalid Input detected, Only numbers are allowed in limit to 7 days of week, Try Again." << '\n';
return "not a day";
}
}
我强烈建议打开编译器中的所有警告(例如,使用 gcc
和 clang
,您可以将 -Wall
作为编译标志传递)。编译器会让你知道你正在做的事情可能是错误的。
当执行以无效值结束时,只是 return 一个空字符串。
string Day (Dayofweek d)
{
string null;
switch (d)
{
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
default:
cout << "Invalid Input detected, Only numbers are allowed. 1, 2, 3, 4 ,5 ,6 ,7. Try Again." << '\n';
return string (null);
}
}
问题是当我第一次 运行 我的程序并输入 5 时程序将 return 星期五 然后按 y 在不关闭控制台的情况下重新启动操作并输入 9 程序将 return 默认错误消息并且还将 return Friday 这是我代码中的一个严重错误,我无法确定是什么导致了错误。 代码:
#include <iostream>
#include <limits>
using namespace std;
enum Dayofweek {monday = 1 , tuesday = 2, wednesday = 3, thursday = 4, friday = 5, saturday = 6, sunday = 7};
string Day (Dayofweek);
int main()
{
int i;
char resTart;
Dayofweek d = monday;
do
{
cin.clear();
system ("cls");
cout << "Enter the day of a week:[1] [2] [3] [4] [5] [6] [7]: ";
while (!(cin >> i))
{
//system ("cls");
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
system ("cls");
cout << "Invalid Input detected, Only numbers are allowed. 1, 2, 3, 4 ,5 ,6 ,7. Try Again." << '\n';
cout << "Enter the day of a week: ";
}
cout << Day (Dayofweek (i)) << '\n';
do
{
cin.clear();
cout << "Do you want to Continue [Y/n]" << '\n';
cin >> resTart;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
system ("cls");
}while (resTart != 'Y' && resTart != 'y' && resTart != 'N' && resTart != 'n' );
}while (resTart == 'Y' || resTart == 'y');
}
string Day (Dayofweek d)
{
switch (d)
{
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
default:
cout << "Invalid Input detected, Only numbers are allowed in limit to 7 days of week, Try Again." << '\n';
}
}
控制台输出: 输入星期几:1 [2] [3] [4] [5] [6] [7]: 9 检测到无效输入,只允许输入数字。 1、2、3、4、5、6、7。再试一次。 星期五 你想继续吗[Y/n]
Day
函数应该 return 一个 string
。但是,在 switch 语句的 default
情况下,您没有 returning string
,它调用未定义的行为(在您的情况下,函数 returned "Friday",但 任何事情 都可能发生)。
您需要 return 一些东西 才能使程序定义明确:
string Day (Dayofweek d)
{
switch (d)
{
case 1:
return "Monday";
// etc ...
case 7:
return "Sunday";
default:
cout << "Invalid Input detected, Only numbers are allowed in limit to 7 days of week, Try Again." << '\n';
return "not a day";
}
}
我强烈建议打开编译器中的所有警告(例如,使用 gcc
和 clang
,您可以将 -Wall
作为编译标志传递)。编译器会让你知道你正在做的事情可能是错误的。
当执行以无效值结束时,只是 return 一个空字符串。
string Day (Dayofweek d)
{
string null;
switch (d)
{
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
default:
cout << "Invalid Input detected, Only numbers are allowed. 1, 2, 3, 4 ,5 ,6 ,7. Try Again." << '\n';
return string (null);
}
}