main.c:7:1错误:预期标识符或'('之前' {'令牌

时间:2018-04-17 19:49:38

标签: c

我正在用c代码编写程序,该代码旨在根据您输入的数值返回字母等级,但每次都返回相同的错误,我似乎无法弄清楚。

#include <stdlib.h>
#include <stdio.h>

char lettergrade(float numgrade);

int main(void);
{
    float numgrade;
    char grade;

    printf(" what is your numerical grade? ");
    scanf("%f", &numgrade);

    grade = lettergrade (numgrade);

    printf("here is your letter grade: %c ", grade);

    system("pause");
    return(0);
}

char lettergrade(float numgrade);
{
    if (numgrade < 50)
    {
        lettergrade = 'D';
    }
    if (numgrade <= 50 && numgrade < 65)
    {
        lettergrade = 'C';
    }
    if (numgrade <= 65 && numgrade < 80)
    {
        lettergrade = 'B';
    }
    if (numgrade >= 80)
    {
        lettergrade = 'A';
    }

    return(0);
}

2 个答案:

答案 0 :(得分:3)

你有两次同样的错误:

  1. char lettergrade(float numgrade);... - &GT; char lettergrade(float numgrade)...{}
  2. int main(void); ... - &GT; int main(void) ...{}
  3. 但除此之外,您的代码还有其他错误,这两个被掩盖: - (

    lettergrade = 'D';不合法,因为lettergrade是函数名称(因此不是&#34;左值&#34; ,这意味着您无法使用为它分配一个值),它应该是这个上下文中的一个变量。改为:

    char lettergrade(float numgrade)
    {
        char tmp;
        if (numgrade < 50)
        {
            tmp = 'D';
        }
        if (numgrade <= 50 && numgrade < 65) // also, this probably should be if (numgrade >= 50 && ...
        {
            tmp = 'C';
        }
        if (numgrade <= 65 && numgrade < 80) // same goes here
        {
            tmp = 'B';
        }
        if (numgrade >= 80)
        {
            tmp = 'A';
        }
    
        // return tmp 
        /* consider returning tmp, since always returning (0) 
           makes this whole function redundant (your current 
           function just returns 0, no matter what the input is) */
        return(0);
    }
    

答案 1 :(得分:2)

int main(void);

^函数声明。

int main(void) { ... }

^功能定义;函数体介于{ }之间。

int main(void); { ... }

^语法错误;不能同时拥有;{ }