首页 > 解决方案 > if else 语句的公式输出问题。我该怎么做才能解决这个问题?

问题描述

我参加了我的第一堂 CS 课,我们刚刚讨论了 if-else 语句。我可以得到代码的“if”部分来输出我想要的。但是 else 语句并没有说出我想要的东西。我将不胜感激。这是我使用的输入。学时=21,实验课程=2,是学区的学生:n

#include <iostream>
using namespace std;


// main program
int main()
{
    // declarations
    int credHours, lab_courses;
    char answer;
    double tuition_cost, total_tuition, labCost;
    const double inTuition=70.00, outTuition=255.54, labFee=85.00;


    //enter credit hours
    cout<<"Enter the number of credit hours: ";
    cin>>credHours;

    //enter amount of lab courses
    cout<<"Enter the number of lab courses: ";
    cin>>lab_courses;

    //student is asked if they are in district
    cout<<"Is the student \"in district\" (y or n): ";
    cin>>answer;
    cout<<"\n"<<endl;
    if(answer=='y'||'Y')
    {
        tuition_cost=credHours*inTuition; //calculates the cost of in state tuition before lab fees(if they apply)
        cout<<"Tuition costs: "<<tuition_cost<<endl;
        if(lab_courses>0)
        {
            labCost=lab_courses*labFee;        //calculates lab fees
            cout<<"Lab fees: "<<labCost<<endl;
            total_tuition=labCost+tuition_cost; //calculates total in state tuition cost once lab fees are applied
        }
        cout.setf(ios::fixed);
        cout.setf(ios::showpoint);
        cout.precision(2);
        cout<<"\n"<<endl;
        cout<<"Your total payment is: "<<total_tuition<<endl; //outputs total tuition costs for in state students

    }
    else
    {
        tuition_cost=credHours*outTuition; //calculates the cost of out of state tuition before lab fees(if they apply)
        cout<<"Tuition costs: "<<tuition_cost<<endl;
        if(lab_courses>0)
        {
            labCost=lab_courses*labFee;         //calculates lab fees
            cout<<"Lab fees: "<<labCost<<endl;
            total_tuition=labCost+tuition_cost; //calculates total out state tuition cost once lab fees are applied
        }

        cout.setf(ios::fixed);
        cout.setf(ios::showpoint);
        cout.precision(2);

        cout<<"\n"<<endl;
        cout<<"Your total payment is: "<<total_tuition<<endl; //outputs total tuition costs for out of state students
    }

    return 0;
}

标签: c++

解决方案


正如@Borgleader 所说,你在这里犯了错误

if(answer=='y'||'Y')

基本上正在做的事情是扩展到这样的东西

 if((static_cast<int>(answer) == static_cast<int>('y')) || static_cast<bool>('Y'))

如果您看到此表达式将始终评估为 true ,那么您的 else 部分永远不会被调用。

当你这样做时

 if(answer=='y'|| answer=='Y')

编译器会将其评估为类似

 if((static_cast<int>(answer) == static_cast<int>('y')) || (static_cast<int>(answer) == static_cast<int>('Y'))) {
    

如果我是对的,你想做什么。


推荐阅读