C/C++简易人工智能

#include<bits/stdc++.h>
#include<windows.h>
void SetTitle(LPCSTR lpTitle)
{
 SetConsoleTitle(lpTitle);
}
using namespace std;
int main()
{
 long long i,g=-1000000,t,n1=0,n2=0,j,m,bk;
 char ch='\0';
 bool l[255];
 string s,a="",b="",c="";
 system("color F0");
 system("mode con cols=34 lines=19");
 SetTitle("人工智能 AI 1.0");
 cout<<"\n  算式格式为\"~~~=?\"\n  支持+-*/%五种运算!\n  不支持混合运算!\n  退出请输入\"退出\"\n  请提问:\n\n\n";
 while(1)
 {
  char k[255]={'\0'};
  memset(l,1,sizeof(l));
  cout<<"  >> ";
  cin>>k;
  cout<<"  >> ";
  for(i=0;i<255;i++)
   if(int(k[i])<0)l[i]=0;//注:这里用来判断中英文 例如输入"n=1,你好"则l为11110000
                               //1个1为英文字符,2个0为中文
  s=k;
  if(l[0])t=1;
  else t=2;
  for(i=0;i<s.size();i+=t)
  {
   if(l[i])t=1;
   else t=2;
   if(k[i]=='\0')break;
   a="",b="",c="";
   if(l[i])
   {
    if(s[i]>='0'&&s[i]<='9')
    {
     n1=0,n2=0;
	 ch='\0';
	 bk=0;
     for(j=i;s[j]>='0'&&s[j]<='9';j++)
	  n1=n1*10+(s[j]-'0');
     if(s[j]!='+'&&s[j]!='-'&&s[j]!='*'&&s[j]!='/'&&s[j]!='%')goto out;
     ch=s[j];
     m=j+1;
     int z=j+1;
     j--;
     for(;s[m]>='0'&&s[m]<='9';m++)
	  n2=n2*10+(s[m]-'0');
     bk=m;
     m--;
     cout<<'=';
     if(ch=='+')cout<<n1+n2;
     if(ch=='-')cout<<n1-n2;
     if(ch=='*')cout<<n1*n2;
     if(ch=='/')cout<<n1/n2;
     if(ch=='%')cout<<n1%n2;
     break;
	}
	out:
    if(s[i]=='?'&&s[i+1]!='\0')cout<<',';
    else if(s[i]=='?'||s[i]=='!')cout<<"";
    else cout<<s[i];
    continue;
   }
   a.append(1,s[i]);
   a.append(1,s[i+1]);
   b.append(1,s[i+2]);
   b.append(1,s[i+3]);
   c.append(1,s[i+4]);
   c.append(1,s[i+5]);
   if(a=="你"&&b!="好"&&b!="个")cout<<"我";
   else if(a=="我")cout<<"你";
   else if(a=="是"&&b=="谁")
   {
    cout<<"是一个人工智能";
    i+=2;
   }
   else if(a=="呢"||a=="啊"||a=="呐"||a=="呀"||a=="哇"||a=="那"||a=="咯"||a=="吧"||a=="啦"||a=="了"||a=="儿"||a=="吗"||a=="")cout<<"";
   else if((a=="弄"||a=="干")&&(b=="嘛"||b=="啥"))
   {
    cout<<"肝代码";
    i+=2;
   }
    else if(a=="哪")cout<<"北京";
    else if(a=="何"&&b=="处")
   {
    cout<<"北京";
    i+=2; 
   }
   else if(a=="是"&&b=="几"||a=="是"&&b=="多"&&c=="少"||a=="等"&&b=="于"&&(c=="几"||c=="多"))
   {
    for(int j=1;j<=i;j++)cout<<"\b";
	cout<<a;
   }
   else if(a=="是"&&b=="什"&&c=="么")
   {
    for(int j=1;j<=i;j++)cout<<"\b";
    cout<<"我不知道"; 
    i+=4;
    if(l[i+2]==1)i++;
   } 
   else if(a=="是")
   {
    srand(g+=3);
	if(rand()%5>1)cout<<"是";
	else cout<<"不是"; 
   }
   else if(a=="能")
   {
    srand(g+=3);
	if(rand()%2)cout<<"能";
    else cout<<"不能"; 
   }
   else if(a=="几"||a=="多"&&b=="少")
   {
    srand(g+=3);
    cout<<rand()%100;
    if(b=="少")i+=2;
   }
   else if(a=="什"&&b=="么"&&c=="地")
   {
    cout<<"北京";
    i+=6;
   }
   else if(a=="什"&&b=="么"&&c=="时")
   {
    cout<<"中午";
    i+=6;
   }
   else if(a=="什"&&b=="么"&&c=="名")
   {
    cout<<"AI 1.0";
    i+=6;
   }
   else if(a=="死"&&b=="了")
   {
    cout<<"没死";
    i+=2; 
   }
   else if(a=="你"&&b=="个")
   {
    cout<<"你才";
    i+=2; 
   }
   else if(a=="知"&&b=="道")
   {
    cout<<"知道,";
    i+=2; 
   }
   else if(a=="")cout<<"";
   else if(a=="")cout<<"";
   else if(a=="")cout<<"";
   else if(a=="")cout<<"";
   else if(a=="")cout<<"";
   else if(a=="退"&&b=="出")return 0;
   else cout<<a;
  }
  cout<<"!\n\n";
 }
 return 0;
}

其实就是改变了一些汉字,再输出.

可以简单运算

如:

输入:  1+1=?

输出:   =2!

10*10是多少?

=100!

像1+1+1这样的就只输出1+1的结果

制作不易,点个赞也行啊!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值