matlab用break跳出循环

% 用while方式输入10个数 当前数x,平方和sum2,和sum,最后求平均数ave和标准差y
disp(['现在开始请输入n个数']);
sum2=0 ;sum=0;
x=0;n=0;
;
while x>=0,
n=n+1;
sum2=sum2+x^2;sum=sum+x;
disp(['现在开始请输入第',int2str(n),'个数']);
x=input('');
disp(['您刚才输入的数是',int2str(x)]);
if 1<0
break;

end
disp(['如果你看到这条信息,说明break之后的程序被执行']);

;
end
n=n-1;
;

ave=sum/n;y=((n*sum2-sum^2)/(n*(n-1)))^(1/2);
disp(['平均数是',num2str(ave),'标准差是',num2str(y),'总数是',int2str(n),'总和是',int2str(sum)]);

运行后发现,if语名的break能够结束while循环,但不是立即结束跳出循环,break之后的语句仍然被执行了一次.如果我想要立即跳出循环,应该如何编写?

首先你的代码还是有点让人费解的,比如“n=n-1”是干嘛用的?而且你所谓的break之后的语句是包括在大循环里面的,当然会被执行。
我改过来的代码如下、亲测可行。
% 用while方式输入n个数 当前数x,平方和sum2,和sum,最后求平均数ave和标准差y
clc;clear;
n=input('请输入数据的总数');
N=n;
disp(['接下来请按照提示依次输入',num2str(n),'个非负数。']);
sum2=0 ;sum=0;
count=1;
x=0;
X=[];%用来存放x
while n>0
n=n-1;
disp(['现在开始请输入第',int2str(count),'个非负数']);
count=count+1;
x=input('');
sum2=sum2+x^2;
sum=sum+x;
disp(['您刚才输入的数是',int2str(x)]);
X=[X;x];
if x<0
break;
flag=1;
%flag原来是0,如果break后面的语句有执行,那么
%下面的提示信息会显示。
end
if flag==1
disp(['楼主如果看到这条信息,说明break之后的程序被执行']);
end
close all;
end
close all;
ave=mean(X);
y=std(X);
disp(['平均数是',num2str(ave),'标准差是',num2str(y)])
disp(['总数是',int2str(N),'总和是',int2str(sum),'平方和是',num2str(sum2)]);
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-20
你在最内层循环里面用一个标志位,当满足if的时候,你做两件事:
flag=1
break;
这个时候就跳入第二层循环了,然后你在第二层加入判断语句
if(flag==1)
break;
就跳入到外层循环了
请采纳。追问

我一共就一层循环啊?如果你把if语句也算成一个循环,那你在外层再次使用if语句,不是又制造出一个内层循环么?

本回答被网友采纳