我正在创建一个程序,要求用户回复以及您要打印回复的时间并显示它。我在程序中使用了while循环和switch case。
但是当我在a
的帮助下将输入存储在变量std::cin
中时,交换机案例不会收到相同的输入。任何帮助表示赞赏。
#include <iostream>
using namespace std;
int a;
int input;
int i=1;
void display()
{
cout << "Select a choice for reply" << endl;
cout << "1.Thank You" << endl;
cout << "2.Welcome" << endl;
cout << "3.Okay" << endl;
}
int main()
{
display();
cout << "Enter Choice" << endl;
cin >> a;
input='a';
switch (input)
{
case '1': {
int x;
cout << "Enter no. of times you want to print reply line" << endl;
cin >> x;
while (i <= x)
{
cout << "Thank you" << endl;
}
break;
}
case '2': {
int x;
cout << "Enter no. of times you want to print line" << endl;
cin >> x;
while (i <= x)
{
cout << "Welcome" << endl;
}
break;
}
case '3': {
int x;
cout << "Enter no. of times you want to print line" << endl;
cin >> x;
while (i <= x)
{
cout << "okay" << endl;
}
break;
}
default: {
cout << "wrong choice" << endl;
}
cout << "Thank you for replying" << endl;
}
return 0;
}
答案 0 :(得分:3)
核心问题是:
input = 'a'
和
case '1':
你可能想要的是:
input = a
case 1:
毕竟编译器应该抛出警告。 但为什么要复制价值呢? 只是做
switch(a)
实际上,您的代码存在许多问题,但我会让其他人详细说明。
答案 1 :(得分:0)
您的问题是input='a';
,输入值为97,如果您写input = (int)'a';
为什么要声明'a'变量?只需使用输入
cin >> input;
答案 2 :(得分:0)
#include <iostream>
using namespace std;
int a;
int input;
int i=1;
void display()
{
cout<<"Select a choice for reply"<<endl;
cout<<"1.Thank You"<<endl;
cout<<"2.Welcome"<<endl;
cout<<"3.Okay"<<endl;
}
int main()
{
display();
cout<<"Enter Choice"<<endl;
cin>>a;
input=a;
switch(input)
{
case 1 :
{
int x;
cout<<"Enter no. of times you want to print reply
line<<endl;
cin>>x;
while(i<=x)
{
cout<<"Thank you"<<endl;
x--;
}
break;
}
case 2 :
{
int x;
cout<<"Enter no. of times you want to print line" <<endl;
cin>>x;
while(i<=x)
{
cout<<"Welcome"<<endl;
x--;
}
break;
}
case 3 :
{
int x;
cout<<"Enter no. of times you want to print line"<<endl;
cin>>x;
while(i<=x)
{
cout<<"okay"<<endl;
x--;
}
break;
}
default:
{
cout<<"wrong choice"<<endl;
}
cout<<"Thank you for replying"<<endl;
}
return 0;
}
答案 3 :(得分:0)
您的代码中有几个问题:
1)你试图给一个字符整数:input = 'a';
为了做得对,你应该直接使用变量:input = a;
(没有&#39;)
2)在您的交换机案例中,您与&#39; 1&#39;,&#39; 2&#39; (类型为char)但input
的类型为整数。试试这个:
case 1:
和case 2:
(没有&#39;)
3)你不会在你的while循环中增加/减少i或x,它们永远不会停止。在循环中的某处尝试类似:i++
或x--
的内容。
一些评论:
1)您可以使用没有大括号({})的开关案例:
int a = 0;
cin >> 1;
switch(a)
{
case 1:
break;
case 2:
int tmp = 0;
cout<<"tmp: "<<tmp<<endl;
break;
default:
break;
}
2)尽量避免全局变量,在大多数情况下,它们不是必需的,也是不好的做法。
3)您不需要变量a
,您可以直接使用input
,例如:
cout << "Enter Choice" << endl;
cin >> input;
switch (input)
4)最后但并非最不重要的是,我建议你阅读一些好的c ++书籍,这真的很值得。 (Good books)