matlab系列文章:👉 目录 👈

matlab习题 —— 程序控制流程练习_鸡兔同笼



文章目录

    matlab习题 —— 程序控制流程练习_斐波那契数列_02



    一、题目

    • (1) 建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出变量为该日期在年度的日序数
    • (2) 已知 2022 年 1 月 1 日为星期六,建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出该日是星期几
    • (3) 定义 10 行 8 列的 Hilbert 矩阵(matlab习题 —— 程序控制流程练习_斐波那契数列_03
    • (4) 生成100000 以内的斐波那契数列各项,matlab习题 —— 程序控制流程练习_斐波那契数列_04
    • (5) 求满足条件 matlab习题 —— 程序控制流程练习_鸡兔同笼_05
    • (6) 输出全部的五位五角星数(例如 54748,matlab习题 —— 程序控制流程练习_读取数据_06
    • (7) 交互式输入三个实数,若以此三数为边长能构成三角形,求其面积
    • (8) 编程计算鸡兔同笼(三十五头,九十四足)
    • (9) 绘制分段函数matlab习题 —— 程序控制流程练习_读取数据_07
    • (10) 读取数据 sd.xlsx,对 1,2 列每行计算其和,和大于 6 在第 3 列相应行输入字母 A,否则输入字母 B,对 4,5 列每行计算其差,差大于 2 在第 6 列相应行输入字母 AB,否则输入字母 BA,并将操作以后的数据填回 sd.xlsx

    二、解答

    题一

    ① 建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出变量为该日期在年度的日序数
    function out = getNum(date)
    
    date_str = num2str(date);
     
    d = [strcat(date_str(1:4),'-',date_str(5:6),'-',date_str(7:8))];
    
    d_new = [strcat(date_str(1:4),'-01-01')];
    
    out = daysact(d_new,d);
    
    end

    题二

    ① 已知 2022 年 1 月 1 日为星期六,建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出该日是星期几
    function out = getNum(date)
    
    date_str = num2str(date);
    
    d = [strcat(date_str(1:4),'-',date_str(5:6),'-',date_str(7:8))];
    
    out = weekday(d);
    
    end

    题三

    ① 定义 10 行 8 列的 Hilbert 矩阵(matlab习题 —— 程序控制流程练习_鸡兔同笼_08
    function m = Hilber()
    for i=1:10
        for j=1:8
            a(i,j) = 1/(i+j-1);
        end
    end
    m = a;
    end

    题四

    ① 生成100000 以内的斐波那契数列各项,matlab习题 —— 程序控制流程练习_鸡兔同笼_09
    function fib_arr = fib(k)
        num(1) = 1;
        num(2) = 1;
        for i=3:k
            num(i) = num(i-1) + num(i-2);
            if num(i) >= k
                break
            end
            fib_arr = num(1:end-1);
    end

    题五

    ① 求满足条件 matlab习题 —— 程序控制流程练习_鸡兔同笼_10
    function out = getNum()
    num(1) = 1;
    for i = 1:1000000
        if(num(i) > 10^15)
            break
        end
        num(i+1) = num(i)*i
    end
    
    out = num(end-1);
        
    end

    题六

    ① 输出全部的五位五角星数(例如 54748,matlab习题 —— 程序控制流程练习_斐波那契数列_11
    function out = getNum()
    count = 0;
    for i=10000:99999
        a = fix(i/10000);
        b = fix(rem(i,10000)/1000);
        c = fix(rem(i,1000)/100);
        d = fix(rem(i,100)/10);
        e = fix(rem(i,10)/1);
        if(a^5+b^5+c^5+d^5+e^5==i)
            count = count + 1;
            num(count) = i;
        end
    end
    out = num;
    end

    题七

    ① 交互式输入三个实数,若以此三数为边长能构成三角形,求其面积
    function out = getNum(a,b,c)
    if(a+b>c && a-b<c)
        p = (a+b+c)/2;
        s = (p*(p-a)*(p-b)*(p-c))^(1/2);
    end
    
    out = s;
    end

    题八

    ① 编程计算鸡兔同笼(三十五头,九十四足)
    function out = getNum()
    syms x y;
    enq1 = x + y == 35;
    enq2 = 2*x + 4*y == 94;
    A = solve(enq1,enq2,x,y);
    out = A;
    end

    题九

    ① 绘制分段函数
    x=-5:.1:5;
    f=zeros(size(x));
    for i=1:length(x)
        if (x(i)>-5) & (x(i)<0)
            f = -x
        end
        if (x(i)>=0) & (x(i)<=2)
            f = x.^2/2
        end
        if (x(i)>2) & (x(i)<5)
            f = 2*sin(pi./x)
        end
    end
    plot(f,x)

    matlab习题 —— 程序控制流程练习_鸡兔同笼_12

    题十

    ① 读取数据 sd.xlsx,并将操作以后的数据填回 sd.xlsx
    • 程序1
    data1=xlsread('F:\sd.xlsx',1,'A1:B191')
    for i = 1:length(data1)
    if data1(i,1)+data1(i,2)>6
    xlswrite('F:\sd.xlsx','A',1,strcat('C',num2str(i)))
    else
    xlswrite('F:\sd.xlsx','B',1,strcat('C',num2str(i)))
    end
    end
    • 程序二
    data2=xlsread('F:\sd.xlsx',1,'D1:E191')
    for i = 1:length(data2)
    if abs(data2(i,1)-data2(i,2))>2
    xlswrite('F:\sd.xlsx',{'AB'},1,strcat('F',num2str(i)))
    else
    xlswrite('F:\sd.xlsx',{'BA'},1,strcat('F',num2str(i)))
    end
    end

    matlab习题 —— 程序控制流程练习_斐波那契数列_13