我对本网站和编程都是一个绝对的新手,所以请耐心等待我。我决定通过学习C开始学习编程。现在,除了stdio.h之外,我还是什么都不知道。无论如何,我现在遇到了一个新主题,这是功能,我想尝试用它来做某事。
但是,我从来没有机会知道我的算法是否正确 由于编译时的错误,我真的不明白什么 编译器的错误消息试图告诉我。我不知道导致错误的原因。 因此,我需要有人看看我的代码并指导/解释/教我, 任何东西。
我试图通过使用函数以棋盘方式打印X和O,这里是 我的代码。
int function_X;
int function_O;
int size_controller;
main()
{
int i;
int j;
int width;
int height;
clrscr();
printf("Width: \n");
scanf("%d", &width);
printf("Height: \n");
scanf("%d", &height);
for(j=0; j<height; j++)
{
for(i=0; i<width; i++)
{
if(size_controller(i) )
{
printf("\n");
}
if(function_X(i, j) )
{
printf("X");
}
if(function_O(i, j) )
{
printf("O");
}
}
}
return 0;
}
int size_controller(int i)
{
if(i%width == 0)
{
return 1;
}
else
{
return 0;
}
}
int function_X(int i, int j)
{
if((j%2 != 0) && (i%2 != 0) || (j%2 == 0) && (i%2 == 0))
{
return 1;
}
else
{
return 0;
}
}
int function_O(int i, int j)
{
if((j%2 != 0) && (i%2 == 0) || (j%2 == 0) && (i%2 != 0))
{
return 1;
}
else
{
return 0;
}
}
当我尝试运行程序时,编译器声明了7个错误和1个警告:
错误01.C 27:呼叫无功能
错误01.C 32:呼叫无功能
错误01.C 37:呼叫无功能
错误01.C 48:重新声明&#39; size_controller&#39;重新声明时类型不匹配
错误01.C 49:未定义的符号&#39;宽度&#39;
警告01.C 57:参数&#39; i&#39;从未使用过
错误01.C 60:重新声明&#39; function_X&#39;中的类型不匹配
错误01.C 72:重新声明&#39; function_O&#39;中的类型不匹配
请帮助我!
答案 0 :(得分:3)
更改这些(看起来像普通变量):
int function_X;
int function_O;
int size_controller;
对于这些(看起来像函数声明):
int size_controller(int i, int width); /* Needs width parameter. */
int function_X(int i, int j);
int function_O(int i, int j);
但唯一真正明智的建议是掌握一本体面的书和学习,这些都是你本可以避免的问题。
答案 1 :(得分:3)
以下是声明变量:
int function_X;
您可能想要声明函数的原型:
int function_X(int, int);
或者,您可以将整个main()
函数放在源文件的 bottom 中,以便您调用的函数在其上方声明。然后当编译器到达你的main()
函数时,它已经看到声明的函数并知道如何调用它们。这样做也避免了必须重复两次函数参数,一次在原型声明中,一次在函数定义中。
答案 2 :(得分:0)
您的前瞻性声明错误。
int function_X;
int function_O;
int size_controller;
实际上是函数的声明(带参数),所以它们应该是
int size_controller(int i);
int function_X(int i, int j);
int function_O(int i, int j);
当你声明它们时,它们是变量,当你试图调用它们时编译器会感到困惑。
答案 3 :(得分:0)
你必须改变两件事:
1)如上所述,改变功能声明如上
2)声明宽度变量为全局意味着将其声明为main()。不在main()中。
通过做这两个改变肯定会有效..