大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
案例:
我们要实现以下步骤:让猴子得到香蕉,但是直接跳够不到,必须站在箱子上才能取到
这个案例共有以下几种情况,猴子香蕉箱子在同一处,猴子香蕉在同一处,香蕉箱子在同一出,还有三者均不在同一处,但不论是哪种情况,我们需要清楚一点就算是香蕉和猴子在同一位置,猴子也无法直接获得香蕉,因此我们第一步必须需要先找到箱子,然后再去搬着箱子移动到香蕉处。
本案例中有以下四个谓词逻辑:
-
Run(monkey,box) 代表猴子去搬箱子
-
Getbox(monkey,box) 代表猴子得到了箱子
-
Run(monkey,banana) 代表了猴子搬着箱子去找香蕉
-
Getbanana(monkey,banana) 代表猴子拿到了香蕉
代码(c语言版):
#include <stdio.h>
int main(){
void gobox(int a,int b);
void getbox();
void findbanana(int a,int b);
void getbanana();
int monkey,banana,box;
printf("请依次输入猴子,香蕉,箱子 的位置\n");
printf("猴子的位置:");
scanf("%d",&monkey);
printf("香蕉的位置:");
scanf("%d",&banana);
printf("箱子的位置:");
scanf("%d",&box);
printf("-----------------------------------\n");
if(monkey!=box){
printf("猴子够不到香蕉,要先去搬箱子:");
gobox(monkey,box);
getbox();
if(box!=banana){
printf("猴子需要搬着箱子去找到香蕉:");
findbanana(banana,box);
getbanana();
}else{
printf("香蕉就在箱子的上面\n");
getbanana();
}
}else{
printf("箱子就在猴子旁边,猴子拿到了箱子");
getbox();
if(box!=banana){
printf("猴子需要搬着箱子去找到香蕉:");
findbanana(banana,box);
getbanana();
}else{
printf("香蕉就在箱子的上面\n");
getbanana();
}
}
}
void gobox(int a,int b){
int flag;
flag = b - a;
if(flag>0){
printf("Run(monkey,box)\n");
printf("猴子需要向右移动%d步拿到箱子\n",flag);
}else{
printf("Run(monkey,box)\n");
printf("猴子需要向左移动%d步拿到箱子\n",flag);
}
}
void findbanana(int a,int b){
int flag;
flag=b-a;
if(flag>0){
printf("Run(monkey,banana)\n");
printf("猴子需要向左搬着箱子移动%d步找到香蕉\n",flag);
}else{
printf("Run(monkey,banana)\n");
printf("猴子需要向右搬着箱子移动%d步找到香蕉\n",flag);
}
}
void getbox(){
printf("猴子拿到了箱子:");
printf("Getbox(monkey,box)\n");
}
void getbanana(){
printf("猴子踩在箱子上拿到了香蕉:");
printf("Getbanana(monkey,banana)\n");
}
效果演示:
三者不在同一位置:
箱子和香蕉在同一位置:
三者均在同一位置:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189229.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...