声明在C中错误地终止(大括号)

时间:2018-05-15 17:52:30

标签: c

我目前正在构建一个读取数量的程序(假设它的整数为5),然后读出寄存器操作员应该给客户的每种类型的硬币数量。我是澳大利亚人,所以你会注意到50c,20c,10c和5c。

我的问题是我在第10行或PrintDisplay函数之后的行中出现的错误。编译器说:

Declaration terminated incorrectly 

但我看到的只是{

我是否错误地输入了以下}或者是否存在另一个我无法看到的错误?

这是代码:(我还包括了stdio.h,但在草案中看起来很奇怪)

void PrintDisplay(void);
{   
    printf("Enter an amount to calculate change: \n ");
    return;
}


int GetChange(void)
{
    int change;
    scanf("%d%*c", &change);
    return(change);
}


int CalculateChange(int change)
{
    int FiftyCentAmount = 0;
    int TwentyCentAmount = 0;
    int TenCentAmount = 0;
    int FiveCentAmount = 0;

    if(change >= 50)
    {
        FiftyCentAmount++;
        change = (change - 50);
    }

    else if(change >= 20)
    {
        TwentyCentAmount++;
        change = (change - 20);
    }

    else if(change >= 10)
    {
        TenCentAmount++;
        change = (change - 10);
    }

    else if(change >= 5)
    {
        FiveCentAmount++;
        change = (change - 5);
    }
    return(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmount, int FiveCentAmount);
}


void PrintResult(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmount, int FiveCentAmount)
{
    printf("The amount of each coin denomination you should give are: /n");
    printf("50c: %d%*c /n", FiftyCentAmount);
    printf("20c: %d%*c /n", TwentyCentAmount);
    printf("10c: %d%*c /n", TenCentAmount);
    printf("5c: %d%*c /n", FiveCentAmount);
    return;
}


int main(void)
{
    PrintDisplay();
    GetChange(int change);
    CalculateChange(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmountCentAmount, int FiveCentAmountCentAmount);
    PrintResult(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmount, int FiveCentAmount);
    return(0);
}

5 个答案:

答案 0 :(得分:2)

删除第一行的;,因为它是一个函数。 正如评论中所述。

答案 1 :(得分:2)

在第一行,您要定义C中的函数和函数定义,不要以分号;结束。函数声明(没有函数体)。

在第一行删除分号将解决它。

答案 2 :(得分:2)

这么多错误:

<input type="number" (keyup)="setAnswer($event)>

setAnswer(event:any) {
  if(event.keyCode == '229') {
    // Handle '.' logic
  }
}

还有更多错误,但这足以至少让程序编译!

您询问了一个函数修改其参数,以替代返回多个值。

这是一个非常简短的答案:
深刻的理解只有时间

  • 在您要修改的每个变量前面使用void PrintDisplay(void); // Do not put a semi-colon when defining a function. { printf("Enter an amount to calculate change: \n "); return; } int CalculateChange(int change) { int FiftyCentAmount = 0; int TwentyCentAmount = 0; int TenCentAmount = 0; int FiveCentAmount = 0; [ .... ] // C cannot return multiple variables at once. A function can have ONE and ONLY ONE return value. return(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmount, int FiveCentAmount); } void PrintResult(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmount, int FiveCentAmount) { [...] return; // An empty return statement is not needed. When a void-function reaches the end, it automatically returns. } int main(void) { // Declare your variables before using them! int change; int FiftyCentAmount; int TwentyCentAmount; int TenCentAmountCentAmount; int FiveCentAmountCentAmount; PrintDisplay(); // Do not write the type when calling a function // GetChange(change); GetChange(int change); // Do not write the type when calling a function. // CalculateChange(FiftyCentAmount, TwentyCentAmount, TenCentAmountCentAmount, FiveCentAmountCentAmount); CalculateChange(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmountCentAmount, int FiveCentAmountCentAmount); PrintResult(int FiftyCentAmount, int TwentyCentAmount, int TenCentAmount, int FiveCentAmount); return(0); } 调用该函数。
  • 该函数使用&
  • 接收每个参数
  • 该函数将每个参数称为*

示例

*name

答案 3 :(得分:1)

Alvits已在评论中回答。看起来你在第一行有一个无意的分号。

答案 4 :(得分:1)

在第一行,void PrintDisplay(void);末尾的分号将您的函数定义转换为声明。

函数后面的主体被读作自己声明的一部分

{   
printf("Enter an amount to calculate change: \n ");
return;
}

此部分本身无效C,导致错误。

删除;之后的PrintDisplay,将其重新转换为函数定义,Declaration terminated incorrectly错误就会消失。