matlab习题 —— 程序控制流程练习

2023-05-07 19:15:09 浏览数 (1)

一、题目

  • (1) 建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出变量为该日期在年度的日序数
  • (2) 已知 2022 年 1 月 1 日为星期六,建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出该日是星期几
  • (3) 定义 10 行 8 列的 Hilbert 矩阵(
a_{ij = frac{1}{i j-1}}

  • (4) 生成100000 以内的斐波那契数列各项,
a_{1}=1,a_{2}=2,a_{n}=a_{n-1} a_{n-2},n=3,4,5,...
  • (5) 求满足条件
n! gt 10^{15}

的最小整数

  • (6) 输出全部的五位五角星数(例如 54748,
5^5 4^5 7^5 4^5 8^5=54748

  • (7) 交互式输入三个实数,若以此三数为边长能构成三角形,求其面积
  • (8) 编程计算鸡兔同笼(三十五头,九十四足)
  • (9) 绘制分段函数
f(x)=left{ begin{aligned} &-x,qquad&-5text{textless}xtext{textless}0\\ &frac{x^2}{2},qquad&0 le{x}le{2}\\ &2sin(frac{pi}{x}),qquad&2text{textless}xtext{textless}5 end{aligned} right .
  • (10) 读取数据 sd.xlsx,对 1,2 列每行计算其和,和大于 6 在第 3 列相应行输入字母 A,否则输入字母 B,对 4,5 列每行计算其差,差大于 2 在第 6 列相应行输入字母 AB,否则输入字母 BA,并将操作以后的数据填回 sd.xlsx

二、解答

题一

① 建立函数,其中输入变量为按年月日排序的 8 位整数(如 20220530),输出变量为该日期在年度的日序数
代码语言:javascript复制
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),输出该日是星期几
代码语言:javascript复制
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 矩阵(
a_{ij = frac{1}{i j-1}}

代码语言:javascript复制
function m = Hilber()
for i=1:10
    for j=1:8
        a(i,j) = 1/(i j-1);
    end
end
m = a;
end

题四

① 生成100000 以内的斐波那契数列各项,
a_{1}=1,a_{2}=2,a_{n}=a_{n-1} a_{n-2},n=3,4,5,...
代码语言:javascript复制
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

题五

① 求满足条件
n! gt 10^{15}

的最小整数

代码语言:javascript复制
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,
5^5 4^5 7^5 4^5 8^5=54748

代码语言:javascript复制
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

题七

① 交互式输入三个实数,若以此三数为边长能构成三角形,求其面积
代码语言:javascript复制
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

题八

① 编程计算鸡兔同笼(三十五头,九十四足)
代码语言:javascript复制
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

题九

① 绘制分段函数
代码语言:javascript复制
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)

题十

① 读取数据 sd.xlsx,并将操作以后的数据填回 sd.xlsx
  • 程序1
代码语言:javascript复制
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
  • 程序二
代码语言:javascript复制
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

0 人点赞