首页 > 其他分享 >L1-059 敲笨钟

L1-059 敲笨钟

时间:2024-08-11 19:24:24浏览次数:13  
标签:count 语句 Skipped 敲笨钟 输出 ong 059 L1 古诗词

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。

现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。

输入格式:

输入首先在第一行给出一个不超过 20 的正整数 N。随后 N 行,每行用汉语拼音给出一句古诗词,分上下两半句,用逗号 , 分隔,句号 . 结尾。相邻两字的拼音之间用一个空格分隔。题目保证每个字的拼音不超过 6 个字符,每行字符的总长度不超过 100,并且下半句诗至少有 3 个字。

输出格式:

对每一行诗句,判断其是否压“ong”韵。即上下两句末尾的字都是“ong”结尾。如果是压此韵的,就按题面方法糟改之后输出,输出格式同输入;否则输出 Skipped,即跳过此句。

输入样例:

5
xun zhang zhai ju lao diao chong, xiao yue dang lian gua yu gong.
tian sheng wo cai bi you yong, qian jin san jin huan fu lai.
xue zhui rou zhi leng wei rong, an xiao chen jing shu wei long.
zuo ye xing chen zuo ye feng, hua lou xi pan gui tang dong.
ren xian gui hua luo, ye jing chun shan kong.

输出样例:

xun zhang zhai ju lao diao chong, xiao yue dang lian qiao ben zhong.
Skipped
xue zhui rou zhi leng wei rong, an xiao chen jing qiao ben zhong.
Skipped
Skipped

C语言:

首先设置for循环,循环读入每一条诗句

遍历该条语句,寻找“,”之前的“ong”标记为first=1,寻找“.”之前的“ong”标记为second=1

使用if判断语句,如果不符合条件直接输出Skipped,如果上述两个标记均为1则从该语句逆向遍历寻找三个空格,使用count计数

用if语句判断count=3时跳出(即替换倒数三个拼音字),用t累计寻找三个空格一共遍历了几次,t的值也是需要替换的字母数量

最后输出长度为strlen(a)-t的语句,最后再加上qiao ben zhong.即可完成

注:每一次for循环读入语句之前都要将first、second、t、count重新定义为0,否则会影响下一条语句的计数

#include <stdio.h>
#include <string.h>
int main()
{
    int n,i,j,k,t=0,count=0,first=0,second=0,len;
    scanf("%d",&n);
    getchar();
    char a[110];
    for(i=0;i<n;i++)
    {
        first=0,second=0,count=0,t=0;
        gets(a);
        len=strlen(a);
        for(j=0;j<len;j++)
        {
            if(a[j]==',')
            {
                if(a[j-3]=='o'&&a[j-2]=='n'&&a[j-1]=='g')
                {
                    first=1;
                }
            }
                if(a[j]=='.')
            {
                if(a[j-3]=='o'&&a[j-2]=='n'&&a[j-1]=='g')
                {
                    second=1;
                }
            }
        }
        if(first==1 && second==1)
        {
            for(k=len-1;k>=0;k--)
            {
                if(a[k]==' ')
                {
                    count++;
                }
                if(count==3)
                {
                    break;
                }
                t++;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
            }
            for(k=0;k<strlen(a)-t;k++)
            {
                printf("%c",a[k]);
            }
            printf("qiao ben zhong.\n");
        }
        else
        {
            printf("Skipped\n");
        }
    }
    return 0;
}

标签:count,语句,Skipped,敲笨钟,输出,ong,059,L1,古诗词
From: https://blog.csdn.net/m0_55661792/article/details/141109733

相关文章

  • L1-058 6翻了
    “666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦——目前的最高境界是数字“27”,因为这是3个“9”!本题就请你编写程序,将那些过时的、只会用一连......
  • PostgreSQL15.6源码编译安装
    1.postgres数据库源码下载地址,自己选择对应版本,我这里是15.6https://www.postgresql.org/ftp/source/2.编译cd/data/make/postgresql-15.6./configure--prefix=/pgdata/postgres15make-j$(nproc)#加快编译速度,自动获取对应cpu核心数makeinstall3.创建postgres用户......
  • JavaL1-07_综合练习
    练习一:需求:    机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。    按照如下规则计算机票的价格:旺季(5~10月)头等舱9折,经济舱8.5折,淡季(11月~来年4月)头等舱7折,经济舱6.5折。代码示例:packagecom.itheima.test;importj......
  • C++竞赛初阶L1-10-第四单元-if练习(第24课)100015: 判断能否被 3,5,7 整除
    题目内容给定一个整数 x,判断它能否被 3,5,7 整除,并输出以下信息:1、能同时被 3,5,7 整除(直接输出 357,每个数中间一个空格);2、只能被其中两个数整除(按从小到大的顺序输出两个数,例如:35 或者 37 或者 57,中间用空格分隔);3、只能被其中一个数整除(输出这个除数);4、不能......
  • SqlServer 主从复制错误分析--20598
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、在分发服务器执行如下脚本select*fromMSsubscriber_infoselect*fromMSpublications 2、选择分发数据库-distribution,执行如下脚本 sp_helpsubscriptionerrors'IZQY9C2TQSKGS9ZTEST','DBTEST','DbPiblish'......
  • L1-048 矩阵A乘以B 分数 15
    //10'42"#include<iostream>usingnamespacestd;constintN=110;intarr[N][N];intbrr[N][N];intcrr[N][N];intmain(){intx1,y1;cin>>x1>>y1;for(inti=1;i<=x1;++i)for(intj=1;j......
  • AGC059B 题解
    对于一种构造,考虑怎么表示。可以把相邻不同颜色建图连边。注意到答案不可能小于\(n-1\),否则图不联通,显然不可能。考虑什么情况下是\(n-1\)。图是一棵树。考虑怎么构造出一棵树。因为一种颜色出现次数大于等于这个点的度数,可以考虑可以确定叶子。把剩余度数最小的往最大的......
  • BZOJ2839/LG10596 集合计数 题解(二项式反演+扩展欧拉定理)
    题目大意:一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得它们的交集的元素个数为\(K\),求取法的方案数,答案模\(10^9+7\)。为表述方便,不妨设这\(i\)个元素分别为\(1\simn\)。前置知识:二项式反演。考虑设\(g(......
  • C++竞赛初阶L1-05-第四单元-判断语句(第19课)100003: 最大数输出
    题目内容输入三个整数,输出最大的数。输入格式输入为一行,包含三个整数,数与数之间以一个空格分开。输出格式输出一行,包含一个整数,即最大的整数。样例1输入102056样例1输出56程序代码输出:#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta,b,c......
  • L1-030 一帮一 分数 15
    //11'52"#include<iostream>#include<vector>usingnamespacestd;intmain(){intn;cin>>n;vector<pair<int,string>>qian;vector<pair<int,string>>hou;for(inti=1;i<=......