刽子手游戏的验证问题
Problem with the validation for hangman game
我正在为大学分配制作一个刽子手游戏,我已经完成了大部分工作,但由于某种原因,这里的这部分不起作用。我的逻辑有问题吗?这似乎非常简单。
bool second_check(char user_input) {
char u[3]={'a','r','i'};
for (int i = 0; i <= 3; i++) {
if (user_input==u[i]){
return true;
};
};
return false;
}
int main(){
char o;
cout<<"enter"<<endl;
cin>>o;
if (second_check(o)==true) {
cout << "Correct!" << endl;
}
else
cout << "Wrong! n Strike one!" << endl;
return 0;
}
即使您有 3 个元素,for 循环也会循环 4 次,导致它尝试访问内存中未定义的位置,以解决此问题将"i <=3"替换为"i<3"
所以 for 循环最后应该是这样的:
for (int i = 0; i < 3; i++) {
if (user_input==u[i]){
return true;
};
};
答案
由于char u[3]={'a','r','i'};
只包含 3 个字符,因此 for 循环将是:
for (int i = 0; i <= 2; i++)
或
for (int i = 0; i < 3; i++)
.
解释
这是因为,在 C/C++ 和大多数编程语言中,数组计数从 0 开始。因此,第一个元素将是数组[0],最后一个元素将是数组[n-1],其中n是初始化时使用的数组的大小。(以上,n=3)
因此,如果您清楚地说明问题所在(即预期输出与实际输出),将对社区有所帮助。
也就是说,我可以看到几个问题...
for (int i = 0; i <= 3; i++)
if (user_input==u[i]){
由于
u
的大小为 3 (char user[3]
),您需要将for
循环更改为i < 3
因为数组是从 0 开始的,有效的索引是0,1,2
的,您将超出数组的范围。 即user[3]
不是有效的索引。你不是在比较我怀疑你想要的
user_input
指数。user_input[i]
.
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- C++卡验证问题
- 在C++中验证for循环的问题
- 使用OpenSSL的SHA 512 HMAC消息身份验证的问题
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 库库尔身份验证问题
- 刽子手游戏的验证问题
- 程序不输出正确的标准偏差.另外,验证问题
- C++信用卡验证问题
- C++数据验证问题
- 验证我的超类或基类是宏或模板声称的那个类时出现问题
- if字符串验证循环出现问题
- c++字符验证问题
- Visual在c++中验证电子邮件有问题
- 验证二叉树的小问题
- C++SDL代码::块:在头文件中声明指向全局可验证性的指针,同时避免多个包含问题
- 一遍又一遍地验证文件时遇到问题