ZZNU17级新生周赛第七场

A :破解简单密码
考察字母大小写转换,以及条件语句的使用。
具体看代码。
    #include <stdio.h>  
    #include <string.h>  
    int main()  
    {  
        char str[110];  
        int i;  
        while(scanf("%s",str)!=EOF)  
        {  
            for(i=0;i<strlen(str);i++)  
            {  
                if(str[i]>='A'&&str[i]<='Z')///判断是否为大写字母  
                {  
                    str[i]=(str[i]-'A'+1)%26+'a';///将大写转化为小写同时后移一位  
                }  
                else if(str[i]>='a'&&str[i]<='z')  
                {  
                    if(str[i]<='c')  
                        str[i]='2';  
                    else if(str[i]<='f')  
                        str[i]='3';  
                    else if(str[i]<='i')  
                        str[i]='4';  
                    else if(str[i]<='l')  
                        str[i]='5';  
                    else if(str[i]<='o')  
                        str[i]='6';  
                    else if(str[i]<='s')  
                        str[i]='7';  
                    else if(str[i]<='v')  
                        str[i]='8';  
                    else if(str[i]<='z')  
                        str[i]='9';  
                }  
            }  
      
            printf("%s\n",str);  
        }  
        return 0;  
    }  



B 剪花布条
采用双重for循环暴力查找子串
    #include <stdio.h>  
    #include <string.h>  
    int main()  
    {  
        int sum,flag,i,j,k;  
        char str[1010],a[1010];  
        while(scanf("%s",str))  
        {  
            if(str[0]=='#')  
                break;  
            scanf("%s",a);  
            sum=0;  
            int len1=strlen(str);  
            int len2=strlen(a);  
            for(i=0;i<=len1-len2;i++)  
            {  
                if(a[0]==str[i])  
                {  
                    flag=1;  
                    for(j=0,k=i;j<len2;k++,j++)  
                    {  
                        if(str[k]!=a[j])///如果不匹配  
                        {  
                            flag=0;///标记匹配失败  
                            break;///跳出  
                        }  
                    }  
                    if(flag)///如果匹配成功  
                    {  
                        sum++;///记录子串数加一  
                        i=k-1;  
                    }  
                }  
            }  
            printf("%d\n",sum);  
        }  
        return 0;  
    }  


C :计算时间
详见代码

    #include<stdio.h>  
    int main()  
    {  
        int t,n;  
        scanf("%d",&t);  
        while(t--)  
        {  
            scanf("%d",&n);  
            printf("%02d:%02d:%02d\n",n/3600,n%3600/60,n%3600%60);  
        }  
        return 0;  
    }  

D :快来抢学姐的棒棒糖了
开两个数组
分别统计学姐每种口味糖果的数量以及同学们对每种口味糖果的需求量
将两个数组的对应口味进行比较
如果存在一种口味糖果的需求量不能被满足就说明有人会吃不到自己喜欢的口味。

    #include <stdio.h>  
    #include <string.h>  
      
    int main()  
    {  
        int flag,T,n,m,i,x,a[1010],b[1010];  
        scanf("%d",&T);  
        while(T--)  
        {  
            scanf("%d%d",&m,&n);  
            memset(a,0,sizeof(a));///把每种口味糖果的数量初始化为0  
            memset(b,0,sizeof(b));///把对每种口味糖果需求数初始化为0  
            for(i=0;i<n;i++)  
            {  
                scanf("%d",&x);///读取学姐买糖的口味更新不同口味糖果的数量  
                a[x]++;  
            }  
            for(i=0;i<n;i++)  
            {  
                scanf("%d",&x);///更新对不同口味糖果的需求量  
                b[x]++;  
            }  
            flag=1;  
            for(i=1;i<=m;i++)  
            {  
                if(a[i]<b[i])///如果存在一种口味糖果需求量不能被满足则标记  
                {  
                    flag=0;  
                    break;  
                }  
            }  
            if(flag)  
                printf("YES\n");  
            else  
                printf("NO\n");  
        }  
        return 0;  
    }  


E :抽奖活动
if语句判断即可

    #include <stdio.h>  
    #include <string.h>  
      
    int main()  
    {  
        int a[10],i,x;  
        memset(a,0,sizeof(a));  
        for(i=0;i<6;i++)  
        {  
            scanf("%d",&x);  
            a[x]=1;  
        }  
        if(a[2]+a[0]+a[1]+a[6]==4)  
        {  
            printf("First prize\n");  
        }  
        else if(a[1]+a[6]==2)  
        {  
            printf("Second prize\n");  
        }  
        else if(a[6]==1)  
        {  
            printf("Third prize\n");  
        }  
        else  
        {  
            printf("Thank you\n");  
        }  
        return 0;  
    }  



F : 看月亮爬上来
首先如果第n天月亮的高度为0
可以肯定第n+1天的高度为1 输出UP
如果第n天月亮的高度为15
可以肯定第n+1天的高度为1 输出DOWN
如果第n天月亮的高度不为0也不为15
那么有以下判断:
如果n多于1天。
比较最后一天和倒数第二天月亮的高度可得出是UP还是DOWN
如果观察天数只有1天
没办法得出是UP还是DOWN
#include <stdio.h>  
  
int main()  
{  
    int i,n,a,b,ans;  
    scanf("%d",&n);  
    if(n==1)  
    {  
        scanf("%d",&a);  
        if(a==0)  
            ans=1;  
        else if(a==15)  
            ans=-1;  
        else  
            ans=0;  
    }  
    else  
    {  
        for(i=0;i<n-2;i++)  
        {  
            scanf("%d",&a);  
        }  
        scanf("%d%d",&a,&b);  
        if(b==0)  
            ans=1;  
        else if(b==15)  
            ans=-1;  
        else  
        {  
            if(a>b)  
                ans=-1;  
            else  
                ans=1;  
        }  
    }  
    if(ans==1)  
        printf("UP\n");  
    else if(ans==-1)  
        printf("DOWN\n");  
    else  
        printf("-1\n");  
    return 0;  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值