我是一名学生并且最近开始学习C ++。我正在为C ++中的青少年制作一个GPA计算器但是我遇到了错误。当我将小数乘以变量时,我每次都得到相同的答案。这只发生在小数上。精确整数工作正常。 如果我放置变量" cal"的值,我会得到正确答案。如果我放置85,则输出12作为输出但是当我输入低于85的值时,我每次都得到3.1。
你能指出我的错误吗?
这是我的开始源代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{double cal,calh,c1;
cout<< "How many marks you obtained in calculus? \n";
cin >>cal;
cout<<"Enter the credit hours of Calculus? \n";
cin>>calh;
if (cal>85 || cal==85){c1=4*calh;}
else if (cal>80 || cal==80 || cal<85){c1=3.7*calh;}
else if (cal>75 || cal==75 || cal<80){c1=3.3*calh;}
else if (cal>70 || cal==70 || cal<75){c1=3*calh;}
else if (cal>65 || cal==65 || cal<70){c1=2.7*calh;}
else if (cal>61 || cal==61 || cal<65){c1=2.3*calh;}
else if (cal>58 || cal==58 || cal<61){c1=2*calh;}
else if (cal>55 || cal==55 || cal<58){c1=1.7*calh;}
else if (cal>50 || cal==50 || cal<55){c1=1*calh;}
else if (cal<50 || cal==49){cout<<"Sorry but you are failed in calculus.";}
cout<<"your total gpa in calculus is "<< c1<<endl;
system("pause");
return 0;
}
答案 0 :(得分:1)
让我们看看你的前两个条件行:
if (cal>85 || cal==85){c1=4*calh;}
else if (cal>80 || cal==80 || cal<85){c1=3.7*calh;}
在第二个中,您正在为每个可能的值输入条件,因为您要求&#34;任何大于80的值,以及任何低于85&#34;的值。所以你总是有c1 = 3.7 * calh,除非cal高于85.这就是为什么你每次都得到相同的值。
我认为问题在于你误解了||的逻辑运营商。如果在if语句中有多个条件用||分隔,则表示只有一个条件需要为true才能输入条件。如果你想保持这个逻辑,删除&#34; ==&#34;和&#34;&gt;&#34;测试并用&#34;&gt; =&#34;替换它们一,并替换你的||运营商与&amp;&amp;。
现在让我们再看看你的代码。你在那里重复一些条件。如果cal小于85,你已经开始输入第一个了,所以你不需要再次验证它。然后,最后,您可以替换
else if (cal>80 || cal==80 || cal<85){c1=3.7*calh;}
使用:
else if(cal >=80) {c1=3.7*calh;}
在任何地方都应用这个技巧,你就完成了。
答案 1 :(得分:1)
想想你写的是什么
else if (cal>80 || cal==80 || cal<85){c1=3.7*calh;}
这将匹配所有内容(任何数字大于80 或小于85)
你想要这样的东西
#include <iostream>
#include <string>
using namespace std;
int main()
{
double cal, calh, c1;
cout << "How many marks you obtained in calculus? \n";
cin >> cal;
cout << "Enter the credit hours of Calculus? \n";
cin >> calh;
if (cal >= 85) { c1 = 4 * calh; }
else if (cal >= 80) { c1 = 3.7*calh; }
else if (cal >= 75) { c1 = 3.3*calh; }
else if (cal >= 70) { c1 = 3 * calh; }
else if (cal >= 65) { c1 = 2.7*calh; }
else if (cal >= 61) { c1 = 2.3*calh; }
else if (cal >= 58) { c1 = 2 * calh; }
else if (cal >= 55) { c1 = 1.7*calh; }
else if (cal >= 50) { c1 = 1 * calh; }
else { cout << "Sorry but you are failed in calculus."; c1 = 0; }
cout << "your total gpa in calculus is " << c1 << endl;
system("pause");
return 0;
}