c错误问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 23:50:58
main()
{
int inputYear;
scanf("%d", &inputYear);
isLeap(inputYear);
}

printfnotLeap()
{
printf("This year is not a leap year.\n");
}

printfLeap()
{
printf("This year is a leap year.\n");
}

isLeap(int year)
{
if (year%4 == 0)
if(year%100 == 0)
printnotLeap();
else
printLeap();
else if (year%400 == 0)
printLeap();
else
printnotLeap();
}
这段c编译时提示:
Undefined first referenced
symbol in file
printLeap /var/tmp//ccqvcsKP.o
printnotLeap /var/tmp//ccqvcsKP.o
ld: fatal: Symbol referencing errors. No output written to leap
collect2: ld returned 1 exit status
如果把isLeap函数中的部分放到main()中执行就没问题,请问这是什么原因?另外什么情况下需要写个函数原型?这里需要么?谢谢!
一楼同志说是少了一对花括号,加上后确实可

main函数调用函数isLeap之前需要进行函数说明,或者将isLeap的函数实现放到main函数前面。
当你放到main中的话, 就相当于没有函数调用,没有申请地址,直接顺序执行。
至于编译中出现的问题,和一楼一样。

这个是c语言的语法,if下面必须用花括号指明区域,如果不指明,将默认为下一句,这不是想要的~

isLeap(int year)
{
if (year%4 == 0) // 少了一对花括号。。。
{
if(year%100 == 0)
printnotLeap();
else
printLeap();
}
else if (year%400 == 0)
printLeap();
else
printnotLeap();
}

在c中,函数原型/定义要出现在调用之前,c++中好像不需要

#include<stdio.h>
int main()
{
int inputYear;
scanf("%d", &inputYear);
isLeap(inputYear);
}

printfnotLeap()
{
printf("This year is not a leap year.\n");
}

printfLeap()
{
printf("This year is a leap year.\n");
}

isLeap(int year)
{
if (year%4 == 0)
if(year%100 == 0)
printfnotLeap();
else
printfLeap();
else if (year%400 ==