poj2328

来源:互联网 发布:linux 快速启动matlab 编辑:程序博客网 时间:2024/04/29 11:18

题目大意:

根据too high、too low、right on猜数字,判断Stan是否诚实

解题思路:

根据输入模拟这个过程就可以了

代码如下:

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){  int a,mark=0,flag1,flag2;  int max,min;  char ch[20];  while(1)  {    max=10;min=1;    flag1=flag2=0;    while(scanf("%d",&a)!=EOF)    {      if(a==0)      {        mark=1;        break;      }      getchar();      gets(ch);      if(!strcmp(ch,"too high"))      {        if(a<=max)        {          max=a;flag2=1;        }      }      if(!strcmp(ch,"too low"))      {        if(a>=min)        {          min=a;flag1=1;        }      }      if(!strcmp(ch,"right on"))      {        if(!flag1&&!flag2)        {          printf("Stan may be honest\n");          break;        }        else if(flag1&&!flag2)        {          if(a>min&&a<=max)          {            printf("Stan may be honest\n");            break;          }          else          {            printf("Stan is dishonest\n");            break;          }        }        else if(!flag1&&flag2)        {          if(a>=min&&a<max)          {            printf("Stan may be honest\n");            break;          }          else          {            printf("Stan is dishonest\n");            break;          }        }        else if(flag1&&flag2)        {          if(a>min&&a<max)          {            printf("Stan may be honest\n");            break;          }          else           {            printf("Stan is dishonest\n");            break;          }        }      }    }      if(mark)      break;  }  return 0;}
0 0