#include <stdio.h>
double getTotalCost(float n,float t)
{
double cost;
if(n<=3)
{
cost=13+1;
}
else
{
if(5<=t&&t<23)
{
cost=13+1+2.3*(n-3);
}
else
{
cost=13+1+2.3*(n-3)*1.2;
}
}
return cost;
}
int main()
{
printf("小明每天打车总费用为%f:",getTotalCost(12,9)+getTotalCost(12,18));
return 0;
}
我是做安卓的,因为工作需要开始学习C语言
贴上我自己的代码,相互交流哈。
#include <stdio.h>
int getRent(int mile, int time) {
int startRent = 13; //起步价
int rentPerMile = 2.3; //每公里单价
int extraRent = 1; //燃油附加税
int rent = 0; //打车费用
//打车时间小于0或大于24都是不合法的,输出提示信息并结束方法
if(time < 0 || time > 24) {
printf("您输入的打车时间为:%d,这不是一个合法的时间,请重新检查您的输入!!");
return 0;
}
//在23点和5点前打车,每公里单价计费加收20%
if(time >= 23 || time < 5) {
rentPerMile *= rentPerMile*1.2;
}
if(mile <= 3) {
rent = startRent + extraRent;
} else {
rent = startRent + rentPerMile*(mile-3) + extraRent;
}
return rent;
}
int main()
{
int onWorkRent = getRent(12, 9);
int offWorkRent = getRent(12, 18);
printf("您的上班打车费用为:%d 元\n", onWorkRent);
printf("您的下班打车费用为:%d 元\n", offWorkRent);
printf("您一天的打车费用为:%d 元", onWorkRent+offWorkRent);
return 0;
}
是呀,用float或者都变了好一些,int不能输出小数的
还是该用float类型,全用int类型,因为自动转型等原因,最后的值就不对了~
我觉得把起步价这些值单独定义出来, 这样以后这些值有变化的话, 便于修改。就不用在代码里面到处去找需要修改的地方了
目前不知道C语言里面是否可以主动抛异常,所以只通过打印的方式提示函数的参数传入有误。这里只考虑了打车时间的参数非法问题,没考虑公里数为负等情况。
打车公里数和时间都只考虑了int类型的~~
没有问题吧