为什么不是';t在c+中工作的if-else结构+;? 我一直试图用C++编写TigToToTi,但我不知道为什么IF语句没有被执行。 #include <iostream> #include <conio.h> #include <cstdlib> using namespace std; char XorO; int n; char a = '1'; char b = '2'; char c = '3'; char d = '4'; char e = '5'; char f = '6'; char g = '7'; char h = '8'; char i = '9'; int charchange[] = {79, 80, 81, 575, 6786, 75, 7879, 67697, 689698}; void Welcome() // FUNCTION1 { cout << "\nWelcome to Tic-Tac-toe!!!\n"; cout << "You are going to play with the computer!!\n"; cout << "Press X to choose X or press O to choose O for the game!!: "; } void framework() //FUNCTION2 { cout << " _ _ _ " << endl; cout << "| | | |" << endl; cout << "|"<< a <<"|"<< b <<"|"<< c <<"|" << endl; cout << "|"<< d <<"|"<< e <<"|"<< f <<"|" << endl; cout << "|"<< g <<"|"<< h <<"|"<< i <<"|" << endl; cout << "|_|_|_|" << endl; } int main() { aiyeee: Welcome(); cin >> XorO; ////////////GETS EXCECUTED TILL HERE if (XorO == 'X') ////////////////////////DSEN'T EXECUTE { for(n=1;n>=9;n++) { if(n%2 != 0){ framework(); cout << "\nOk:)"; aeneas: cout << " Your turn!! Which number to change to X: "; cin >> charchange[(n-1)]; for (int ty = 1; ty <= 9; ty++) { if(charchange[(n-1)] != ty) { cout << "INVALID INPUT!!\n"; goto aeneas; } } switch(charchange[(n-1)]) { case 1: if (a == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } a = 'X'; framework(); break; case 2: if (b == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } b = 'X'; framework(); break; case 3: if (c == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } c = 'X'; framework(); break; case 4: if (d == 'O') { cout << "\nAlready Changed to O!!\n"; goto aeneas; } d = 'X'; framework(); break; case 5: if (e == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } e = 'X'; framework(); break; case 6: if (f == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } f = 'X'; framework(); break; case 7: if (g == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } g = 'X'; framework(); break; case 8: if (h == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } h = 'X'; framework(); break; case 9: if (i == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } i = 'X'; framework(); break; } if(n>4) { if ((a==b && b==c)||(d==e && e==f)||(g==h && h==i)||(a==d && d==g)||(b==e && g==h)||(c==f && f==i)||(a==e && e==i)||(c==e && e==f)) { cout << "YOU WIN!!!\n"; goto allagulla; } } } else if(n%2 == 0) { aghhg: charchange[n-1] = ((rand()%9) + 1); switch (charchange[n-1]) { case 1: if(a == 'X') { goto aghhg; } a = 'O'; framework(); break; case 2: if(b == 'X') { goto aghhg; } b = 'O'; framework(); break; case 3: if(c == 'X') { goto aghhg; } c = 'O'; framework(); break; case 4: if(d == 'X') { goto aghhg; } d = 'O'; framework(); break; case 5: if(e == 'X') { goto aghhg; } e = 'O'; framework(); break; case 6: if(f == 'X') { goto aghhg; } f = 'O'; framework(); break; case 7: if(g == 'X') { goto aghhg; } g = 'O'; framework(); break; case 8: if(h == 'X') { goto aghhg; } h = 'O'; framework(); break; case 9: if(i == 'X') { goto aghhg; } i = 'O'; framework(); break; } if(n>4) { if ((a==b && b==c)||(d==e && e==f)||(g==h && h==i)||(a==d && d==g)||(b==e && g==h)||(c==f && f==i)||(a==e && e==i)||(c==e && e==f)) { cout << "COMPUTER WINS!!\n"; break; } } } } } else if (XorO == 'O') { } else { cout << "\nINVALID INPUT!!!\n"; goto aiyeee; cin >> XorO; } allagulla: cout << "\nWanna play again?(y/n) ";/////////////////////COMES DOWN STRAIGHT HERE AFTER THE PREV COMM char yesno; yesno = getche(); if (yesno == 'y') { goto aiyeee; } } #包括 #包括 #包括 使用名称空间std; char-XorO; int n; 字符a='1'; 字符b='2'; 字符c='3'; 字符d='4'; 字符e='5'; 字符f='6'; 字符g='7'; 字符h='8'; 字符i='9'; int charchange[]={79,80,81,575,6786,75,7879,67697,689698}; void Welcome()//函数1 { 学习如何使用调试器

为什么不是';t在c+中工作的if-else结构+;? 我一直试图用C++编写TigToToTi,但我不知道为什么IF语句没有被执行。 #include <iostream> #include <conio.h> #include <cstdlib> using namespace std; char XorO; int n; char a = '1'; char b = '2'; char c = '3'; char d = '4'; char e = '5'; char f = '6'; char g = '7'; char h = '8'; char i = '9'; int charchange[] = {79, 80, 81, 575, 6786, 75, 7879, 67697, 689698}; void Welcome() // FUNCTION1 { cout << "\nWelcome to Tic-Tac-toe!!!\n"; cout << "You are going to play with the computer!!\n"; cout << "Press X to choose X or press O to choose O for the game!!: "; } void framework() //FUNCTION2 { cout << " _ _ _ " << endl; cout << "| | | |" << endl; cout << "|"<< a <<"|"<< b <<"|"<< c <<"|" << endl; cout << "|"<< d <<"|"<< e <<"|"<< f <<"|" << endl; cout << "|"<< g <<"|"<< h <<"|"<< i <<"|" << endl; cout << "|_|_|_|" << endl; } int main() { aiyeee: Welcome(); cin >> XorO; ////////////GETS EXCECUTED TILL HERE if (XorO == 'X') ////////////////////////DSEN'T EXECUTE { for(n=1;n>=9;n++) { if(n%2 != 0){ framework(); cout << "\nOk:)"; aeneas: cout << " Your turn!! Which number to change to X: "; cin >> charchange[(n-1)]; for (int ty = 1; ty <= 9; ty++) { if(charchange[(n-1)] != ty) { cout << "INVALID INPUT!!\n"; goto aeneas; } } switch(charchange[(n-1)]) { case 1: if (a == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } a = 'X'; framework(); break; case 2: if (b == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } b = 'X'; framework(); break; case 3: if (c == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } c = 'X'; framework(); break; case 4: if (d == 'O') { cout << "\nAlready Changed to O!!\n"; goto aeneas; } d = 'X'; framework(); break; case 5: if (e == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } e = 'X'; framework(); break; case 6: if (f == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } f = 'X'; framework(); break; case 7: if (g == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } g = 'X'; framework(); break; case 8: if (h == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } h = 'X'; framework(); break; case 9: if (i == 'O') { cout << "\nAlready Changed to 'O'!!\n"; goto aeneas; } i = 'X'; framework(); break; } if(n>4) { if ((a==b && b==c)||(d==e && e==f)||(g==h && h==i)||(a==d && d==g)||(b==e && g==h)||(c==f && f==i)||(a==e && e==i)||(c==e && e==f)) { cout << "YOU WIN!!!\n"; goto allagulla; } } } else if(n%2 == 0) { aghhg: charchange[n-1] = ((rand()%9) + 1); switch (charchange[n-1]) { case 1: if(a == 'X') { goto aghhg; } a = 'O'; framework(); break; case 2: if(b == 'X') { goto aghhg; } b = 'O'; framework(); break; case 3: if(c == 'X') { goto aghhg; } c = 'O'; framework(); break; case 4: if(d == 'X') { goto aghhg; } d = 'O'; framework(); break; case 5: if(e == 'X') { goto aghhg; } e = 'O'; framework(); break; case 6: if(f == 'X') { goto aghhg; } f = 'O'; framework(); break; case 7: if(g == 'X') { goto aghhg; } g = 'O'; framework(); break; case 8: if(h == 'X') { goto aghhg; } h = 'O'; framework(); break; case 9: if(i == 'X') { goto aghhg; } i = 'O'; framework(); break; } if(n>4) { if ((a==b && b==c)||(d==e && e==f)||(g==h && h==i)||(a==d && d==g)||(b==e && g==h)||(c==f && f==i)||(a==e && e==i)||(c==e && e==f)) { cout << "COMPUTER WINS!!\n"; break; } } } } } else if (XorO == 'O') { } else { cout << "\nINVALID INPUT!!!\n"; goto aiyeee; cin >> XorO; } allagulla: cout << "\nWanna play again?(y/n) ";/////////////////////COMES DOWN STRAIGHT HERE AFTER THE PREV COMM char yesno; yesno = getche(); if (yesno == 'y') { goto aiyeee; } } #包括 #包括 #包括 使用名称空间std; char-XorO; int n; 字符a='1'; 字符b='2'; 字符c='3'; 字符d='4'; 字符e='5'; 字符f='6'; 字符g='7'; 字符h='8'; 字符i='9'; int charchange[]={79,80,81,575,6786,75,7879,67697,689698}; void Welcome()//函数1 { 学习如何使用调试器,c++,if-statement,C++,If Statement,使用-g编译: g++ -Wall -pedantic -g -o demo demo.cpp 运行调试器: gdb demo Breakpoint 1, main () at demo.cpp:44 44 if (XorO == 'X') ////////////////////////DSEN'T EXECUTE (gdb) print XorO $1 = 88 'X' (gdb) step 46 for(n=1;n>=9;n++) (

使用
-g
编译:

g++ -Wall -pedantic -g -o demo demo.cpp
运行调试器:

gdb demo
Breakpoint 1, main () at demo.cpp:44
44      if (XorO == 'X')          ////////////////////////DSEN'T EXECUTE
(gdb) print XorO
$1 = 88 'X'
(gdb) step
46          for(n=1;n>=9;n++)
(gdb) step
259     cout << "\nWanna play again?(y/n) ";/////////////////////COMES DOWN STRAIGHT HERE AFTER THE PREV COMM
(gdb) print n
$2 = 1
(gdb)
在可疑行中放置断点:

(gdb) break 44
Punto de interrupción 1 at 0x1502: file demo.cpp, line 44.
(gdb) run
询问调试器:

gdb demo
Breakpoint 1, main () at demo.cpp:44
44      if (XorO == 'X')          ////////////////////////DSEN'T EXECUTE
(gdb) print XorO
$1 = 88 'X'
(gdb) step
46          for(n=1;n>=9;n++)
(gdb) step
259     cout << "\nWanna play again?(y/n) ";/////////////////////COMES DOWN STRAIGHT HERE AFTER THE PREV COMM
(gdb) print n
$2 = 1
(gdb)
应该是

int yesno;

你能在代码中添加一些打印语句来显示哪些语句没有给出你期望的结果吗?另外,你是否可以只包含足够的代码来说明你的问题?可能很愚蠢,但是你是否在“x”或“o”之后按了Enter键?如果你正确地缩进代码,这会有很大帮助。我不知道你是怎么做到的(或任何其他人)都可以按照原样进行。不要这样做。“为冗长的程序感到抱歉”。一次写得少一些,确保它能工作,然后再让自己多做一点。从长远来看,你会心存感激。你的for循环不正确
for(n=1;n>=9;n++)
应该是
for(n=1;n