【问题标题】:Is it possible to add two float inside the for loop?是否可以在 for 循环中添加两个浮点数?
【发布时间】:2019-12-31 09:12:54
【问题描述】:

我正在用 C++ 创建一个简单的成绩计算器,我是 C++ 的新手,我正在练习它,但是我的方法或代码有问题,希望你能帮助我这个。我不知道是否可以在 for 循环方法中添加用户输入(使用浮点数)并将其打印出来。谢谢你,新年快乐!

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    float sum = 0.00, avg, grades [10], i;

    cout << "\n Enter your grades on each subject\n";
    cout << "-----------------------------------------------";
    cout << "\n Chemistry for Engineers Laboratory: ";
    cin >> grades [0];
    cout << "\n Chemistry for Engineers: ";
    cin >> grades [1];
    cout << "\n Computer Aided Drafting: ";
    cin >> grades [2];
    cout << "\n Calculus";
    cin >> grades [3];
    cout << "\n Kontekstwalisadong Komunikasyon sa Filipino at sa Iba't-ibang Larangan: ";
    cin >> grades [4];
    cout << "\n Science Technology and Society: ";
    cin >> grades [5];
    cout << "\n Mathematics in the Modern World: ";
    cin >> grades [6];
    cout << "\n Movemement Enhancement (Physical Education): ";
    cin >> grades [7];
    cout << "\n Readings in Philippine History: ";
    cin >> grades [8];
    cout << "\n Undertanding the Self: ";
    cin >> grades [9];

    for ( i = 0; i < 10; i++) {
        printf ("%.1f + %.1f\n", sum , avg, sum+avg);
    }
    cout << "----------------------------------------";
    cout << "Total Grade: " << sum;
    avg = sum / 10;
    cout << "\n GWA: " << avg;
    cout << "\n Rating: ";

    if ( avg > 1.00) {
        cout << "Excellent";
    } else if ( avg > 3.00 && avg <= 2.00) {
        cout << "Passed";
    } else if ( avg > 4.00 && avg <= 3.00) {
        cout << "Conditional Passing";
    } else {
        cout << "Failed";
    }
    return 0;
}

【问题讨论】:

  • printf ("%.1f + %.1f\n", sum , avg, sum+avg); 为什么会有sum+avg
  • 哦。对不起,先生,这就是我遇到问题的部分,我不知道如何添加这两个浮点数。呵呵。对不起对不起对不起..

标签: c++ gcc g++


【解决方案1】:

您不能使用printf 来计算成绩的总和。您可以使用循环来计算sum,如下所示:

for (i = 0; i < 10; i++) {
  sum = sum + grades[i];
}

printf 是一个库函数,可将格式化输出发送到标准输出(您的屏幕)。

【讨论】:

  • 哦!感谢您的提示和想法先生!非常感谢!现在我知道在哪里使用 printf 了! ^^
【解决方案2】:
  1. printf 用于将结果写入stdout
  2. 成绩评估的条件检查不正确平均成绩超过 1.0 被视为优秀

下面的sn-p显示for-loop的正确用法

    #include <vector>
    #include <string>
    #include <array>
    #include <iostream>

    int main()
    {
        std::vector<float> grades;
        const std::vector<std::string>  subjects = {
            "Chemistry for Engineers Laboratory",
            "Chemistry for Engineers", 
            "Computer Aided Drafting",
            "Calculus",
            "Kontekstwalisadong Komunikasyon sa Filipino at sa Iba't-ibang Larangan"
            //Extend the subjects
        };

        int TotlaSubject = subjects.size();

        std::cout << "\n Enter your grades on each subject\n";
        std::cout << "-----------------------------------------------\n";
        for (int i = 0; i < TotlaSubject; i++)
        {
            std::cout << subjects[i] << " : ";
            float InputGrade;
            std::cin >> InputGrade;
            grades.push_back(InputGrade);
//          ^^^^^ here pushing data into the in a loop
        }

        float total =0.0;
        for (auto grade : grades){
            total += grade;  //Adding grades in a loop
         }

        float avg = total / grades.size();
        std::cout << "Total : " << total << " Avg : " << avg << std::endl;        
        return 0;
    }

【讨论】:

  • 明白了,先生! ...对于成绩评估,我只是在尝试如何使用^^,但感谢先生的提示!您的 sn-p 给了我很多想法,对我将来会有帮助!非常感谢!
【解决方案3】:

这可能会解决您的问题。

for(int i=0;i<10;++i)
{
    sum += grades[i];
    avg = sum / (i+1);
    printf ("After adding lecture %u --> sum: %.1f + average: %.1f\n", i+1,sum , avg);
}

【讨论】:

  • 如果您想回答已经回答的问题,请检查您的回答是否与已经给出的答案不同。如果已经有类似的答案,请避免重复类似的答案。
  • 回答时您还应该解释为什么这将是正确的方法,而不仅仅是提供复制和粘贴的代码,因为这会导致cargo cult programming :)
猜你喜欢
  • 1970-01-01
  • 2021-03-10
  • 2017-02-04
  • 2021-04-03
  • 2020-09-21
  • 1970-01-01
  • 2017-12-26
  • 2014-08-23
相关资源
最近更新 更多