• EOJ 3256 拼音魔法


    模拟。

    有$a$先标$a$,其次是$o$和$e$,$o$和$e$在韵母中不会同时存在。最后是$u$和$i$,这两个字母在韵母中可能同时存在,标在后面的那个。输出那些字符的话直接输出就可以了。

    举几个例子:

    3

    shui2

    Case 1: shuí

    liu2

    Case 2: liú

    lve4

    Case 3: lüè

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    char s[10000];
    int T, len, cas = 1;
    int diao;
    
    void A()
    {
    	if(diao==1) printf("ā");
    	if(diao==2) printf("á");
    	if(diao==3) printf("ǎ");
    	if(diao==4) printf("à");
    }
    
    void E()
    {
    	if(diao==1) printf("ē");
    	if(diao==2) printf("é");
    	if(diao==3) printf("ě");
    	if(diao==4) printf("è");
    }
    
    void I()
    {
    	if(diao==1) printf("ī");
    	if(diao==2) printf("í");
    	if(diao==3) printf("ǐ");
    	if(diao==4) printf("ì");
    }
    
    void O()
    {
    	if(diao==1) printf("ō");
    	if(diao==2) printf("ó");
    	if(diao==3) printf("ǒ");
    	if(diao==4) printf("ò");
    }
    
    void U()
    {
    	if(diao==1) printf("ū");
    	if(diao==2) printf("ú");
    	if(diao==3) printf("ǔ");
    	if(diao==4) printf("ù");
    }
    
    void V()
    {
    	if(diao==1) printf("ǖ");
    	if(diao==2) printf("ǘ");
    	if(diao==3) printf("ǚ");
    	if(diao==4) printf("ǜ");
    }
    
    void work()
    {
    	int f=0;
    	for(int i=0;i<len-1;i++) if(s[i]=='a') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='a') A();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=0;i<len-1;i++) if(s[i]=='e') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='e') E();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=0;i<len-1;i++) if(s[i]=='o') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='o') O();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=0;i<len-1;i++) if(s[i]=='v') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='v') V();
    			else printf("%c",s[i]);
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=len-1;i>=0;i--) 
    	{
    		if(s[i]=='i') { f=1; break; }
    		if(s[i]=='u') { f=2; break; }
    	}
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='i') I();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	if(f==2)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='u') U();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    }
    
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%s",s);
    		len = strlen(s);
    
    		printf("Case %d: ",cas++);
    		if(s[len-1]>='0'&&s[len-1]<='9')
    		{
    			diao = s[len-1]-'0';
    			work();
    		}
    		else 
    		{
    			for(int i=0;i<len;i++)
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    			printf("
    ");
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    获取汉字和字母的长度
    JavaScript 获取对象中第一个属性
    JS函数的length属性
    原型模式 -- JavaScript语言的灵魂
    建造者模式
    阻止form元素内的input标签回车提交表单
    工厂方法模式(安全的工厂方法)
    微信自研生产级paxos类库PhxPaxos实现原理介绍
    图解分布式一致性协议Paxos
    Paxos协议超级详细解释+简单实例
  • 原文地址:https://www.cnblogs.com/zufezzt/p/6851625.html
Copyright © 2020-2023  润新知