C语言自学路之课堂练习(选酒店 算房价)

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值