Онлайн компилятор C

#include <stdio.h> int is_white(char column, char row) { int col = column -'A'+1; int r = row - '0'; if ((col + r) % 2 == 1) { return 1; } else { return 0; } }
这段代码定义了一个函数 `is_white`,它接收两个字符参数(列和行),判断国际象棋棋盘上该格子是否为白色。它把字母列转换为数字(A=1, B=2...),行字符也转为数字,然后通过列加行的奇偶性来判断颜色:和为奇数时返回1(表示白色),偶数时返回0(表示黑色)。

- 注意:函数名是 `is_white`,但返回1时表示“是白色”,而国际象棋中通常a1是黑色格子。检查一下你的列转换:`'A' - 'A' + 1` 得到1,但棋盘上A1是黑色,而1+1=2是偶数,你的函数返回0,这符合黑色。但你的逻辑是“和为奇数返回1(白色)”,需要确认这个对应关系是否正确。
- 另外,行字符 `row` 是数字字符(如'1'),用 `row - '0'` 转换是正确的,但注意输入时行是字符,比如 `'1'` 到 `'8'`,这样转换没问题。