当我尝试编译时,我收到此错误:'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;
}
答案 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);
有时初始化和分配在一行中会产生问题