我目前正在尝试用C语言写一个简单的石头,布,剪刀程序。整个作业的要点是熟悉字符的使用。这是我目前拥有的代码。它是不完整的,因为我被卡住了。
#include <stdio.h>
int main()
{
int pScore = 0;
int cScore = 0;
int ties = 0;
char play, go;
char comp = 'r';
printf("Welcome to Rock-Paper-Scissors!\n");
printScore(pScore, cScore, ties);
for ( ; ;)
{
printf("Do you want to play Rock-Paper-Scissors? (y/n): ");
scanf("\n%c", &go);
if(go == 'y' || go == 'Y')
{
printf("Enter your choice (r,p,s): ");
scanf("\n%c", &play);
comp = computerPlay();
printf("Computer plays: %c", comp);
}
else
break;
}
printf("\nThanks for Playing!!\n\n");
}
char computerPlay()
{
int r = rand() % 3;
char c;
if (r == 0)
{
c = 'r';
}
else if (r == 1)
{
c = 'p';
}
else if (r == 2)
{
c = 's';
}
return c;
}
int printScore(int p, int c, int t)
{
printf("\nHuman Wins: %d Computer Wins: %d Ties: %d\n\n", p, c, t);
return 0;
}编译器给了我以下错误:
RPS.c:35:6: error: conflicting types for ‘computerPlay’
RPS.c:28:14: note: previous implicit declaration of ‘computerPlay’ was here
在我看来,这应该工作得很好……我不知所措。
发布于 2013-09-06 22:55:50
您没有声明函数computerPlay()
在声明此函数后进行检查。
char computerPlay(void); 将此语句添加到#include<stdio.h>之后
编辑:
C中的所有标识符在使用之前都需要声明。对于函数和变量都是如此。对于函数,声明需要在函数的第一次调用之前。完整的声明包括返回类型以及参数的数量和类型
简单的例子:
int sum (int, int); // declared a function with the name sum
result =sum(10,20); // function call
int sum (int a, int b) // defined a function called sum
{
return a + b;
}发布于 2013-09-06 23:02:56
当编译器遇到函数的使用时,它需要知道该函数的存在。
在您的代码中,当编译器(读取源文件)遇到comp = computerPlay();时,它没有看到任何东西告诉它函数的存在。它猜测函数是什么,并猜测int computerPlay(void) -默认情况下,C总是假定函数返回int。然后,它在稍后遇到实际的定义,这与它已经做出的猜测相冲突-该函数返回char,而不是int。
解决方法是在你使用函数之前让编译器知道它的存在。您可以执行以下任一操作:
mainmain之上,表示它只对此源文件可用char computerPlay(void);放入单独的头文件中,并将该文件放在#include上,从而使该函数对其他源文件可用(假设有超出本问题范围的其他步骤)<代码>H217<代码>F218发布于 2013-09-06 23:17:53
您正在使用两个函数,一个是
char computerPlay(),第二个是
include int printScore(int p,int c,int t)必须首先在include语句下面声明。
因此,只需在include语句下面编写以下语句即可。
char computerPlay();
int printScore(int,int,int );
其次,您还使用了、int、main ()、,所以在最后必须返回整数,所以还必须在主的末尾添加以下语句,return 0、或任何其他整数。
https://stackoverflow.com/questions/18660663
复制相似问题