C语言自学路之课堂练习(选酒店 算房价)
/* 用户选择入住酒店及天数,程序打印相应价格,若入住多天,则价格为前一天的95% */
//hotelname.h用于封装酒店名称、折扣率、价格为自定义头文件
//hotelname.c用于封装自定义函数,对应hotelname.h实现
main.c
#include <stdio.h>
#include <stdlib.h>
#include "hotelname.h"//自定义头文件时使用双引号
extern char hotel[4][50];
extern int night;
int main()
{
//显示菜单
int choice;
while(1)
{
choice=menu();
if(choice!=0)
{
printf("当前用户选择的是第%d家的%s酒店。\n",choice,hotel[choice-1]);
}
else
{
printf("已退出。");
break;
}
printf("当前用户入住共%d晚,",nights());
printf("一共%lf元。\n",showprice(night));
printf("\n***************************\n");
}
return 0;
}
hotelname.c
/*对应hotel.h实现文件*/
#include <stdio.h>
#include "hotelname.h"
char hotel[4][50]={"皇家第一家酒店","贝尔第二酒店","拉蒂菲第三酒店","索德利第四家酒店"};
int night;
int i;
int choice;//用户的输入
int menu(void)
{
int result;
printf("请选择入住的酒店:(按0退出)\n");
for(i=0;i<4;i++)
{
printf("第%d家酒店:%s\n",i+1,hotel[i]);
}
printf("请输入选择:");
while(result=(scanf("%d",&choice))!=1 | choice<0 |choice>4)
{
fflush(stdin);
printf("输入有误,重新输入1-5之间整数!\n");
printf("请输入选择:");
}
return choice;
}
int nights(void)
{
int result2;
printf("请输入入住天数:\n");
while(result2=(scanf("%d",&night))!=1 | night<0)
{
fflush(stdin);
printf("请输入大于0的天数。\n");
printf("请输入入住天数:\n");
}
return (int)night;
}
double showprice(int nights)
{
double price;
double sumup=0;
switch(choice)
{
case 1:
price=HOTEL1;
break;
case 2:
price=HOTEL2;
break;
case 3:
price=HOTEL3;
break;
case 4:
price=HOTEL4;
break;
}
for(i=0;i<nights;i++)
{
sumup+=price;
price*=0.95;
}
return price;
}
hotelname.h
#ifndef HOTELNAME_H_INCLUDED
#define HOTELNAME_H_INCLUDED
#define HOTEL1 1000.00
#define HOTEL2 2000.00
#define HOTEL3 3000.00
#define HOTEL4 4000.00
#define SALES 0.95
int menu(void);//打印菜单
int nights(void);//返回用户的输入
double showprice(int nights);//根据输入的天数计算价格
#endif // HOTELNAME_H_INCLUDED