Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C K&;R风格的函数定义,为什么? #包括 法克托里亚尔长内酒店(北); int n; { 如果(n==0) 返回((长)1); 其他的 return(n*faktorijal(n-1));//递归调用 } main() { int i; 对于(i=0;i_C_Syntax - Fatal编程技术网

C K&;R风格的函数定义,为什么? #包括 法克托里亚尔长内酒店(北); int n; { 如果(n==0) 返回((长)1); 其他的 return(n*faktorijal(n-1));//递归调用 } main() { int i; 对于(i=0;i

C K&;R风格的函数定义,为什么? #包括 法克托里亚尔长内酒店(北); int n; { 如果(n==0) 返回((长)1); 其他的 return(n*faktorijal(n-1));//递归调用 } main() { int i; 对于(i=0;i,c,syntax,C,Syntax,您正在使用。在本例中 #include <stdio.h> long int faktorijal(n); int n; { if (n==0) return((long)1); else return(n*faktorijal(n-1)); // Recursive call } main() { int i; for (i=0;i<=5;i++) printf("%d! = %d\n",i,faktorijal(i)); getch(); } 函数签名后的尾随;错误。请删

您正在使用。在本例中

#include <stdio.h>
long int faktorijal(n);
int n;
{
if (n==0)
return((long)1);
else
return(n*faktorijal(n-1)); // Recursive call
}
main()
{
int i;
for (i=0;i<=5;i++)
printf("%d! = %d\n",i,faktorijal(i));
getch();
}
函数签名后的尾随
错误。请删除该项

此后,

  • faktorijal()
    返回一个
    long int
    ,但您将返回值作为参数提供给
    %d
    ,这又是错误的。您需要使用
    %ld
  • getch()
    不是标准的库函数,请改用
    getchar()
  • 对于托管环境,
    main()
    根据C标准(如果您认为是最新的),其一致性签名至少为
    int main(void)
    。隐式int规则已从标准中明确删除

1.功能:

 long int faktorijal(n);
 int n;
未正确写入。请将其更改为:

long int faktorijal(n);
int n;
{
    if (n==0)
        return((long)1);
    else
        return(n*faktorijal(n-1)); // Recursive call
}
2.也会改变:

long int faktorijal(int n)
{
    if (n == 0)
        return((long)1);
    else
        return(n*faktorijal(n-1)); // Recursive call
}
致:

因为
long int
的说明符是
%ld
。说明符
%d
int
s

3.
main
的声明更改为:

printf("%d! = %ld\n",i,faktorijal(i));
致:

4.最后更改:

int main(){}
致:


并包括
stdlib.h

更改以下代码块:

getchar();
致:

定义函数时,函数体的头和开头大括号之间不应该有分号。编译器希望右括号正好位于开头大括号之前,这就是为什么它会产生一个错误,说明:

[错误]应为“{”标记之前的标识符或“(”

您还忘了指定参数的数据类型。请从函数参数头中删除
n
,改为在那里添加
int n
,如更正的代码所示

同样,您忘记正确定义
main()

long int faktorijal(int n) // remove semicolon from here, this is function header. Also defined data type of argument
{
    if (n==0)
        return((long)1);
    else
        return(n*faktorijal(n-1)); // Recursive call
}
main()
函数的C++语法要求其返回数据类型为int。因此,将主函数更改为:

main()
另一件事:您的
printf()
语句使用了不正确的格式说明符。更改:

int main()
致:


这是因为
faktorijal(i)
返回一个
long int
,而long int的格式说明符是
%ld
main()
-->
int main(void)
请缩进你的代码!你真的应该买一个新键盘。你的空格键在代码片段中不起作用。K&R风格的函数声明器是过时的功能,永远不应该使用。如果你用一本书来学习:请买一本关于现代C(至少是C99,更好的标准C(11))的新的.@Olaf现在,这是一个明智的评论,严肃地说。:)@奥拉夫-是的,这是一本教科书。我之所以用这种方式缩进是因为我希望它100%像书上写的一样,但它仍然是错误的!谢谢。我想是函数原型。我对你的答案投了赞成票,因为它是完整的,切中要害的,而且引用性很好。但总的来说,回答这种打字错误的问题是浪费精力。They通常会很快被关闭,并在社区调节中被删除。@StoryTeller好的,当然……只是觉得可能会对某人有所帮助,因为遇到此类问题的机会也很小,所以借此机会澄清了几点。不过,以后将不再重复,谢谢。:)@StoryTeller当然可以。很长一段时间后回来了,很高兴看到社区像以前一样乐于助人……干杯!!@StoryTeller:问题是,up投票将阻止问题在结束后一段时间内自动删除。因此删除会让真实的人忙起来。一般来说,这样的问题不应该回答,最好是将精力投入到更好的问题中。(哦,对于原型声明器,语法错误也会存在)在第二种情况下,您丢失了类型…这是错误的。您正在跟踪…@NatashaDutta第二种情况是什么意思?谢谢,仅此一点就教会了我很多关于长整数的知识。谢谢。@alcatraz很高兴它有帮助。这不起作用。您尝试过编译它吗?@Mariev刚刚修复了它。
long int faktorijal(n);
int n;
{
if (n==0)
return((long)1);
else
return(n*faktorijal(n-1)); // Recursive call
}
long int faktorijal(int n) // remove semicolon from here, this is function header. Also defined data type of argument
{
    if (n==0)
        return((long)1);
    else
        return(n*faktorijal(n-1)); // Recursive call
}
main()
int main()
printf("%d! = %d\n",i,faktorijal(i));
printf("%d! = %ld\n",i,faktorijal(i));