数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3427|回复: 2

用matlab 编程

[复制链接]
发表于 2015-6-13 18:24 | 显示全部楼层 |阅读模式
现有21根火柴,两人轮流取,每人每次可取走1- 4根,不可多取,也不能不取,谁取最后一根火柴则谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为“常胜将军” 
发表于 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 | 显示全部楼层
谢谢谢谢谢谢~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-5-14 05:27 , Processed in 0.086205 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表