PTA L1-064 估值一亿的AI核心代码的测试点5是什么,写完代过不去。。。

L1-064 估值一亿的AI核心代码

分数 20    作者 陈越    单位 浙江大学

以上图片来自新浪微博。

本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:

  • 无论用户说什么,首先把对方说的话在一行中原样打印出来;
  • 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
  • 把原文中所有大写英文字母变成小写,除了 I
  • 把原文中所有独立的 can youcould you 对应地换成 I canI could—— 这里“独立”是指被空格或标点符号分隔开的单词;
  • 把原文中所有独立的 I 和 me 换成 you
  • 把原文中所有的问号 ? 换成惊叹号 !
  • 在一行中输出替换后的句子作为 AI 的回答。

输入格式:

输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。

输出格式:

按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。

输入样例:

6
Hello ?
 Good to chat   with you
can   you speak Chinese?
Really?
Could you show me 5
What Is this prime? I,don 't know

输出样例:

Hello ?
AI: hello!
 Good to chat   with you
AI: good to chat with you
can   you speak Chinese?
AI: I can speak chinese!
Really?
AI: really!
Could you show me 5
AI: I could show you 5
What Is this prime? I,don 't know
AI: what Is this prime! you,don't know

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

 以下是我的代码,第一次提交只有测试点5过不了,但是调试了好几次都找不出来测试点5是什么,有没有大佬救救我!感激不尽!

#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main()
{
    int n,kongge=0;
    char x;
    scanf("%d",&n);
    x=getchar();//吸收多余的换行符
    int i,j,k,count=0;
    char s1[1001],s2[1001];
    for(i=0;i<n;i++)
    {
        gets(s1);//输入
        puts(s1);//先按原话输出
        printf("AI: ");
        for(j=0;s1[j]!='\0';j++)
        {
            if(s1[j]==' ')
            s1[j]='*';
            else break;
		}//记字符串开头空格为*
		    for(j=0;s1[j]!='\0';j++)
        {
            if(s1[strlen(s1)-1-j]==' ')
            s1[strlen(s1)-1-j]='*';
            else break;
		}//记字符串末尾空格为*
		    for(j=0;s1[j]!='\0';j++)
        {
            if(s1[j]=='*') continue;
            if(s1[j]==' ') 
			{
				count=1;
				kongge=1;
			}
            if(kongge)
            {
            	while(s1[j]!='\0')           	
            	{
            	if(s1[j+1]==' ')
            	{
            	s1[j+1]='*';//记字符串中间的多余空格为*
				count++;
				}  
				else
				{
				    kongge=0;
				    break;
				}
				j++;          		
				}
		    	if(isalnum(s1[j+1])==0&&s1[j+1]!=' '&&s1[j+1]!='*'&&count)
				s1[j+1-count]='*';//把标点符号前剩下的一个的空格变为*
				count=0;
			}
			if(isupper(s1[j])&&s1[j]!='I')
			s1[j]+=32;//大写的字母改为小写
			if(s1[j]=='?')
			s1[j]='!';//问号改为感叹号
		}

		for(k=j=0;s1[j]!='\0';j++)
		{
				if(s1[j]!='*')
				s2[k++]=s1[j];//空格已经换成了*,即把去空格后的字符串s1赋值给s2
		}
		    s2[k]='\0';
/*******************************输出并完成规则4和5****************************/
		for(j=0;s2[j]!='\0';j++)
        {
	        if(s2[j]=='c'&&s2[j+1]=='o'&&s2[j+2]=='u'&&s2[j+3]=='l'&&s2[j+4]=='d')
        	if(s2[j+5]==' '&&s2[j+6]=='y'&&s2[j+7]=='o'&&s2[j+8]=='u')
        	{
        		printf("I could");
        		j+=8;
        		continue;
        	}//could you 改为 I could
        	if(isalnum(s2[j-1])==0&&s2[j]=='m'&&s2[j+1]=='e'&&isalnum(s2[j+2])==0)
        	{
        		printf("you");
        		j+=1;
        		continue;
			}//独立的 me 改为 you
			if(isalnum(s2[j-1])==0&&s2[j]=='I'&&isalnum(s2[j+1])==0)
        	{
        		printf("you");
        		continue;
			}//独立的I 改为 you
        	if(s2[j]=='c'&&s2[j+1]=='a'&&s2[j+2]=='n'&&s2[j+3]==' ')
        	if(s2[j+4]=='y'&&s2[j+5]=='o'&&s2[j+6]=='u')
        	{
        		printf("I can");
        		j+=6;
        		continue;
        	}//can you 改为 I can
        	putchar(s2[j]);//其他原样输出
        }
           	printf("\n");
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值