| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 628 人关注过本帖
标题:当局者已晕找不出哪里出错,求旁观者指出错误在哪
只看楼主 加入收藏
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
结帖率:95.24%
收藏
已结贴  问题点数:20 回复次数:8 
当局者已晕找不出哪里出错,求旁观者指出错误在哪
PE14_10.obj : error LNK2019: 无法解析的外部符号 "int __cdecl menu(void)" (?menu@@YAHXZ),该符号在函数 _main 中被引用

程序代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>

float add(float x, float y);
float subtract(float x, float y);
float multiply(float x, float y);
float divide(float x, float y);
int menu(void);
int getlet(char *);

int main(void)
{
    float(*pf)(float x, float y); //函数指针
    int choice;
    float x, y;

    while ((choice = menu()) != 'e')
    {
        switch (choice)
        {
        case 'a': pf = add; break;
        case 'b': pf = subtract; break;
        case 'c': pf = multiply; break;
        case 'd': pf = divide; break;
        }
        printf("Please enret x y:");
        while (scanf("%f%f", &x, &y) !=2)
            printf("Error! Please enret x y:");
        printf("%.2f\n", pf(x,y));
    }

    
    return 0;
}

int meun(void)
{    
    puts("Enter menu choice:");
    puts("a) +");
    puts("b) -");
    puts("c) *");
    puts("d) /");
    puts("e) Quit");
    return getlet("abcde");
}
int getlet(char * str)
{
    char c;
    c = tolower(getchar());
    while (strchr(str, c) == NULL)
    {
        printf("Please enter (%s)\n", str);
        while (getchar() != '\n');
        c = tolower(getchar());
    }
    while (getchar() !='\n');

    return c;
}
float add(float x, float y)
{
    return (x + y);
}
float subtract(float x, float y)
{
    return (x - y);
}
float multiply(float x, float y)
{
    return (x * y);
}
float divide(float x, float y)
{
    return (x / y);
}

搜索更多相关主题的帖子: 旁观者 
2015-03-14 20:03
莨菪的柏拉图
Rank: 2
等 级:论坛游民
帖 子:8
专家分:16
注 册:2014-10-3
收藏
得分:2 
你是想搞一个计算器?
2015-03-14 20:07
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 2楼 莨菪的柏拉图
不是,本来是做课后关函数指针的习题。编译不通过就改成这样了

人有多懒,编程就有多难。
2015-03-14 20:11
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:9 
第9行声明:int menu(void);
第18行调用:while ((choice = menu()) != 'e')
第37行函数:int meun(void)

仔细看看问题在哪。

能编个毛线衣吗?
2015-03-14 21:18
afanihao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:62
专家分:99
注 册:2015-3-13
收藏
得分:9 
undefined reference,符号不存在。。。。一眼就看到把menu写成meun了。。。不会英文就用拼音不好么?

以下是引用wmf2014在2015-3-14 21:18:57的发言:

 第9行声明:int menu(void);
第18行调用:while ((choice = menu()) != 'e')
第37行函数:int meun(void)

仔细看看问题在哪。
2015-03-14 21:36
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 4楼 wmf2014
找了好久,硬是没看出来。下次实找不到就把相关标识全部换一遍。

人有多懒,编程就有多难。
2015-03-14 23:19
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 5楼 afanihao
拼音比英文更差,英文是初中水平而且考试从来不及格。拼音到现在也分不清声母,韵母。

人有多懒,编程就有多难。
2015-03-14 23:22
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
程序代码:
# include <stdio.h>
float Add(float x,float y);
float Cut(float x,float y);
float Mut(float x,float y);
float Div(float x,float y);

int main(void)
{
    float (*Fp)(float, float);
    char opt;     //选项 
    int sign =1;  //退出标号 
    float x,y;    
    while(1)
    {
        printf("==========\n");
        printf("请输入选择\n");
        printf("a:  + \n");
        printf("b:  - \n");
        printf("c:  * \n");
        printf("d:  / \n");
         printf("q:  退出 \n");
        printf("==========\n");
        
        opt=getchar();   //接受选择 
        if(opt>='a'&&opt<='d'||opt=='q') //如果输入选项正确 
         {
    
              
            switch(opt)  //选择函数 
           {
                 case 'a':
                Fp=&Add;
                break;
              case 'b':
                Fp=&Cut;
                break;
              case 'c':
                Fp=&Mut;
                break;
              case 'd':
                Fp=&Div;
                break;
              case 'q':
                sign=0;
             
          }
          
           if(sign!=0) //如过sign标号!=0(初始化为1) 
           {
                //在scanf前有选择a,b,c,d,q选项留在缓冲区的回车,但是scanf不接受空白符 
               scanf("%f %f",&x,&y);
               printf("%.3f\n\n",(*Fp)(x,y));
               
           }
           else
            break; //否则结束循环 
        } 
       else   //如果输入选项不正确 
          {
              putchar('\a');  //警告音 
            printf("您的输入有误,请确认后重新输入\n\n\n");    
          }
        getchar(); //在下一个循环前处理输入2个数后留在缓冲区的回车键,以免opt得到回车符 
    } 
    
    return 0;
}

float Add(float x,float y)
{
    return (x+y);
    
}

float Cut(float x,float y)
{
    return (x-y);
    
}

float Mut(float x,float y)
{
    return (x*y);
    
}

float Div(float x,float y)
{
    return (x/y);
    
}


自己也写了一个

你醒了?快起来敲代码!!
2015-03-15 10:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
自己寫的代碼能犯這種錯誤,説明做事沒有條理,該打屁屁。

[ 本帖最后由 TonyDeng 于 2015-3-15 13:53 编辑 ]

授人以渔,不授人以鱼。
2015-03-15 13:44
快速回复:当局者已晕找不出哪里出错,求旁观者指出错误在哪
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030214 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved