如何制作计算成绩的功能?

时间:2015-07-11 12:32:02

标签: c function

当我尝试编译时,我收到此错误:'compute_GPA'的冲突类型。

我的主要功能测试compute_GPA和compute_GPA sholuld计算成绩的平均值!

我说错了什么? 这是我的代码:

#include <stdio.h>
#include <ctype.h>   /* for access to the toupper function */

/* Test a function that calculates the average of grades in a char array. main tests the function */

int main(void)
{
    char a[5] = {'A','C','B','C','D'};
    float see = compute_GPA(a, 5);
    printf("largest = %f", see);  
    return 0;
}

float compute_GPA(char grades[], int n)
{
    float sum = 0;
    int i;
    float count = 0;
    /*Iterate over the array of chars */
    for (i = 0; i < n; i++)
    {
        count++;
        /*Check what char array contain*/
        char check = grades[i];
        switch(toupper(check)) {
            case 'A': sum += 4; break;
            case 'B': sum += 3; break;
            case 'C': sum += 2; break;
            case 'D': sum += 1; break;
            default:sum += 0; break;
        }
    }
    return sum / count;
}

2 个答案:

答案 0 :(得分:1)

将函数compute_GPA()定义移到main()

之上

main()之前为其声明原型:

float compute_GPA(char*, int);

在C99之前,如果编译器无法看到声明,则编译器假定函数将返回int。但这种隐含声明与compute_GPA()的实际定义相冲突。但这个&#34;隐含的int&#34;规则已从C99及更高版本中删除。因此,您的代码在现代C中无效。

答案 1 :(得分:0)

float compute_GPA(char grades[], int n);

在int main和inside int main write之前

float see;see = compute_GPA(a,5);

有时初始化和分配在一行中会产生问题