我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误



我是 c++ 的新手。学习基本知识后,我想做井字游戏。

对于印刷板,我在下面编写代码,但它显示错误:

#include<iostream>
using namespace std;
int main(){
char board[8]={'_','_','_n','_','_','_n','_','_','_n'};

cout<<'|'+ board[0]+'|'+ board[1]+'|'+ board[2]<<endl;
cout<<'|'+ board[3]+'|'+ board[4]+'|'+ board[5]<<endl;
cout<<'|'+ board[6]+'|'+ board[7]+'|'+ board[8]<<endl;


return 0;
}

这里有几个错误:


  1. too many initializers for ‘char [8]’将板定义为包含 8 个元素,并在项目列表中应用 9 个元素。

  2. narrowing conversion of ‘24330’ from ‘int’ to ‘char’'_n'是 2 个字符,而不是单个字符。

修复:

char board[12] = {'_', '_', '_', 'n', '_', '_', '_', 'n', '_', '_', '_', 'n'};

第三个错误是算法错误,而不是编译错误 - 使用循环迭代数组元素。

解决方案是在声明正在初始化的数组时不指定任何数组边界:

char board[]={'_','_','_','_','_','_','_','_','_'};

编译器将自动确定要初始化的字符数。

如果有 67 或 142 个项目怎么办? 希望您不会尝试计数并找出要放置在数组中的数字,因为这容易出错。 让编译器为您完成这项工作。

其次,'_n'不是一个单一的角色。 如果您确实想在数组中放置换行符:

char board[]={'_','_','_','n','_','_','_','n','_','_','_','n'};

如果您以后想知道字符数:

const int num_characters = sizeof(board) / sizeof(board[0]);

或者,如果您使用的是 C++17 或更高版本:

std::size(board);

正如之前的答案已经指出的那样。有两件事需要改变:

  1. 删除"">
  2. 更改电路板阵列大小。
  3. 删除+符号,因为它只会添加两个字符,就好像它是两个数字一样。

所以这是这三个之后的结果:

#include<iostream>
using namespace std;
int main(){
char board[9]={'_','_','_','_','_','_','_','_','_'};    
cout << '|' << board[0] << '|' << board[1] << '|' << board[2] << endl;
cout << '|' << board[3] << '|' << board[4] << '|' << board[5] << endl;
cout << '|' << board[6] << '|' << board[7] << '|' << board[8] << endl;

return 0;
}

注意:我编辑了我的答案,并在下面的评论之后添加了第三步。

相关内容

  • 没有找到相关文章

最新更新