C++实验四

问题一

 

 

#include<iostream>
using namespace std;
int main()
{
    int x[50] = { 0 }, y[50] = { 0 };
    int k, i,j;
    cin >> k;
    for (i = 0;i < k;i++)
        cin >> x[i];
    float sum = 0,ave;
    for (i = 0;i < k;i++)
        sum += x[i];
    ave = sum / k;
    int num = 0,m=0;
    for (i = 0;i < k;i++)
    {
        if (x[i] > ave)
            num++;
    }
    cout << ave << ' ' << num << endl;
    for (i = 1, y[0] = x[0], m = 1;i != k;i++)
    {
        for (j = 0;j < i;j++)
        {
            if (x[j] == x[i])
            {
                break;
            }
        }
        if (j == i)//如果j==i,说明这个元素第一次出现
        {
            y[m] = x[i];
            m++;
        }
    }
    for (i = 0;i < m;i++)
        cout << y[i] << ' ';

    return 0;
}

 

问题二

 

 

#include<iostream>
using namespace std;
int main()
{
    int k; cin >> k;
    int a[13] = { 0 }, n = 12, i,j;
    for (i = 1; i < 13; i++)
        a[i] = i;
    for (i = 0,j=1; i <=k; j++)
    {
        if (j > 12)
            j = 1;
        if (a[j] == 0)
            continue;
        i++;
        if (i == k)
        {
            a[j] = 0; i = 0; n--;
        }
        if (n == 1)
            break;

    }
    for (i = 1; i <= 12; i++)
    {
        if (a[i])
            cout << a[i];
    }
    return 0;
}

第一个if,形成回环

第二个if,判断这个人是否被淘汰

没人被淘汰,报数+1

第三个if,判断是否到这个人报k,为真则这个人被淘汰,报数为0,人数-1

第四个if,只剩一个人就跳出循环

#include<iostream>
using namespace std;
int main()
{
    int a[12]={0};
    int i,k,m,death,*p;
    p=a;
    cin>>death;
    for(i=0;i<12;i++)
    {
        *(p+i)=i+1;
    }
    i=0;
    k=0;
    m=0;
    while(k<11)
    {
        if(*(p+i)!=0)
        m++;
        if(m==death)
        {
            *(p+i)=0;
            m=0;
            k++;
        }
        i++;
        if(i==12)
        i=0;
    }
    while(*p==0)
    p++;
    cout<<*p;
    return 0;
}

 

 

第三题

 

 

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int a[10], b[10];
    for (int i = 0; i < 10; i++)
        cin >> a[i];
    for (int i = 0; i < 10; i++)
        cin >> b[i];
    sort(a, a + 10);
    sort(b, b + 10);
    cout << a[9] << ' ' << a[0] << endl;
    cout << b[9] << ' ' << b[0] << endl;
    for (int i = 0; i < 10; i++)
        cout << a[i] << ' ';
    cout << endl;
    for (int i = 9; i >=0; i--)
        cout << b[i] << ' ';
    cout << endl;
    int c[20] = { 0 };
    for (int i = 0; i < 10; i++)
        c[i] = a[i];
    for (int i = 10; i < 20; i++)
        c[i] = b[i - 10];
    sort(c, c + 20);
    for (int i = 0; i < 20; i++)
        cout << c[i] << ' ';
    return 0;
}

sort(a,b,c)a:起始地址,b:结束地址,c:排序方法(不写默认从小到大)

 

问题四

 

 

#include<iostream>
using namespace std;
int main()
{
    char s[50];
    cin.getline(s, 50);
    int i = 0,num=0;
    for (i = 0;; i++)
    {
        if (s[i] != ' ' && s[i] != '.')
            cout << s[i];
        else
        {
            cout << endl;
            num++;
        }
        if (s[i] == '.')
            break;
    }
    cout << num << endl;
}

 

posted @ 2020-12-20 21:34  Dk只能爬  阅读(96)  评论(0编辑  收藏  举报