首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPA计算器

GPA计算器
EN

Stack Overflow用户
提问于 2015-06-19 20:19:46
回答 2查看 305关注 0票数 1

我试图得到这个代码来计算一个类的平均GPA。我遇到的问题是,我的do...while代码似乎犯了一个错误,因为当我运行它时,它总是循环到要求我输入另一个GPA,而不是问我是否想计算平均值。

代码语言:javascript
复制
#include<stdio.h>

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

    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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-19 20:50:48

这里有两个问题。首先,您需要丢弃扫描程序上的新行。详情请参见这里

其次,无论用户输入y或y,都会使整条语句的计算结果变为true。尝试切换到A &&操作符,并在他们自己的括号内关闭这两个检查。

看下面的例子-它至少会让你更进一步,尽管我仍然没有从你的数学中得到正确的答案。

代码语言:javascript
复制
float faGPA[30], fSum = 0, fAvg = 0;
int x = 0, y = 0;
char cResp = '\0';

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;
票数 2
EN

Stack Overflow用户

发布于 2015-06-19 20:53:05

在底部的检查中,你的逻辑有点错误。

如果你说Y或y,或者班级规模达到30,就应该结束。

这意味着:

代码语言:javascript
复制
while(x < 30 || cResp != 'y' || cResp != 'Y')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30946623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档