博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L1-064 估值一亿的AI核心代码 (20 分)
阅读量:1908 次
发布时间:2019-04-26

本文共 2253 字,大约阅读时间需要 7 分钟。

在这里插入图片描述

在这里插入图片描述

以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了 I;把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;把原文中所有独立的 I 和 me 换成 you;把原文中所有的问号 ? 换成惊叹号 !;在一行中输出替换后的句子作为 AI 的回答。输入格式:输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。输出格式:按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。输入样例:6Hello ? Good to chat   with youcan   you speak Chinese?Really?Could you show me 5What Is this prime? I,don 't know输出样例:Hello ?AI: hello! Good to chat   with youAI: good to chat with youcan   you speak Chinese?AI: I can speak chinese!Really?AI: really!Could you show me 5AI: I could show you 5What Is this prime? I,don 't knowAI: what Is this prime! you,don't know
#include
#include
/*检查该字符是否属于标点或者空格,如果属于就输出true,如果不属于就输出false; */int checkedPost(char ch){
if(ch>='0'&&ch<='9') return 0; else if(ch=='I') return 0; else if(ch>='a'&&ch<='z') return 0; else return 1; } int Ichecked(char s[],int i){
//判断满足I字符前面为空格或者是第一个字符; i--; if(i>=0&&s[i]!=' ') return 0; i++; //判断该字符的后面也需要是空格或者标点符号; if(checkedPost(s[i+1])) return 1; else return 0;}int meChecked(char s[],int i){
//判断me字符串前面是否是空格; i--; if(i>=0&&s[i]!=' ') return 0; i++; //判断 if(s[i+1]=='e'&&checkedPost(s[i+2])) return 1; else return 0;}int cancould(char s[],int i){
/* 如果如果字符串前面第一个字符不是空格的话,说明该字符串不是独立的; */ i--; if(i>=0&&s[i]!=' ') return 0; i++; /* 判断是否是can you,并且需要保证后面是空格或者是标点符号分割的; 判断是否是could you,并且需要保证后面是空格或者是标点符号分割的; */ if(s[i+1]=='a'&&s[i+2]=='n'&&s[i+3]==' '&&s[i+4]=='y'&&s[i+5]=='o'&&s[i+6]=='u'&&checkedPost(s[i+7])) return 1; else if(s[i+1]=='o'&&s[i+2]=='u'&&s[i+3]=='l'&&s[i+4]=='d'&&s[i+5]==' '&&s[i+6]=='y'&&s[i+7]=='o'&&s[i+8]=='u'&&checkedPost(s[i+9])) return 2; else return 0; }void produceStr(char str[]){
char str2[1005]; int i=0,j=0,first=0,end=0,k=0; first=0; end=strlen(str)-1; while(str[first]==' ') first++; while(str[end]==' ') end--; for(i=first;i<=end;i++) {
if(str[i]>='A'&&str[i]<='Z'&&str[i]!='I') str2[k++]=str[i]+32; else if(str[i]==' ') {
while(str[i]==' ') i++; i--; str2[k++]=str[i]; } else str2[k++]=str[i]; } str2[k]='\0'; //测试;// printf("str2==%s\n",str2); for(i=0;i

转载地址:http://ohvcf.baihongyu.com/

你可能感兴趣的文章
Mysql 入门
查看>>
linux 查看文件夹权限
查看>>
ubuntu 快捷键
查看>>
linux 根目录下文件夹分析
查看>>
linux 查看分区和文件大小
查看>>
Not using PCAP_FRAMES 解释(snort中)
查看>>
技术转管理?这些“坑”你要绕道走
查看>>
领域驱动设计(DDD)前夜:面向对象思想
查看>>
Camera驱动调试小记
查看>>
对于中断函数返回值的分析
查看>>
四线触摸屏原理
查看>>
C/C++如何返回一个数组/指针
查看>>
腾讯AI语音识别API踩坑记录
查看>>
YbtOJ——递推算法【例题4】传球游戏
查看>>
YbtOJ——字符串处理【例题1】数字反转
查看>>
MatConvNet安装
查看>>
ROS安装与卸载
查看>>
安装openrave 0.9的各种依赖包
查看>>
trajopt代码使用
查看>>
kpm代码使用细节
查看>>