在c中尝试返回时出现的问题
我必须为类的c语言编写一个代码,但是我得到了这个错误,因为代码没有正确返回值,原因是我根本不理解 要求: 当天的游乐园门票每位成人30美元,每位儿童12美元。如果订购的门票总数超过10张,还可享受10%的折扣 给定两个整数变量num_成人和num_儿童,计算当天游乐场入场的总成本,并将其存储在双变量总成本中 我的代码:(可以假设每个变量都已正确初始化。)在c中尝试返回时出现的问题,c,C,我必须为类的c语言编写一个代码,但是我得到了这个错误,因为代码没有正确返回值,原因是我根本不理解 要求: 当天的游乐园门票每位成人30美元,每位儿童12美元。如果订购的门票总数超过10张,还可享受10%的折扣 给定两个整数变量num_成人和num_儿童,计算当天游乐场入场的总成本,并将其存储在双变量总成本中 我的代码:(可以假设每个变量都已正确初始化。) 下面是我的最佳猜测:您不希望将其输出为整数(%d),而是输出为浮点%f 这样做: printf("%.2f\n", total_cost);
下面是我的最佳猜测:您不希望将其输出为整数(%d),而是输出为浮点%f 这样做:
printf("%.2f\n", total_cost);
#包括
总票数(总票数c,总票数a)
{
返回(c+a);
}
浮动总成本(整数c、整数a)
{
返回((12.00*c)+(30.00*a));
}
浮动贴现成本(整数c、整数a)
{
回报(总成本(c,a)*0.9);
}
浮动实际成本(整数c、整数a)
{
if(总票数(c,a)<10)
{
回报(总成本(c,a));
}
其他的
{
收益(贴现成本(c,a));
}
}
内部主(空){
int c,a;
c=2;a=2;
printf(“%.2f\n”,实际成本(c,a));
c=5;a=5;
printf(“%.2f\n”,实际成本(c,a));
返回0;
}
什么错误?从何处返回?您的预期输出是什么?因为总成本是双倍的,所以您不需要使用%d
来打印它。如果你的编译器没有警告你,就打开警告,或者找一个更好的编译器。为什么不计算成本而不打折呢。然后,如果车票数量超过10张,申请10%的折扣。这节省了重复——代码中有很多重复。如果一张成人票的价格变为32美元,你必须编辑3个位置,而不仅仅是一个。这很糟糕。请注意,您有一个bug-注意在平等问题上使用正确的方法进行分支。你在给10张票打折,而不仅仅是“超过10张”。我不是一个很擅长长名字的人,但即使我在a
和c
上划出了界限,而不是成人
和儿童
,或者n成人
和n儿童
,或者诸如此类。我不会使用float
——你应该使用double
。我可能会稍微不同地组织测试(调用total_cost()
类似于list_price()
,然后actual_cost()
可能会有double cost=list_price(n_成人,n_儿童);如果((n_成人+n_儿童)>10)cost*=0.9;返回成本;
。
printf("%.2f\n", total_cost);
#include <stdio.h>
int total_tickets(int c, int a)
{
return (c + a);
}
float total_cost(int c, int a)
{
return ((12.00 * c) + (30.00 * a));
}
float discounted_cost(int c, int a)
{
return (total_cost(c, a) * 0.9);
}
float actual_cost(int c, int a)
{
if(total_tickets(c, a) < 10)
{
return (total_cost(c, a));
}
else
{
return (discounted_cost(c, a));
}
}
int main(void) {
int c, a;
c = 2; a = 2;
printf("%.2f\n", actual_cost(c, a));
c = 5; a = 5;
printf("%.2f\n", actual_cost(c, a));
return 0;
}