C++ 选择排序指针问题

C++ 选择排序指针问题,c++,sorting,C++,Sorting,我的选择排序有问题。它没有按升序对列表进行排序,事实上,它没有根据我的调试器执行任何操作。我注意到,当我在第42行调试它时,它跳过了条件语句,我不明白它为什么这样做。我认为问题出在if语句的第二个for循环中。条件语句为false,而它本应为true。如果你能指引我走向正确的方向,我将不胜感激。我是来学习的 #include <iostream> void sortAscendingOrder(int*, int ); int main() { int* array = nu

我的选择排序有问题。它没有按升序对列表进行排序,事实上,它没有根据我的调试器执行任何操作。我注意到,当我在第42行调试它时,它跳过了条件语句,我不明白它为什么这样做。我认为问题出在if语句的第二个for循环中。条件语句为false,而它本应为true。如果你能指引我走向正确的方向,我将不胜感激。我是来学习的

#include <iostream>
void sortAscendingOrder(int*, int );
int main()
{
    int* array = nullptr;
    int input;

    std::cout << "Enter the number of testscores you want to enter." <<std::endl;
    std::cin >> input;

    array = new int[input];

    for(int count =0; count < input; count++)
    {
        std::cout << "Enter the test score" << (count +1) <<":" <<std::endl;
        std::cin >> *(array+count);
    }

    sortAscendingOrder(array,input);

    for(int count =0; count < input;count++)
    {
        std::cout << "\n" << *(array+count);
        std::cout << std::endl;
    }




    return 0;
}
void sortAscendingOrder(int* input,int size)
{
    int startScan,minIndex,minValue;

    for(startScan =0; startScan < (size-1);startScan++)
    {
        minIndex = startScan;
        minValue = *(input+startScan);
        for(int index = startScan+1;index<size;index++)
        {
            if(*(input+startScan) < minValue) // Here this condition is false. 
            {
                minValue = *(input+index);
                minIndex = index;
            }
        }
        *(input+minIndex)=*(input+startScan);
        *(input+startScan)=minValue;
    }
}
#包括
无效排序顺序(int*,int);
int main()
{
int*array=nullptr;
int输入;

std::coutstartScan是查找最小值的起始位置

if(*(input+startScan) < minValue)
if(*(输入+开始扫描)
永远不会是真的,左手边和右手边总是相等的

看起来你想说

if(*(input + index) < minValue)
if(*(输入+索引)

调试器应该能够生成
*(输入+开始扫描)
的值,作为手表或将来调试会话的表达式。

哪一行是第42行?
if(*(输入+开始扫描)
,我不知道为什么这句话在应该为真的时候是假的。你在输入中得到了什么值?所以,我输入3作为我想要的测试分数。我输入的值是45100,40。根据我的调试器,输入值始终保持45,这是一个非常好的问题。下次记住,我们不需要看到你的答案整个程序—就是您遇到问题的位。与其从
cin
读取值,不如编写:
int-array[]={4510040};int input=3;
-我们阅读的代码更少,而且rishit不必询问值是什么。谢谢,这更有意义,我现在可以理解为什么条件语句总是错误的。我犯了一个愚蠢的错误,没有看到它。我对调试很陌生,所以我会记住这一点。再次感谢。