我是这个网站的新手。 我是一名新手,我正在创建一个简单的游戏,名为pick a number with code:
#include <iostream>
using namespace std;
int main()
{
double number;
char letter;
char choice;
while (number=true)
{
cout<<"enter a number from 0-10. no letters"<<endl;
cin>>number;
if (number==6){
cout<<"you win"<<endl;
system ("pause");}
else if (number<0||number>10){
cout<<"pick a number from the range given"<<endl;
system ("pause");}
else if (number!=6){
cout<<"you lose"<<endl;
system ("paeuse");}
else if (letter!=6){
cout<<"no letter. just a number"<<endl;
system ("pause");}
while (choice=true)
{
cout<<"would you like to play again? Y/y for yes, and N/n for no."<<endl;
cin>>choice;
if (choice=='Y','y'){
cout<<"lets play again"<<endl;
system ("pause");}
else if (choice=='N','n'){
cout<<"come again later"<<endl;
system ("pause");
return choice;}
else if (choice!='Y','y','N','n'){
cout<<"unknown. do you want to play?"<<endl;
system ("pause");}
}
}
}
我的目标: 1)我想创建一个条件,如果用户输入一个字母,系统将提示用户选择一个不是字母的数字,因此用户将返回再次选择一个数字。
我的问题: 1)比赛结束后,我创造了3个条件,用户是否想再次参赛。当你看到代码时,
无论我输入什么,第二个条件循环都不起作用。
我们将不胜感激。
答案 0 :(得分:1)
=
运算符用于分配。因此,while(choice=true)
表示:
choice
设置为true
choice
的值作为条件 ==
运算符用于比较,例如while(choice == true)
。这将做你期望的。
然而, == true
是多余的。将Is the color of a banana being yellow a fact?
与Is the color of a banana yellow?
进行比较。更恰当的说法就是while(choice)
。
system
使用system
的做法是许多程序员不喜欢的,但这在技术上应该有效。这里的问题是拼写:paeuse
- &gt; pause
。
不幸的是,这种语法不符合你的想法:
if(a == 'b', 'c', 'd')
您需要完全指定每个条件,如下所示:
if((a == 'b') || (a == 'c') || (a == 'd'))
或者,您可以使用开关:
switch(choice){
case 'Y':
case 'y':
/* yes code */
break;
case 'N':
case 'n':
/* no code */
break;
default:
/* none of the above */
}
double number;
while(number == true){
你是什么意思?这就像说Which is greater? A lightbulb or -7?
它没有意义!
return
return
结束主循环,并将传递给它的值作为程序的退出代码。这可能远远超出你的意图。
letter
您在哪里使用letter
?它仅用于将其与某些内容进行比较,但由于您未设置它,因此它是未定义的行为。
他们是你的朋友,而不是你的敌人。您可能不希望获得更多编译器错误,但如果您将其关闭,则必须以困难的方式找到相同的问题。
请注意,这是未经测试的。
#include <iostream>
#include <cctype>
int main(){
const int MIN = 0; // avoid magic numbers
const int MAX = 10;
do {
int secret = 4; // Chosen by a fair dice roll
// Guaranteed to be random ;)
// TODO: pseudo-random number generation
int guess;
while(true){ // this could've been done with a do..while,
// but it ended up increasing the complexity
std::cout << "Enter a number from " << MIN
<< " to " << MAX << std::endl;
std::cin >> guess;
if(guess >= MIN && guess <= MAX){
break;
}
std::cout << "The provided number is not in range, try again!\n";
}
if(secret == guess){
std::cout << "Congratulations!";
}else{
std::cout << "Sorry, good luck next time!";
}
char choice;
do {
std::cout << " Play again? [Y/N] ";
std::cin >> choice;
choice = std::tolower(choice); // convert uppercase to lowercase, don't touch the rest
if(choice == 'n'){
return;
}else if(choice != 'y'){
std::cout << "Y or N please."
}
}while(choice != 'y');
}
}
Analyse this program. If you don't understand something, ask! I hope I made it clear.