Code Bye

本人写了一c primer plus 第九章的一个旅馆收费系统的函数,编译时错误为:未定义函数pow(),请帮

需要编写一个程序实现如下功能:管理4个旅馆,每个旅馆收费不同。但对于一个特定旅馆,它的每一间房的收费都是一样的。对全部旅馆来说,有一个共同点就是住宿时间超过一天后,第二天收费是第一天的95%,即第n天的收费是第(n-1)天的95%。
本人将源代码编写在3个文件里面然后一起编译。
头文件:hotel.h
//hotel.h
//hotel头文件
//程序需要的的一些常量的定义
#define HOTEL1 80.00            //旅馆1第一晚的价格
#define HOTEL2 100.00           //旅馆2第一晚的价格
#define HOTEL3 120.00           //旅馆3第一晚的价格
#define HOTEL4 140.00           //l旅馆4第一晚的价格
#define ZHE 0.95                //折扣95%,后一天是前一天95%
#define STAR "******************************************" //字符窜  星星
//函数声明
int menu(void);         //菜单函数,给出选择列表
int night(void);        //居住时间函数,返回居住天数
double price(double,int);       //价格函数,返回按居住天数和价格计算的总花费

支持函数:hotel_fun.c

//hotel_fun.c
//子函数,函数支持模块
#include<stdio.h>
#include"hotel.h"
#include<math.h>        //使用double pow(double x,double y);
int menu(void)          //菜单函数
{
        int xz;
        printf("1.hotel1\t2.hotel2\n3.hotel3\t4.hotel4\n5.quit\n");
        printf("请输入你要住的旅馆\n");
        while(scanf(" %d",&xz)!=1||xz<1||xz>5)
        {
                while(getchar()!="\n");
                printf("输入错误,请重新输入\n");
        }
        return xz;
}
int night(void)         //居住时间函数
{
        int nights;
        printf("请输入你需要住几晚\n");
        while(scanf(" %d",&nights)!=1||nights<1)
        {
                while(getchar()!="\n");
                printf("输入错误,请重新输入\n");
        }
        return nights;
}
double price(double pce,int nit)        //价格函数
{
        double sum,qn;
        qn=pow(ZHE,nit);
        sum=pce*(1-qn)/(1-ZHE); //等比数列求和公式
        return sum;
}                              

主函数,控制模块:hotel.c

//hotel.c
/**4间旅馆,每间价格不同,但有一个共同点,第n天的价格是第(n-1)天价格的0.95倍,
刚好是等比数列**********************************/
//主函数,控制模块
#include<stdio.h>
#include<math.h>
#include"hotel.h"
int menu(void);         //菜单函数
int night(void);        //居住时间函数
double price(double,int);       //价格函数
int main(void)
{
        int choice,nights;
        double cost,pric;       //pric某个旅馆一晚价格,cost居住n晚后的花费
        printf("%s\n",STAR);
        choice=menu();          //调用菜单
        switch(choice)
        {
                case "1":
                        {pric=HOTEL1;break;}
                case "2":
                        {pric=HOTEL2;break;}
                case "3":
                        {pric=HOTEL3;break;}
                case "4":
                        {pric=HOTEL4;break;}    //四个旅馆4个价格
                case "5":
                        {
                                printf("再见\n");       //结束
                                return 0;
                        }
                default:
                        {
                                printf("未知错误\n");
                                return 0;
                        }
        }
        nights=night();         //居住时间
        cost=price(pric,nights);        //价格函数,等比数列求和
        printf("价格为%.2lf\n",cost);
        printf("%s\n",STAR);
        return 0;
}

本人是在虚拟机上编译的,系统为ubuntu。编译过程如下:

求指点本人哪里错了,本人pow()函数使用应该没错

解决方案

20

gcc -lm hotel.c ……

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明本人写了一c primer plus 第九章的一个旅馆收费系统的函数,编译时错误为:未定义函数pow(),请帮