matlab中while\break\continue\循环嵌套的练习

matlab中while\break\continue\循环嵌套的练习

https://www.icourse163.org/learn/CSU-1002475002?tid=1450231442#/learn/content?type=detail&id=1214375614&cid=1218036363

1、从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

msum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0
    msum=msum+x;
    n=n+1;
    x=input('Enter a number (end in 0):');
end
if n>0
    msum
    mean=msum/n
end

简化:

n=1;
mat=[];
while n~=0
    n=input('请输入一个数:');
    mat=[mat,n];
end
sumn=sum(mat)
aver=sumn/length(mat)

2、求[100,200]之间第一个能被21整除的整数。

for n=100:200
    if rem(n,21)~=0
        continue
    end
    n
    break
end

简化:

mat=100:200;
newmat=rem(mat,21);
k=find(~newmat);
mat(k(1))

注:find函数进阶:https://www.cnblogs.com/anzhiwu815/p/5907033.html

randi函数的使用:

r = randi(imax,n):生成n*n的矩阵

r = randi(imax,m,n):生成m*n的矩阵

r = randi(imax,[m,n]):同上

r = randi(imax,m,n,p,...):生成m*n*p*...的矩阵

r = randi(imax,[m,n,p,...])同上

r = randi(imax):1*1的矩阵

r = randi(imax,size(A)):和size(A)同维的矩阵

r = randi([imin,imax],...)

tic toc计时

3、用筛选法求某自然数范围内的全部素数。

原理:将1:m内的所有2的倍数(不含2),3的倍数(不含3)均令为0

m=input('m=');
p=1:m;
p(1)=0;
for i=2:sqrt(m)
    for j=2*i:i:m
        p(j)=0;
    end
end
n=find(p~=0);
p(n)

补充循环结构中的知识:

1、k=[k,n],k后面是逗号代表以行写入,如果是分号,k向量就是列向量了。

2、s=0;  
for i=1:10
    if rem(i,2)==0
        continue
    end
    if rem(i,7)==0
        break
    end
    s=s+i;
end
disp(s)

输出结果:s=9(1+3+5)

你可能感兴趣的:(matlab)