数组排序

任务描述

本关任务:输入一个正整数 n,然后再输入 n 个整数,将它们从大到小排序后输出。

程序运行示例: 输入: 5 88 55 77 44 99 输出: 99 88 77 55 44

测试说明

测试用例 1:

输入: 5 88 55 77 44 99 输出: 99 88 77 55 44

参考代码

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

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

    for (int i=1;i<=n;i++) cout << a[i] << " \n"[i==n];


    return 0;
}

黑色星期五

任务描述

本关任务:黑色星期五是指某天既是 13 号又是星期五。13 号在星期五比在其他日子少吗?为了回答这个问题,编写一个程序,计算每个月的 13 号落在周一到周日的次数。给出 n 年的一个周期,要求计算从 1900 年 1 月 1 日至 1900+n-1 年 12 月 31 日中 13 号落在周一到周日的次数,n 为正整数且不大于 400。(已知 1900 年 1 月 1 日是星期一)。

程序运行示例: 输入:20 输出:34 33 35 35 34 36 33

测试说明

测试用例1: 输入:80 输出:137 138 137 138 137 138 135

参考代码

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

int main(void) {
    int y=1900, m=1, d=1;
    int yy, mm = 12, dd = 31;
    cin >> yy;
    yy = 1900 + yy - 1;

    int w[7] = {0,0,0,0,0,0,0};
    int M[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    for (int i=0;;i=(i+1)%7) {
        if (d == 13) w[i]++;
        if (y == yy && m == mm && d == dd) break;
        d++;
        if (d > M[m] + (m==2 && ((y%4==0&&y%100!=0)||(y%400==0))))
            m++, d=1;
        if (m > 12) y++, m=1;
    }
    for (int i=0;i<7;i++) cout << w[i] << " ";
    return 0;
}

删除重复数据(双数组版)

任务描述

本关任务:编写一个能删除数组中重复数据的程序。

编程要求

根据提示,在右侧编辑器补充代码,输入一组数据,“利用一个新的数组”保存其中唯一的元素出现,输出数组中元素个数(假设为n个)并按照原顺序输出所有数字的首次出现。

注意: (1)引入第二个数组; (2)输出数组中元素时,不再进行新的判断,只能用for(int k=0; k<n; k++) cout<<arr[k]形式; (3)如果需要读入所有输入的整数,可以采用while(cin>>x)这种形式。其表示循环读入数据,并将其放入变量x中。当cin读不到新的数据时候,循环终止。在本地运行时候,可以通过ctrl+z结束输入,此时cin>>x结果为false。

测试说明

平台会对你编写的代码进行测试:

测试输入:1 2 3 1 2 3; 预期输出: 1 2 3

参考代码

#include <iostream>
using namespace std;

int main(void) {
    int vis[1010] = {0}, arr[1010];
    int n = 0;
    for (int x; cin >> x;) if (vis[x]++==0) arr[n++] = x;
    for (int k=0; k<n; k++) cout << arr[k] << " ";
    return 0;
}