【问题标题】:float arrays using functions and for loop使用函数和 for 循环的浮点数组
【发布时间】: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,而不是单个浮点数,将其更改为MarksAwardedMarksAvailable 也一样。
  • “float”类型的参数与“float *”类型的参数不兼容'function':无法从'float'转换为'float *'
  • 请将该错误放在问题中,而不是在 cmets 中。该错误准确地告诉您我提到的内容。 MarksAwarded[100] 是单个 float,而函数需要 float *
  • 我想试试看

标签: c arrays function loops


【解决方案1】:

在你的主函数中,检查这一行:

GradeFromTotalRawMarks(MarksAwarded[100], MarksAvailable[100], maxAssignments);

第一个参数错误。你应该传递整个数组。 将该行更改为:

GradeFromTotalRawMarks(MarksAwarded, MarksAvailable, maxAssignments);

我在解决上述问题后编译了您的代码,并且编译没有任何错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多