需要编写一个程序实现如下功能:管理4个旅馆,每个旅馆收费不同。但对于一个特定旅馆,它的每一间房的收费都是一样的。对全部旅馆来说,有一个共同点就是住宿时间超过一天后,第二天收费是第一天的95%,即第n天的收费是第(n-1)天的95%。
本人将源代码编写在3个文件里面然后一起编译。
头文件:hotel.h
本人将源代码编写在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 ……