我们如何在 C 中将一个 char 标记为一个整数值并求和?
How do we sign a char an integer value in C and take a sum?
我正在制作一款井字游戏。
我想分配一个值为 4 的字符。例如:我想为 O 分配值 4,为 X 分配值 1。我尝试使用
char O = '4';
但是显示各种错误。我该如何解决这个问题并为该字符分配一个整数值?
我也想取值的总和。
这是代码:
#include <stdio.h>
int computerPlaysToWin(char board[3][3], int* cRow, int* cCol){
char O='4';
char X='1';
int i;
int j;
for (i = 0; i < 3; i++){
for(j = 0; j < 3 ; j++){
if ( board[i][j] + board[i][j+1] = 8 ){ //For rows
printf("O", board[i][j+2]);
}
else if ( board[i][j+1] + board[i][j+2] = 8 ){ // For rows
printf("O", board[i][j]);
}
else if ( board[i][j] + board[i+1][j] = 8 ){ // For columns
printf("O", board[i+2][j]);
}
else if ( board[i+1][j] + board[i+2][j] = 8 ){ //For columns
printf("O", board[i][j]);
}
else if ( board[i][j] + board[i+1][j+1] = 8 ) { //For diagonals
printf("O", board[i+2][j+2]);
}
else if ( board[i+1][j+1] + board[i+2][j+2] = 8 ) { //For diagonals
printf("O", board[i][j]);
}
else if ( board[i][j] + board[i+1][j-1] = 8 ) { //For diagonals
printf("O", board[i+2][j-2]);
}
else if ( board[i+1][j-1] + board[i+2][j-2] = 8 ) { //For diagonals
printf("O", board[i][j]);
}
}
}
return 0;
}
int main(void){
char board[3][3];
int row;
int col;
printf("Enter Row: ");
scanf("%d", &row);
printf("Enter column: ");
scanf("%d", &col);
printf("\n");
computerPlaysToWin(board, &row, &col);
}
错误是:
> computerPlaysToWin.c:16:47: error: expression is not assignable
> if ( board[i][j] + board[i][j+1] = 8 ){ //For rows
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:17:30: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j+2]);
> ~~~ ^ computerPlaysToWin.c:20:54: error: expression is not assignable
> else if ( board[i][j+1] + board[i][j+2] = 8 ){ // For rows
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:21:30: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ computerPlaysToWin.c:24:52: error: expression is not assignable
> else if ( board[i][j] + board[i+1][j] = 8 ){ // For columns
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:25:30: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i+2][j]);
> ~~~ ^ computerPlaysToWin.c:29:54: error: expression is not assignable
> else if ( board[i+1][j] + board[i+2][j] = 8 ){ //For columns
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:30:31: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ computerPlaysToWin.c:34:54: error: expression is not assignable
> else if ( board[i][j] + board[i+1][j+1] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:35:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i+2][j+2]);
> ~~~ ^ computerPlaysToWin.c:39:58: error: expression is not assignable
> else if ( board[i+1][j+1] + board[i+2][j+2] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:40:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ computerPlaysToWin.c:44:54: error: expression is not assignable
> else if ( board[i][j] + board[i+1][j-1] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:45:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i+2][j-2]);
> ~~~ ^ computerPlaysToWin.c:49:58: error: expression is not assignable
> else if ( board[i+1][j-1] + board[i+2][j-2] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:50:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ 8 warnings and 8 errors generated.
试试这个:
void computerPlaysToWin(char board[3][3], int* cRow, int* cCol){
char O='4';
char X='1';
int i;
int j;
for (i = 0; i < 3; i++){
for(j = 0; j < 3 ; j++){
if ( board[i][j] + board[i][j+1] == 8 ){ //For rows
printf("O %c", board[i][j+2]);
}
else if ( board[i][j+1] + board[i][j+2] == 8 ){ // For rows
printf("O %c", board[i][j]);
}
else if ( board[i][j] + board[i+1][j] == 8 ){ // For columns
printf("O %c", board[i+2][j]);
}
else if ( board[i+1][j] + board[i+2][j] == 8 ){ //For columns
printf("O %c", board[i][j]);
}
else if ( board[i][j] + board[i+1][j+1] == 8 ) { //For diagonals
printf("O %c", board[i+2][j+2]);
}
else if ( board[i+1][j+1] + board[i+2][j+2] == 8 ) { //For diagonals
printf("O %c", board[i][j]);
}
else if ( board[i][j] + board[i+1][j-1] == 8 ) { //For diagonals
printf("O %c", board[i+2][j-2]);
}
else if ( board[i+1][j-1] + board[i+2][j-2] == 8 ) { //For diagonals
printf("O %c", board[i][j]);
}
}
}
}
int main(void){
char board[3][3];
int row;
int col;
printf("Enter Row: ");
scanf("%d", &row);
printf("Enter column: ");
scanf("%d", &col);
printf("\n");
computerPlaysToWin(board, &row, &col);
}
我正在制作一款井字游戏。 我想分配一个值为 4 的字符。例如:我想为 O 分配值 4,为 X 分配值 1。我尝试使用
char O = '4';
但是显示各种错误。我该如何解决这个问题并为该字符分配一个整数值? 我也想取值的总和。 这是代码:
#include <stdio.h>
int computerPlaysToWin(char board[3][3], int* cRow, int* cCol){
char O='4';
char X='1';
int i;
int j;
for (i = 0; i < 3; i++){
for(j = 0; j < 3 ; j++){
if ( board[i][j] + board[i][j+1] = 8 ){ //For rows
printf("O", board[i][j+2]);
}
else if ( board[i][j+1] + board[i][j+2] = 8 ){ // For rows
printf("O", board[i][j]);
}
else if ( board[i][j] + board[i+1][j] = 8 ){ // For columns
printf("O", board[i+2][j]);
}
else if ( board[i+1][j] + board[i+2][j] = 8 ){ //For columns
printf("O", board[i][j]);
}
else if ( board[i][j] + board[i+1][j+1] = 8 ) { //For diagonals
printf("O", board[i+2][j+2]);
}
else if ( board[i+1][j+1] + board[i+2][j+2] = 8 ) { //For diagonals
printf("O", board[i][j]);
}
else if ( board[i][j] + board[i+1][j-1] = 8 ) { //For diagonals
printf("O", board[i+2][j-2]);
}
else if ( board[i+1][j-1] + board[i+2][j-2] = 8 ) { //For diagonals
printf("O", board[i][j]);
}
}
}
return 0;
}
int main(void){
char board[3][3];
int row;
int col;
printf("Enter Row: ");
scanf("%d", &row);
printf("Enter column: ");
scanf("%d", &col);
printf("\n");
computerPlaysToWin(board, &row, &col);
}
错误是:
> computerPlaysToWin.c:16:47: error: expression is not assignable
> if ( board[i][j] + board[i][j+1] = 8 ){ //For rows
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:17:30: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j+2]);
> ~~~ ^ computerPlaysToWin.c:20:54: error: expression is not assignable
> else if ( board[i][j+1] + board[i][j+2] = 8 ){ // For rows
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:21:30: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ computerPlaysToWin.c:24:52: error: expression is not assignable
> else if ( board[i][j] + board[i+1][j] = 8 ){ // For columns
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:25:30: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i+2][j]);
> ~~~ ^ computerPlaysToWin.c:29:54: error: expression is not assignable
> else if ( board[i+1][j] + board[i+2][j] = 8 ){ //For columns
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:30:31: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ computerPlaysToWin.c:34:54: error: expression is not assignable
> else if ( board[i][j] + board[i+1][j+1] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:35:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i+2][j+2]);
> ~~~ ^ computerPlaysToWin.c:39:58: error: expression is not assignable
> else if ( board[i+1][j+1] + board[i+2][j+2] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:40:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ computerPlaysToWin.c:44:54: error: expression is not assignable
> else if ( board[i][j] + board[i+1][j-1] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:45:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i+2][j-2]);
> ~~~ ^ computerPlaysToWin.c:49:58: error: expression is not assignable
> else if ( board[i+1][j-1] + board[i+2][j-2] = 8 ) { //For diagonals
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
computerPlaysToWin.c:50:32: warning: data argument not used by format
> string [-Wformat-extra-args]
> printf("O", board[i][j]);
> ~~~ ^ 8 warnings and 8 errors generated.
试试这个:
void computerPlaysToWin(char board[3][3], int* cRow, int* cCol){
char O='4';
char X='1';
int i;
int j;
for (i = 0; i < 3; i++){
for(j = 0; j < 3 ; j++){
if ( board[i][j] + board[i][j+1] == 8 ){ //For rows
printf("O %c", board[i][j+2]);
}
else if ( board[i][j+1] + board[i][j+2] == 8 ){ // For rows
printf("O %c", board[i][j]);
}
else if ( board[i][j] + board[i+1][j] == 8 ){ // For columns
printf("O %c", board[i+2][j]);
}
else if ( board[i+1][j] + board[i+2][j] == 8 ){ //For columns
printf("O %c", board[i][j]);
}
else if ( board[i][j] + board[i+1][j+1] == 8 ) { //For diagonals
printf("O %c", board[i+2][j+2]);
}
else if ( board[i+1][j+1] + board[i+2][j+2] == 8 ) { //For diagonals
printf("O %c", board[i][j]);
}
else if ( board[i][j] + board[i+1][j-1] == 8 ) { //For diagonals
printf("O %c", board[i+2][j-2]);
}
else if ( board[i+1][j-1] + board[i+2][j-2] == 8 ) { //For diagonals
printf("O %c", board[i][j]);
}
}
}
}
int main(void){
char board[3][3];
int row;
int col;
printf("Enter Row: ");
scanf("%d", &row);
printf("Enter column: ");
scanf("%d", &col);
printf("\n");
computerPlaysToWin(board, &row, &col);
}