C:1102火车票退票费计算(函数专题)

本文介绍了一个C语言函数,用于计算火车票在48小时以上退票时的退票费用。函数CancelFee(double price)接受票价作为输入,并根据新的退票政策返回精确到0.5元的退票费。退票费计算考虑了尾数处理,使用了math.h库中的modf()函数来分离浮点数的整数和小数部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:2013年起,火车票退票费比例下调:票面乘车站开车时间前48小时以上的按票价5%计退票费。同时,车票退票费的计算方法不再四舍五入到元为单位,而是以5角为单位:尾数小于0.25元的舍去、不小于0.25元且小于0.75元的计为0.5元、不小于0.75元的进为1元。编写一个函数,计算退票费,假定退票时间举例开车时间在48小时以上。函数原型如下:
double CancelFee(double price);
输入:输入一个实数,表示火车票票面价格。
输出:输出一个实数,表示退票费,结果保留一位小数。

样例输入
106
样例输出
5.5

思路:使用modf()函数分离浮点数的整数和小数部分。

C语言 modf() 函数用来提取双精度浮点数的小数部分和整数。
double modf(double x, double *intptr) 将提取浮点数 x 的整数部分和小数部分,整数部分被存入参数 intptr 中,小数部分被放入返回值中。
头文件:math.h
语法/原型:double modf(double x, double *intptr);
参数说明:
    x:要被计算的浮点数;
    intptr:一个指向整数部分的指针。
返回值:x 的小数部分。

学习链接:C语言modf()函数:提取浮点数的小数和整数部分

代码:

#include<stdio.h>
#include <math.h>
double CancelFee(double price);
int main(){
	double price;
	scanf("%lf",&price);
	printf("%.1lf",CancelFee(price)); 
} 
double CancelFee(double price){
	double fee=price*0.05,intpart;
	double fractpart=modf(fee,&intpart);//用modf()提取整数部分和小数部分 
	if(fractpart<0.25) return intpart;
	else if(fractpart<0.75) return intpart+0.5;
	else return intpart+1;
}
//http://c.biancheng.net/c/modf.html

运行结果:

笔者水平有限,不到之处,还望诸位批评指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舟桥居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值