夕若晨风 发表于 2015-6-13 18:24

用matlab 编程

现有21根火柴,两人轮流取,每人每次可取走1- 4根,不可多取,也不能不取,谁取最后一根火柴则谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为“常胜将军” 

fungarwai 发表于 2015-6-14 20:27

clc;clear;
x=21;
fprintf('现有%d根火柴,每次取1-4根,你先取,计算机后取,取最后一根火柴就输\n',x);
while(1)
    d=0;
    while(d<1 || d>4)
      d=input('轮到你,取多少?   \n');
      if(d<1)
            fprintf('不能不取\n');
      elseif(d>4)
            fprintf('不能多取\n');
      elseif(d>x)
            fprintf('不能多取\n');d=0;
      end
    end
    x=x-d;
    fprintf('现在有%d根火柴\n',x);
    if(x==0)
      fprintf('你输了\n');break;
    end
    if(x>=5-d)
      fprintf('计算机取了%d个\n',5-d);
      x=x-(5-d);
    else
      fprintf('计算机取了1个\n');%不会执行
      x=x-1;
    end
    fprintf('现在有%d根火柴\n',x);
    if(x==0)
      fprintf('计算机输了\n');break;%不会执行
    end
end

夕若晨风 发表于 2015-6-15 14:54

谢谢谢谢谢谢~~
页: [1]
查看完整版本: 用matlab 编程