【发布时间】:2016-11-13 22:16:00
【问题描述】:
我只掌握了 C 中的函数,所以请耐心等待。我的前两个功能是正确的,可能是第三个。目标是在输入奖励和可用的分数时能够输出多达 100 个作业的成绩。
我们获得了char GradeFromTotalRawMarks(float marksAwarded[], float marksAvailable[], int maxAssignments); 的标准格式。我不断收到以下关于指针的错误(我还不知道),我不知道如何使用 max assignments,它应该指示传递给函数的分配总数。
argument of type "float" is incompatible with parameter of type "float *" 'function':
cannot convert from 'float' to 'float *
代码如下:
#include <stdio.h>
char GradeFromPercentage(float percentage);
char GradeFromRawMarks(float marksAwarded, float marksAvailable);
char GradeFromTotalRawMarks(float marksAwarded[], float marksAvailable[], int maxAssignments);
int main()
{
int maxAssignments;
float MarksAwarded[100];
float MarksAvailable[100];
GradeFromTotalRawMarks(MarksAwarded[100], MarksAvailable[100], maxAssignments);
return 0;
}
char GradeFromPercentage(float percentage)
{
char grade;
if (percentage >= 90)
{
grade = 'A';
}
else if (percentage >= 70)
{
grade = 'B';
}
else if (percentage >= 50)
{
grade = 'C';
}
else if (percentage >= 30)
{
grade = 'D';
}
else
{
grade = 'F';
}
return grade;
}
char GradeFromRawMarks(float marksAwarded, float marksAvailable)
{
float percentage = (marksAwarded / marksAvailable) * 100;
GradeFromPercentage(percentage);
return GradeFromPercentage(percentage);
}
char GradeFromTotalRawMarks(float marksAwarded[], float marksAvailable[], int maxAssignments)
{
char finish = 'n';
int count1;
while (finish == 'n')
{
for (count1 = 0; count1 < 100 && finish == 'n'; count1++)
{
printf("Enter the marks awarded:");
scanf("%f", &marksAwarded[count1]);
printf("Enter the marks available: \n", &marksAvailable[count1]);
scanf("%f", &marksAvailable[count1]);
GradeFromRawMarks(marksAwarded[count1], marksAvailable[count1]);
printf("If you have finished, type n.");
scanf("%c", &finish);
}
}
return GradeFromRawMarks(marksAwarded[count1], marksAvailable[count1]);
}
【问题讨论】:
-
“我不断收到一些关于指针的错误”。在问题中包含这些确切的错误是否有意义?
-
MarksAwarded[100]越界访问。您应该将整个数组传递给GradeFromTotalRawMarks,而不是单个浮点数,将其更改为MarksAwarded。MarksAvailable也一样。 -
“float”类型的参数与“float *”类型的参数不兼容'function':无法从'float'转换为'float *'
-
请将该错误放在问题中,而不是在 cmets 中。该错误准确地告诉您我提到的内容。
MarksAwarded[100]是单个float,而函数需要float *。 -
我想试试看