初识C++案例三只小猪猪称体重
三只小猪称体重是我学习C++遇到的第一个困扰案例 关键就在于初学不能很好的运用if的嵌套,经常搞的头昏 特别是在三只小猪同等体重的情况下
后来我在看了 岁月蹉跎的一杯酒 这个大佬发的三只小猪的文章后自己又想了想,觉得逻辑运算符是真的好用
刚开始创建三只小猪的变量以及体重输入保存都不是问题
#include <iostream> using namespace std; int main() { int a = 0; int b = 0; int c = 0; cout << "请分别输入三只小猪的体重" << endl; cin >> a; cin >> b; cin >> c; cout << "小猪a的体重为" << a << endl; cout << "小猪b的体重为" << b << endl; cout << "小猪c的体重为" << c << endl;
我在这个三只小猪同体重的情况开始就遇见了问题 重点就错误在 == 这个赋值上,刚开始我以为只要用 = 号就可以 之后就可以分情况讨论 a b值相等啊什么的,然后再用应该是多行if和嵌套的各种情况。这里好像可以用三目运算来做,我比较笨,刚学三目运算没怎么看,就用了笨方法
//三只小猪体重存在两两相等的情况 if (a == b || b == c || a == c) { if (a == b) { if (a > c) { cout << "小猪ab最重为" << a << endl; } else if (a < c) { cout << "小猪c最重为" << c << endl; } } else if (b == c) { if (b > a) { cout << "小猪bc最重为" << b << endl; } else { cout << "小猪a最重为" << a << endl; } } else if (a == c) { if (a > b) { cout << "小猪ac最重为" << a << endl; } else { cout << "小猪b最重为" << b << endl; } } if (a == b && b == c && a == c) { cout << "小猪abc同样重为" << a << endl; } }
这里还要注意最后三只小猪体重全部相等的情况;算是小猪体重两两相等的特殊情况可以放在最后输出
然后是第二个情况三只小猪体重都不相等的情况 我注释掉的部分是我用if套娃做的,后来发现那个逻辑运算符更简洁,而且括号还少。
//abc三只小猪体重均不相等 if (a != b && b != c && c != a) { //if (a > b) //{ // if (a > c) { // cout << "小猪a最重为" << a << endl; // } // else // { // cout << "小猪c最重为" << c << endl; // } //} //else //{ // if (b > c) // { // cout << "小猪b最重为" << b << endl; // } // else // { // cout << "小猪c最重为" << c << endl; // } //} if (a > b&&a > c) { cout << "小猪a最重为" << a << endl; } else if (b > a&&b > c) { cout << "小猪b最重为" << b << endl; } else cout << "小猪c最重为" << c << endl; } system("pause"); return 0; }
感谢大佬们的思路 还有一个需要提醒自己的地方一定要养成好习惯把括号给分的明明白白的。