首先说一下环境,是在ubuntu下用gedit调试的。不过我觉得在tc下应该一样吧。
然后谢谢各位的帮忙,程序代码在最后,就是一个用c语言编辑的3子棋游戏(类似5子棋)代码大体好了,就是judge()函数的声明类型应该写什么?
在judge()中如果判断成功返回1,失败返回0,borad是char型,judge()是int类型么?然后声明是放在main里面还是前面。
请大家给出意见,最好能给我一个调试通过的,帮我解决掉那个类型错误。回答的详细的一定追加分数。谢谢。
代码如下:
#include <stdio.h>
int judge(char);
int main (void)
{
int player = 0;
int winner = 0;
int line = 0;
int choice = 0;
int row = 0;
int column = 0;
int d = 0;
int i = 0;
char board[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
for(i ; i<9 && winner==0; i++)
{
printf("\n\n");
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
player = i%2 + 1;
do
{
printf("\n玩家 %d, 你想把你的标志%c放在那里?",
player,(player==1)?'X':'O');
scanf("%d", &choice);
row = --choice/3;
column = choice%3;
}while(choice<0 || choice>9 || board[row][column]>'9');
board[row][column] = (player == 1) ? 'X' : 'O';
if (judge(board[3][3])==1)
winner = player;
}
printf("\n\n");
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
if(winner == 0)
printf("\n真无聊,这一局是平局……\n");
else
printf("\n恭喜你,玩家%d。你赢了!\n",winner);
return 0;
}
int judge(char board[3][3])
{
int line = 0;
int a = 0;
char board1[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
if(board1[0][0]==board1[1][1] && board1[0][0]==board1[2][2])
return a = 1;
else if(board1[2][0]==board1[1][1] && board1[2][0]==board1[0][2])
return a = 1;
else
for(line ; line <= 2; line ++)
if(board1[line][0]==board1[line][1] && board1[line][0]==board1[line][2])
return a = 1;
else if(board1[0][line]==board1[1][line] &&board1[0][line]==board1[2][line])
return a = 1;
else return a = 0;
}
用gcc命令运行的,gcc -o 33 yu.c 当然tc下也行。
报错如下
yu.c:75: error: conflicting types for ‘judge’
yu.c:3: note: previous declaration of ‘judge’ was here
谢谢coffeegg1985 和 gaplee 。但是现在程序是能运行了,但是要完成的功能没有达到啊,judge并没有判断输入的board数组啊,也没有返回值1,不会判断你是非会赢棋,就是3个子连成1行。如果不写子函数,都写在main里可以判断的。已经追加分数,再次谢谢回答的人。
c语言函数调用问题char类型,回答好追加分
自定义函数有返回值的不能定义为void,没有返回值的定义为void,你的情况我也不太清楚,申明的摆放,具体就是比如说你的函数不管是main()还是void()在函数里要使用到其他的函数比如说f1(),f1写在main()前面的话不用申明,如果f1()写在main()后面的话就要在 main()前面加个f1()的申明 有全部代码...
C语言的main函数调用问题 如解决追加分
1)int menu()改为char menu()原因:主函数中chose为char型,若menu返回的为int型无法自动转换为char型 2)建议将menu函数放在main主函数前,或在main主函数前进行声明char menu(void);3)建议将scanf("%c", &choice);改为choice=getchar();这样就需要将变量choice声明为int型,仍使用原来的int me...
C语言中为什么调用函数时不需要加int,void,char,double这些呢?_百度...
您好,很高兴回答您的问题。C语言中程序在运行的时候,首先是找到主函数运行的。其余的函数都是在被调用的时候才会运行。那么在被调用之前,就必须要求知道这个函数的具体情况,包括函数返回值的类型,函数名,函数的参数等等,这个叫函数的声明。也就是在调用这个函数时,已经知道了函数返回值的类型,真正...
c语言中scanf的%s的问题(回答好追加分)
输入格式要与输入内容相配合。year,month,day 声明为int, 要用 %d scanf("%*6d%4d%2d%2d",&year,&month,&day);6d -- 跳过6个字符。4d%2d%2d -- 读4位整数,读2位整数,读2位整数。声明为char year[5], month[3],day[3]; 则可用%s char year[5], month[3],day[3];scanf("%...
C语言的题,都不难,帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好...
fun函数的作用是把字符s接到字符t后面,所以在主函数中调用fun(ss,aa)后,ss="accbbxxyy",aa不变。所以输出结果是D 第十题:A)int a=b=0 ;不允许这样赋值,可以int b=0;a=b;B)char A=65+1,b='b';这个A的赋值错误,C)float a=1,*b=&a,*c=&b ; 这个&b的是指针类型,而C却...
提个C语言卷子上的题目。回答的详细、好懂,奖四十分。
printf("area=%7.2f\\n",area(t1,b1,h1));\/\/ %7.2f 为函数 float area();函数返回的值 \/\/同样面积输出为占7位,保留2位小数点;} 综上,看的出来你们考察C语言的试题不是很难,我觉得这个应该不是大学里面的考试吧?同时也可以看出你C语法不是很好,不客气的说,你应该什么也没学,...
C语言char型输入输出问题
int main(void){ int a, b, c;char x, y, z;scanf("%d%d%d", &a, &b, &c);printf("%d%d%d\\n", a, b, c);scanf("\\n%c%c%c", &x, &y, &z);\/\/\/这样之后看看,,,因为在输入流中"\\n"被按照字符读入了。printf("%c %c %c\\n", x, y, z);getch();return ...
C语言中,在char类型的函数中怎么使用scanf函数?
如果是字符,用%c,如果是字符串,用%s。例如:char cc,ss[100];scanf("%c”,&cc);scanf("%s”,ss);
c语言char比较详细用法
在 C 语言中,char 是一种基本数据类型,用于表示字符(character)。它可以用来存储单个字符或字符串。下面详细介绍 C 语言中 char 的用法:1. char 的定义与声明char 类型可以用于声明变量,存储单个字符或字符串。例如:```cchar ch; \/\/ 声明一个 char 类型的变量 chchar str[] = "hello"; ...
请详细解释有关C语言函数返回值的调用问题,题目如下
选C。因为sub的返回值为void,也就是说它没有返回值,所以B就错了;sub()的参数类型为char(字符类型)和float(浮点型),而A里面的“abc”是字符串形式,所以A错了;D中的第一个 参数为32,它根本不是char型的,估计这种形式,系统只能把它当作int型来处理,而第二个参数也不是浮点型的数据...