C语言的GPA计算器

GPA Calculator in C

我正在尝试获取此代码来计算 class 的平均 GPA。我遇到的问题是我的 do...while 代码似乎犯了一个错误,因为当我 运行 它时,它不断地循环回到要求我输入另一个 GPA,而不是询问如果我想计算平均值。

#include<stdio.h>

int main()
{
    float faGPA[30], fSum = 0, fAvg = 0;
    int x, y;
    char cResp = '[=10=]';

    printf("\t\tGPA Calculator\n");
    printf("\nEnter up to 30 GPAs into the calculator.\n");

    do{
        printf("\nEnter a GPA: ");
        scanf("%f", &faGPA[x]);
        x++;
        printf("\nCalculate the GPA average (Y/N)?\n");
        scanf("%c", &cResp);
    } while(x < 30 && cResp != 'Y' || x < 30 && cResp != 'y');

    for(y = 0; y < (x + 1); y++)

    fSum += faGPA[y];
    fAvg = (fSum / (y - 1));

printf("\nThe class GPA is:%.2f", fAvg);

return 0;
}

这里有两个问题。首先,您需要丢弃 scanf 中的新行。有关详细信息,请参阅 here

第二个||无论用户输入的是 Y 还是 y,运算符都会导致整个语句的计算结果为真。尝试切换到 && 运算符并关闭括号中的两个检查。

请参阅下面的示例 - 它至少应该让你更进一步,尽管我仍然没有从你的数学中得到正确的答案。

float faGPA[30], fSum = 0, fAvg = 0;
int x = 0, y = 0;
char cResp = '[=10=]';

printf("\t\tGPA Calculator\n");
printf("\nEnter up to 30 GPAs into the calculator.\n");

do{
    printf("\nEnter a GPA: ");
    scanf("%f", &faGPA[x]);
    x++;
    printf("\nCalculate the GPA average (Y/N)?\n");
    scanf("\n%c", &cResp);
} while (x < 30 && (cResp != 'Y' && cResp != 'y'));

for (y = 0; y < (x + 1); y++)

    fSum += faGPA[y];
fAvg = (fSum / (y - 1));

printf("\nThe class GPA is:%.2f", fAvg);

return 0;

你在底部检查的逻辑有点不对。

如果你说 Y 或 y 或者如果 class 尺寸达到 30,它应该是 'end。

这转化为:

while(x < 30 || cResp != 'y' || cResp != 'Y')