(C语言版)7-5 敲笨钟 (20 分)
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。
现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。
输入格式:
输入首先在第一行给出一个不超过 20 的正整数 N。随后 N 行,每行用汉语拼音给出一句古诗词,分上下两半句,用逗号 , 分隔,句号 . 结尾。相邻两字的拼音之间用一个空格分隔。题目保证每个字的拼音不超过 6 个字符,每行字符的总长度不超过 100,并且下半句诗至少有 3 个字。
输出格式:
对每一行诗句,判断其是否压“ong”韵。即上下两句末尾的字都是“ong”结尾。如果是压此韵的,就按题面方法糟改之后输出,输出格式同输入;否则输出 Skipped,即跳过此句。
就死算,一个一个比对,把那个空格符当成标记,敲笨钟正好有两个空格,计数到n-2的时候,break;直接打印敲笨钟就可。时间复杂度n方
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<math.h>
typedef struct gushi
{
char ci[110];
int douhao;
int juhao;
int kg;
} GuShi;
int main()
{
int n;
scanf("%d",&n);
getchar();
GuShi a[n];
int i;
for(i = 0; i<n; i++)
{
gets(a[i].ci);
a[i].juhao = strlen(a[i].ci)-1;
}
int j;
for(i = 0; i<n; i++)
{
j = 0;
a[i].kg = 0;
while(a[i].ci[j]!='\0')
{
if(a[i].ci[j]==',')
a[i].douhao = j;
if(a[i].ci[j]==' ')
a[i].kg ++;
j++;
}
}
int a1,b,c,x,y,z;
int count = 0;
for(i = 0; i<n; i++)
{
count = 0;
a1 = a[i].douhao - 1;
b = a[i].douhao - 2;
c = a[i].douhao - 3;
x = a[i].juhao - 1;
y = a[i].juhao - 2;
z = a[i].juhao - 3;
if(a[i].ci[a1]=='g'&&a[i].ci[b] == 'n'&&a[i].ci[c]=='o'&&a[i].ci[x]=='g'&&a[i].ci[y]=='n'&&a[i].ci[z]=='o')
for(j = 0; j<strlen(a[i].ci); j++)
{
if(count == a[i].kg-2)
{
printf("qiao ben zhong.\n");
break;
}
else
{
printf("%c",a[i].ci[j]);
if(a[i].ci[j]==' ')
count++;
}
}
else
printf("Skipped\n");
}
}