C++ while循环嵌套if语句

Posted

技术标签:

【中文标题】C++ while循环嵌套if语句【英文标题】:C++ while loop nested if statment 【发布时间】:2014-03-18 01:29:54 【问题描述】:

您好,我在获取正确的最小值和正确的最大值时遇到了一些麻烦。我知道这与while循环有关。该程序的其余部分效果很好。我找到了正确的平均值、总和和整数个数

#include<iostream>
#include<fstream>

using namespace std;

int main()

    ifstream inputfile;

char choice;


int NumberOfIntegers = 0,
    SumOfIntegers = 0,
    Average = 0 ,
    LargestValue,
    SmallestValue,
    integer;

inputfile.open("random.txt");

if(!inputfile)

    cout << "the file could not be open" << endl;



inputfile >> integer;

//initialize smallest and largest
SmallestValue = integer;
LargestValue = integer;

while(inputfile)

    NumberOfIntegers++;
    SumOfIntegers = SumOfIntegers + integer;

    inputfile >> integer;
    if( integer >> LargestValue || integer << SmallestValue)
    

        if ( integer >> LargestValue)
            LargestValue = integer;

        else 
            SmallestValue = integer;
    


if(NumberOfIntegers > 0 )

    Average = SumOfIntegers / NumberOfIntegers;


do

    //Display Menu
    cout << "Make a selection from the list" << endl;
    cout << "A.   Get the largest Value" << endl;
    cout << "B.   Get the smallest Value" << endl;
    cout << "C.   Get the sum of the values" << endl;
    cout << "D.   Get the average of the values" << endl;
    cout << "E.   Get the number of values entered" << endl;
    cout << "F.   End this program" << endl << endl;

    cout << "Enter your choice -->  ";
    cin >> choice;

    cout << endl;

    switch (choice)
    
    case 'a':
    case 'A': cout << "The largest value is " << LargestValue << endl;
        break;

    case 'b':
    case 'B': cout << "The smallest value is " << SmallestValue << endl;
        break;

    case 'c':
    case 'C': cout << "The sum of the values entered is " << SumOfIntegers << endl;
        break;

    case 'd':
    case 'D': cout << "The average of the values entered is " << Average << endl;
        break;

    case 'e':
    case 'E': cout << "The number of values entered is " << NumberOfIntegers << endl;
        break;

    case 'f':
    case 'F': cout << "Program is now ending" << endl;

        return 1;
        break;

    default: 
        cout << choice << " is an invalid value. " << endl;

    

    cout << endl;

 while( choice != 'f' || choice != 'F');


return 0;

【问题讨论】:

【参考方案1】:
integer >> LargestValue

大概应该是integer &gt; LargestValue&gt;&gt; 是移位操作,不是比较。这同样适用于&lt;&lt;

【讨论】:

天哪,我不敢相信我错过了,我被输入文件迷住了,哈哈。谢谢【参考方案2】:

您还应该确保将 LargestValue 初始化为较小的值,将 SmallestValue 初始化为较大的值。否则您可能会错过数据中的异常值。

【讨论】:

【参考方案3】:

将您的“最大”和“最小”逻辑块分开——加入它们没有任何理由或正确性。

请注意,对于只有一项的列表,该值将是 smallestlargest。使这些条件互斥不仅更复杂,而且是不正确的。

为变量使用更好的名称。对于您当前正在阅读的内容,请使用“项目”或“价值”,所有内容都是整数,因此实际上毫无意义。我更喜欢变量的第一个小写字母.. 在 Java 中工作了一段时间:)

尽可能避免在变量具有有意义值之前/之外声明变量。

int value;

inputfile >> value;
if (value > largestValue) 
    largestValue = value;

if (value > smallestValue) 
    smallestValue = value;

另外,您需要检测 'first' 或将 smallest/largest 初始化为 +/- MaxInt 以确保第一个值将被占用。

【讨论】:

以上是关于C++ while循环嵌套if语句的主要内容,如果未能解决你的问题,请参考以下文章

if语句,for循环,while循环,do while循环,无限循环,循环嵌套

Python:在“while”循环中嵌套“If”语句?

Python基础之if判断,while循环,循环嵌套

带有嵌套 if 语句的 while 循环的 Big-O 运行时

C++入门基础知识[3]——循环嵌套循环无限循环

for语句与if语句嵌套的简单应用