Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c中尝试返回时出现的问题_C - Fatal编程技术网

在c中尝试返回时出现的问题

在c中尝试返回时出现的问题,c,C,我必须为类的c语言编写一个代码,但是我得到了这个错误,因为代码没有正确返回值,原因是我根本不理解 要求: 当天的游乐园门票每位成人30美元,每位儿童12美元。如果订购的门票总数超过10张,还可享受10%的折扣 给定两个整数变量num_成人和num_儿童,计算当天游乐场入场的总成本,并将其存储在双变量总成本中 我的代码:(可以假设每个变量都已正确初始化。) 下面是我的最佳猜测:您不希望将其输出为整数(%d),而是输出为浮点%f 这样做: printf("%.2f\n", total_cost);

我必须为类的c语言编写一个代码,但是我得到了这个错误,因为代码没有正确返回值,原因是我根本不理解

要求:

当天的游乐园门票每位成人30美元,每位儿童12美元。如果订购的门票总数超过10张,还可享受10%的折扣

给定两个整数变量num_成人和num_儿童,计算当天游乐场入场的总成本,并将其存储在双变量总成本中

我的代码:(可以假设每个变量都已正确初始化。)


下面是我的最佳猜测:您不希望将其输出为整数(%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;
}