C++一维数组相关题目(课堂作业记录)

题目一

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n, d;
    cin >> n >> d;int a[n]={0};
   for(int i=1;i<=d;i++)
   {
       int x;cin>>x;
       a[x]+=i;
   }
    for(int i=0;i<n;i++)
    {
        if(i!=n-1){cout<<a[i]<<" ";}
        else{cout<<a[i];}
    }
}

题目二

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n, m,sum=0;
    cin >> n >> m;int x;
    int a[n]={-1};
    for(int i=1;i<=m;i++)
    {
        cin>>x;
        a[x]=-2;
    }
    for(int  i=0;i<n;i++)
    {
        if(a[i]==-2)
        {sum++;}
    }
    if(sum==n){cout<<sum<<endl;}
    else{for(int i=0;i<n;i++)
    {
        if(a[i]!=-2)cout<<i<<" ";
    }
        }
}

题目三

 代码一:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> numbers(n);
    vector<int> counts(10001, 0);
    for (int i = 0; i < n; i++) {
        cin >> numbers[i];
        counts[numbers[i]]++;
    }
    for (int i = 10000; i >= 1; i--) {
        if (counts[i] > 0) {
            cout << i << "-" << counts[i] << endl;
        }
    }
    return 0;
}

代码二:

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    int a[10001]={0};
    for(int i=0;i<n;i++)
    {
        int x;cin>>x;
        a[x]++;
    }
    for(int i=10000;i>=0;i--)
    {
        if(a[i]>0)cout<<i<<"-"<<a[i]<<endl;;
    }
}

题目四

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int n, m;
    cin >> n >> m;
    int a[n];
    int b[m+1]={0};
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        if(a[i]>=1&&a[i]<=m){
        b[a[i]]++;
        }
    }
    for(int i=0;i<n;i++)
    {
        if(b[a[i]]<=1){cout<<"BeiJu"<<endl;}
            else{cout<<b[a[i]]-1<<endl;}
    }
}

这题我一开始将b[m+1]={0};写成的是b[n]={0};然后提示报错,原因是数组溢出,就拿这题的例子来说,n=4,按错的b的数组只开辟了4个空间,而当啊a[i]=5时,无法存入,这就造成了数组溢出。

题目五

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;
    int a[n];
    bool b[1001] = {false}; // 使用布尔数组来标记是否已经出现过某个整数

    for (int i = 0; i < n; i++) {
        cin >> a[i];
        b[a[i]] = true; // 标记已经出现的整数
    }

    // 输出去重并排序后的整数序列
    for (int i = 1; i <= 1000; i++) {
        if (b[i]) {
            cout << i << " ";
        }
    }

    return 0;
}

题目六

#include <iostream>
using namespace std;
int main() {
    int n,m,q,p,sum=0;
    cin>>n>>m;
    int a[n+1]={false};
    while(m--)
    { cin>>q>>p;
        for(int i=q;i<=p;i++ )
      {
           a[i]=true;       
      }
    }
    for(int x=0;x<=n;x++)
     {
        if(a[x]==false){sum++;}
     }
    cout<<sum<<endl;
}

此文仅为自己学习记录 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值