用天梯赛打开暑假生活第五天

发布时间 2023-06-24 22:16:53作者: 寒心小呆

从坐牢到入门的程序设计(5)

开始时间2023-06-24 18:37:54

结束时间2023-06-24 22:04:38

前言:今天游玩的武汉野生动物王国,其实没网上说得那么难堪,挺不错的。

L1-020 帅到没朋友

一、题目编号及题目说明

二、程序功能测试及说明

  由所给输入给出没有朋友的人。

三、程序设计思路及结构说明

  定义了一个名为find的函数,该函数用于在数组a中查找数字num。函数使用二分查找算法来搜索数字。在main函数中,首先读取输入的整数n,表示接下来将读取n组数据。接下来的循环中,对于每组数据,首先读取整数m,表示接下来将读取m个数字。在内层循环中,读取数字num并调用函数find来在数组a中查找该数字。之后继续读取整数n,表示接下来将读取n个数字。最后的循环中,读取数字num,如果在数组a中找不到该数字,则将其标记为1,并将其输出。最后,如果没有找到任何数字,则输出"No one is handsome"。

四、程序源代码

#include<stdio.h>
 
void find(int* a,int num)
{
    int before=0,after=99999;
    while(before<=after)
    {
        int tmp=(before+after)/2;
        if(tmp>num)
            after=tmp-1;
        else if(tmp<num)
            before=tmp+1;
        else
        {
            a[tmp]=1;
            break;
        }
    }
}
 
int main()
{
    int i,j,m,n,num,a[100000]={0},zore=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&m);
        if(m==1)
        {
            scanf("%d",&num);
            continue;
        }
        for(j=0;j<m;j++)
        {
            scanf("%d",&num);
            find(a,num);
        }
    }
    scanf("%d",&n);
    int flag=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&num);
        if(a[num]==0)
        {
           a[num]=1;
            if(flag)
                printf(" ");
            else
                flag=1;
           printf("%05d",num);
        }
    }
    if(flag==0)
        printf("No one is handsome\n");
    else printf("\n");
    return 0;
}

 五、题目评分

 L1-021 重要的话说三遍

一、题目编号及题目说明

二、程序功能测试及说明

  无输入,输出相同的三句话。

三、程序设计思路及结构说明

  循环设定为三次,每次分别输出一句话。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    for(int i=0;i<3;i++)
    {
        printf("I'm gonna WIN!\n");
    }
    return 0;
}

 五、题目评分

 L1-022 奇偶分家

一、题目编号及题目说明

二、程序功能测试及说明

  首先给一个数,按照该个数输入一串数,分别输出奇数和偶数的个数。

三、程序设计思路及结构说明

  首先吸收一个数,以该数为循环次数做循环,在内存循环中吸收一个数,如果该数为偶数放入偶数数组中,如果该数为奇数放入奇数数组中。当循环结束按格式输出奇数和偶数的个数。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int os[1000],js[1000];
    int flag=0,nb=0,i;
    for(i=0;i<n;i++)
    {
        int a;
        cin>>a;
        if(a%2==0)
        {
            os[flag]=a;
            flag++;
        }
        if(a%2!=0)
        {
            js[nb]=a;
            nb++;
        }
    }
    printf("%d %d\n",nb,flag);
    return 0;
}

五、题目评分

L1-023 输出GPLT

一、题目编号及题目说明

二、程序功能测试及说明

  由给定字符串,统计gplt的出现次数,按照顺序输出,若出现该字符输出完毕跳过该字符。

三、程序设计思路及结构说明

  首先吸收字符串,以字符串长度设置循环次数统计gplt大写小写情况出现的个数,再设置一个while循环,单次循环内部gplt个数大于零输出并且个数减一,当总个数小于等于0结束循环。最后为达到目的输出一个换行。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    int i=0;
    cin>>s;
    int g=0,p=0,l=0,t=0;
    for(i=0;i<s.length();i++)
    {
        if(s[i]=='g'||s[i]=='G') g++;
        if(s[i]=='p'||s[i]=='P') p++;
        if(s[i]=='l'||s[i]=='L') l++;
        if(s[i]=='t'||s[i]=='T') t++;
    }    while(g+p+l+t>0){
        if(g>0){
            cout<<"G";
            g--;
        }
        if(p>0){
            cout<<"P";
            p--;
        }
        if(l>0){
            cout<<"L";
            l--;
        }
        if(t>0){
            cout<<"T";
            t--;
        }
 
    }
    printf("\n");
    return 0;
}

五、题目评分

 L1-024 后天

一、题目编号及题目说明

二、程序功能测试及说明

  给一个数字,输出其后天星期几。

三、程序设计思路及结构说明

  首先用n吸收这个数字,n=(n+2)%7,当n为0时说明正好为周日此时把n置为7.最后按照格式输出。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    n=(n+2)%7;
    if(n==0)
    {
        n=7;
    }
    printf("%d\n",n);
    return 0;
}

五、题目评分

 总结:后面不想写了....

每日一mo:今天就不emo了,很开心!!!