c++ - 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;
}
解决方案
正如@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'))) {
如果我是对的,你想做什么。
推荐阅读
- python - 对于最大和子列表,是否有任何时间复杂度为 O(n^3) 的算法?
- java - 当用户滚动到 RecyclerView 的底部时,使用 ScrollListener 从 Firebase Realtime DB 中提取数据的问题
- vue.js - 如何使用自定义过滤器功能过滤 b 表行?
- gitlab - 找不到 gitlab“admin/runners”页面来注册共享跑步者
- java - 使用java从本地主机创建远程hdfs目录
- css - 更改为 Bootrap 4,我的导航栏现在看起来是蓝色的,并且没有一个下拉菜单与之前的位置对齐
- node.js - 出现错误:连接 ECONNREFUSED 127.0.0.1:3306
- c++ - 智能指针不能自动用作原始指针吗?
- flutter - 如何在 Dart 中为函数指定类型注释
- ubuntu - Electron dialog.showOpenDialog() 关闭 Ubuntu 18.10 上的应用程序