猜数字(基于MATLAB)

一、主要使用的函数

randperm(a,b)获取a到b的随机b个整数
input(prompt,'s')获取用户输入,用‘s’表示将用户的输入转化为char的形式,没有‘s'则是按默认的数值类型读取
str2double()将字符转变为数字类型
ismember(a,b)判断元素a是否在b内,如果在返回1
sprintf()字符串格式化函数,%d表示数字类型,%s表示字符类型

二、设计思路

1、题目

 2、思路

        题目要求生成四个随机数,调用具体的函数就可以实现,获取玩家输入可以使用input函数。对于计算,我觉得先计算B会比较方便,使用函数ismember可以实现判断一个元素在不在一个数据集中;对于A的计算,是在B的基础上的,如果位置正确,那么这个数字一定在数据集中,所以在上一个的if条件下,再次条件限制。各个计算值根据循环开始时的初始变量叠加就可以实现计数功能。

三、遇到的问题

1.字符串的遍历

刚开始我写的代码,在调用input时没有加上‘s’参数,得到的是MATLAB数值类型,不能进行遍历。经过查找资料,添加上参数后可以直接遍历。perfect!

2.字符串的拼接

我在实现字符串拼接时,沿用的是python的语法体系,字符串做加法运算,但在MATLAB中提示变量不存在,经过一番思考,最后使用[A B]的形式拼接成功。

3.数组的索引

使用小括号进行索引

四、代码展示

k = randperm(9,4);
pl=1;
while pl<=10 || a==4
    pl=pl+1;
s=input("输入:","s");
new_str = '';
b=0;
a=0;
n =0;
for o=s
    n=n+1;
    %p=''; 字符拼接会显示错误,对于此运算,数组的大小不兼容。
    u=str2double(o);%把字符转变为数字
    if ismember(u,k)==1
        p = sprintf('%sA',o);
        new_str = [new_str p];
        b=b+1;
        if u==k(n)
            a=a+1;
        end
    end
end
ll = sprintf('%dA%dB',a,b);
disp(ll)
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫小烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值