C语言,想编函数 出现 [Linker error] undefined reference to `sum' 之类的,求解答

#include<stdio.h>
void sum(void) , min(void) , mul(void) , div(void);
int main()
{
int k;
do
{
printf("加法按1,减法按2,乘法按3,除法按4,结束按0");
printf("请选择模式:");
scanf("%d",&k);
}while(k<0||k>4);
switch(k)
{
case 0:printf("欢迎下次使用!");break;
case 1:sum();break;
case 2:min();break;
case 3:mul();break;
case 4:div();break;
}
void sum(void)
{
float x,y;
printf("输入两个数字相加:");
scanf("%f%f",&x,&y);
printf("%f+%f=%f",x,y,x+y);
return;
}
void min(void)
{
float x,y;
printf("输入两个数字相减:");
scanf("%f%f",&x,&y);
printf("%f-%f=%f",x,y,x-y);
return;
}
void mul(void);
{
float x,y;
printf("输入两个数字相乘:");
scanf("%f%f",&x,&y);
printf("%f*%f=%f",x,y,x*y);
return;
}
void div(void)
{
float x,y;
a_menue:
printf("输入两个数字相除:");
scanf("%f%f",&x,&y);
if(y!=0)
printf("%f/%f=%f",x,y,x/y);
else
printf("wrong");
goto a_menue;
return;
}
getch();
return;
}

1、是函数声明的时候用分号结束,也就是第一行

2、main函数最后缺了一个大括号“}”,或者说你把大括号放到了最最后

3、mul函数定义的时候,没有分号

4、我第一次复制你的代码时,min是灰的,不知道是不是关键字,不过我运行了,不影响

最后,我把return注释了,最后那个大括号去了(参考第2条)

5、下面是改后的代码,亲试可用,其实就是一些细节,仔细找找就行。

6、补充一个,选4的时候做除法,你用了goto,然后就会一直让输入两个数相除,后来我试着把goto注释了。。。

#include<stdio.h>

// void sum(void) , mine(void) , mul(void) , div(void);

void sum(void);

void min(void);

void mul(void);

void div(void);

int main()

{

    int k;

    do

    {

            printf("加法按1,减法按2,乘法按3,除法按4,结束按0"); 

            printf("请选择模式:");

            scanf("%d",&k);

    }while(k<0||k>4);

    switch(k)

    {

             case 0:printf("欢迎下次使用!");break;

             case 1:sum();break;

             case 2:min();break;

             case 3:mul();break;

             case 4:div();break;

    }

}

void sum(void)

{

     float x,y;

     printf("输入两个数字相加:");

     scanf("%f%f",&x,&y);

     printf("%f+%f=%f",x,y,x+y);

     return;

}

void min(void)

{

     float x,y;

     printf("输入两个数字相减:");

     scanf("%f%f",&x,&y);

     printf("%f-%f=%f",x,y,x-y);

     return;

}

void mul(void)

{

     float x,y;

     printf("输入两个数字相乘:");

     scanf("%f%f",&x,&y);

     printf("%f*%f=%f",x,y,x*y);

     return;

}

void div(void)

{

     float x,y;

     a_menue:

     printf("输入两个数字相除:");

     scanf("%f%f",&x,&y);

     if(y!=0)

     printf("%f/%f=%f",x,y,x/y);

     else 

     printf("wrong");

     goto a_menue;

     return;

}

getch();

//return;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-05
函数声明不要漏掉分号
void sum(void) ;void min(void) ;void mul(void) ;void div(void);追问

改成这种了,还是提示一样的错误~~~麻烦了~~再看看~

第2个回答  2011-05-05
把main() 放到sum什么的函数定义下面追问

我前面不是声明了得嘛,就可以放后面了吧~?

相似回答