第 9 章 函数
/*-------------------------- hotel.c -- 酒店管理函数 --------------------------*/ #include <stdio.h> #include "hotel.h" int menu(void) { int code, status; printf("\n%s%s\n", STARS, STARS); printf("Enter the number of the desired hotel:\n"); printf("1) Fairfield Arms 2) Hotel Olympic\n"); printf("3) Chertworthy Plaza 4) The Stockton\n"); printf("5) quit\n"); printf("%s%s\n", STARS, STARS); while ((status = scanf("%d", &code)) != 1 || code < 1 || code > 5) { if (1 != status) scanf("%*s"); printf("Enter an integer from 1 to 5, please.\n"); } return code; } int getnights(void) { int nights; printf("How many nights are needed? "); while (1 != scanf("%d", &nights)) { scanf("%*s"); printf("Please enter an integer, such as 2.\n"); } return nights; } void showprice(double rate, int nights) { double total = 0.0; double factor = 1.0; for (int n(1); n <= nights; ++n, factor *= DISCOUNT) total += rate * factor; printf("The total cost will be $%0.2f.\n", total); }
/*--------------------------------------------- hotel.h -- 符号常量和 hotel.c 中所有函数原型 ---------------------------------------------*/ #define QUIT 5 #define HOTEL1 180.00 #define HOTEL2 225.00 #define HOTEL3 255.00 #define HOTEL4 355.00 #define DISCOUNT 0.95 #define STARS "*************************" //显示选择列表 int menu(void); //返回预订天数 int getnights(void); //根据费率、入住天数计算费用;并显示结果 void showprice(double rate, int nights);
/*----------------------------- usehotel.c -- 房间费率程序 -----------------------------*/ #include <stdio.h> #include "hotel.h" //声明函数,定义符号常量 int main() { int nights, code; double hotel_rate; while (QUIT != (code = menu())) { switch (code) { case : hotel_rate = HOTEL1; break; case : hotel_rate = HOTEL2; break; case : hotel_rate = HOTEL3; break; case : hotel_rate = HOTEL4; break; default: hotel_rate = 0.0; printf("Oops!\n"); break; } nights = getnights(); showprice(hotel_rate, nights); } printf("Thank you and goodbye.\n"); return ; }
相关推荐
Android开发CXY 2020-11-11
lpkwxl 2020-06-17
RealJianyuan 2020-06-14
pbyanglove 2020-06-09
徐建岗网络管理 2020-06-09
fengjing81 2020-06-06
lynjay 2020-06-02
wujingsheng0 2020-05-16
吴小伟 2020-05-09
sillion 2020-05-03
xiaobater 2020-05-01
ericasadun 2020-04-26
lynjay 2020-04-26
choupiaoyi 2020-04-26
tydldd 2020-04-23