UVA 492 Pig-Latin

本文探讨了字符串处理中的一个具体问题——将输入的字符串转换为特定格式,重点在于如何正确地识别和处理字母与非字母字符,以实现单词的重新排列。作者分享了一段尝试解决该问题的代码,并详细记录了从初版到修改版的过程,但仍然遇到了多种运行时错误,包括超时、错误答案等。代码中包含了字符串操作、条件判断及字符分类的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:字符串换

分析:略

注意:不同类型 分开讨论。当把 非字母字符 当作单词分隔标志时,用另一个变量 作为单词在数组里的位置下标。

参考其他博主:
https://blog.youkuaiyun.com/kingsraywii/article/details/23848063

TLE 代码

#include"stdlib.h"
#include"stdio.h"
#include"string.h"
#include"math.h"
#include"stdlib.h"
#include"stdio.h"
#include"string.h"
#include"math.h"
int  yuanyin(char a);
int main()
{
    char a[1000005],temp[1005]={0},temp1[2]={0};
    int k=0,i=0;
    while(gets(a)!=NULL)
    {

        for(i=0; i<strlen(a); i++)
        {
            if((a[i]>='a'&&a[i]<='z') || (a[i]>='A'&&a[i]<='Z'))
            {
                temp[k++]=a[i];
            }
            else
            {
                if(temp[0]!=0 )

                {
                    if(yuanyin(temp[0]))
                    {
                        strcat(temp,"ay");
                        printf("%s",temp);  k=0;memset(temp,0,sizeof(temp));
                    }
                    else
                    {
                        temp1[0]=temp[0];
                        strcat(temp,temp1);
                        strcat(temp,"ay");
                        printf("%s",temp+1);  k=0;memset(temp,0,sizeof(temp));
                    }

                }
                printf("%c",a[i]);
            }
        }

        if(temp[0]!=0 )

                {
                    if(yuanyin(temp[0]))
                    {
                        strcat(temp,"ay");
                        printf("%s",temp);  k=0;memset(temp,0,sizeof(temp));
                    }
                    else
                    {
                        temp1[0]=temp[0];
                        strcat(temp,temp1);
                        strcat(temp,"ay");
                        printf("%s",temp+1);  k=0;memset(temp,0,sizeof(temp));
                    }
                }
        printf("\n");
    }
    return 0;
}
int yuanyin(char a)
{
    if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u'||a=='A'||a=='E'||a=='I'||a=='O'||a=='U')
        return 1;
    else
        return 0;
}

修改后

#include"stdlib.h"
#include"stdio.h"
#include"string.h"
int  yuanyin(char a);
int main()
{
    char a[1000005],temp[1000005]= {0};
    int k=0,i=0;
    while(gets(a)!=NULL)
    {

        for(i=0; i<strlen(a); i++)
        {
            if((a[i]>='a'&&a[i]<='z') || (a[i]>='A'&&a[i]<='Z'))
            {
                temp[k++]=a[i];
            }
            else
            {
                temp[k]=0;
                if(temp[0]!=0 )
                {
                    if(yuanyin(temp[0]))
                    {
                        printf("%say",temp);
                        k=0;
                    }
                    else
                    {
                        printf("%s%cay",temp+1,temp[0]);
                        k=0;

                    }
                }
                printf("%c",a[i]);
            }
        }
        temp[k]=0;
        if(temp[0]!=0 )

        {
            if(yuanyin(temp[0]))
            {
                printf("%say",temp);
                k=0;
            }
            else
            {
                printf("%s%cay",temp+1,temp[0]);
                k=0;
            }
        }
        printf("\n");
    }
    return 0;
}
int yuanyin(char a)
{
    if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u'||a=='A'||a=='E'||a=='I'||a=='O'||a=='U')
        return 1;
    else
        return 0;
}

修改后仍各种错误。TLE,WA,PE,CE都来了一遍,有谁知道问题在哪?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值