缺失的数c++skdkfd

题目
现在给你一个整数n,和n−1个互不相同的整数a1,a2,…,an−1,这些数字是1..n排列的一部分,但缺失了一个数。现在问你缺失的数是多少。

样例输入
5
3 5 4 1
样例输出
2
#include
using namespace std;
int main(){
    int a[1001],n,big=-1,small=0;
    cin>>n;
    for(int i=1;i<=n-1;i++){
        cin>>a[i];
        if(a[i]1]){
            a[i-1]=a[i];
            a[i]=a[i-1];
        }
    }
    for(int i=1;i<=n;i++){
        small=a[i];
        if(a[i]!=small){
            cout<<small;
            break;
        }
        small++;
    }
}

为什么我的输出不出来呢?

  • 你那从小到大排序有问题;

  • 另外两数交换,需要第三个数作为中间变量,再进行交换;

  • 先看效果图:

img

  • 代码参考如下:
#include<iostream>
using namespace std;

int main()
{
    int n,t,i,j;
    cin>>n;
    int a[n-1];
    for(i=0;i<n-1;i++)
    {
        cin>>a[i];
    }
    for(i = 0; i < n - 2; i++)
    {
        for(j = 0; j < n - i - 2; j++)
        {
            if (a[j] > a[j+1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t; 
            }
        }
    }

    int m = 0;
    for(i=1;i<=n;i++){        
        if(a[m++]!=i){
            cout<<i<<" ";
            m--;
        }
    }
    return 0;
} 

你好,请问是否是因为没有加 return 0;所导致的