请C语言高手帮我看看这个程序错在哪里???

#include<stdio.h>
void main()
{int n;
long int result;
long int fact();
while(l)
{printf("Input a number:");
scanf("%d",&n);
if(n>=0)
break;
}
result=fact(n);
printf("Result=%ld",result);
}
long int fact(int n)
{long int f;
if(n==0)
f=1;
else
f=n*fact(n-1);
return(f);
}

还想请问下为什么第五行中fact的后面为空括号?下面这个程序第一行中count的后面也为空括号,它们的原因是什么,原因相同么?

#include<stdio.h>
float count();
void main()
{float s;
......
s=count(10);
......
}
float count(int n)
{float s;
......
return;
}
第一个程序中
while(1)是什么意思啊???

第一个问题
long int fact();
while(l)
{printf("Input a number:");
scanf("%d",&n);
if(n>=0)
break;
}
这是一个自定义函数
函数返回值类型long int 自定义函数名fact 自定义函数的形参为空 ()里面是用来放参数列表的
比如
long int fact(int n)
{long int f;
if(n==0)
f=1;
else
f=n*fact(n-1);
return(f);
}
这个也是个自定义函数 他于第一个自定义函数不同的地方就是有参数 调用的时候必须传参数

第二个问题
while循环
while(表达式)
{
循环体
}
如果表达式成立 这循环
这儿while(1)恒成立 所以一直循环 已知道n>=0时break循环

ps 楼主 你这样不行啊.学习态度 真正想学C语言的 只要稍微看一下书 就应该知道这个两问题 特别是while(1)这个 不知道的话说不过去啊~!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-21
long int fact(); 这一行不对。
这是函数原型(非必须写),正确写法:
long int fact(int);
函数原型里只需写参数表的定义类型,不需要写变量

while(1)就是一直循环,根据你的代码
直到输入的n>=0时退出
相似回答