实验四 循环语句及选择语句的嵌套应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四循环语句及选择语句的嵌套应用1. 要求用户输入年、月、日,编写程序计算这一天是一年当中的第几天(包括当天),例如对于非闰年来说,1月1号是这一年的第1天,12月31号是这一年的第365天。规则如下:在非闰年中,它的取值范围是1-365;在闰年中,它的取值范围是1-366,编写程序,提示用户输入年、月、日,输出这一天是当年的第几天。
i='0';
while i=='0'
year=input('请输入年份: ');
while year<=0||year~=floor(year)
disp('输入年份有错!');
year=input('请重新输入年份: ');
end
if(rem(year,4)==0&&rem(year,100)~=0)||rem(year,400)==0
disp(' 这一年是闰年。');
else
disp(' 这一年是平年。');
end
month=input('请输入月份: ');
while month<0||month>13||month~=floor(month)
disp('输入月份有错!');
month=input('请输重新入月份: ');
end
day=input('请输入日期: ');
switch month
case {1,3,5,7,8,10,12}
while day<1||day>31||day~=floor(day)
disp('输入日期有错!');
day=input('请输重新入日期: ');
end
case {4,6,9,11}
while day<1||day>31||day~=floor(day)
disp('输入日期有错!');
day=input('请输重新入日期: ');
end
otherwise
if(rem(year,4)==0&&rem(year,100)~=0)||rem(year,400)==0 while day<1||day>29||day~=floor(day)
disp('输入日期有错!');
day=input('请输重新入日期: ');
end
else
while day<1||day>28||day~=floor(day)
disp('输入日期有错!');
day=input('请输重新入日期: ');
end
end
end
i=month;
while i~=1
switch i
case 1
day=day;
case{2 4 6 8 9 11}
day=day+31;
case 3
day=day+28;
case {5 7 10 12}
day=day+30;
end
i=i-1;
end
if(rem(year,4)==0&&rem(year,100)~=0)||rem(year,400)==0&&month>2 disp([num2str(year),'年的第',num2str(day+1),'天'])
else
disp([num2str(year),'年的第',num2str(day),'天'])
end
disp('----------');
i=input('Input 0 continues,the other end ','s');
disp('----------');
end
运行结果:
请输入年份: 2009
这一年是平年。
请输入月份: 3
请输入日期: 4
2009年的第63天
2. 所谓水仙花数是指一个n位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身(例如:1^3 + 5^3 + 3^3 = 153)。试编写程序寻找并输出100-9999之间的所有水仙花数。
方法一:
disp('100-9999的所有水仙花数:')
for n=100:9999
m=num2str(n);
sum=0;
for i=1:length(m)
j=str2num(m(i));
sum=sum+j^length(m); end
if sum==n
disp([num2str(m)]) end
end
方法二:
disp('100-9999的所有水仙花数:') for a=100:9999
i=1;
while floor(a/10^i)~=0
i=i+1;
end
v=mod(floor(a./10.^(0:i-1)),10);
if sum(v.^i)==a
disp([num2str(a)])
end
end
运行结果:
100-9999的所有水仙花数:
153
370
371
407
1634
8208
9474
3. 所谓回文数是指其各位数字左右对称的整数,例如121、232、87678等。试编写程序寻找11-999之间的数m,它满足m、m2、m3均为回文数,并把m、m2、m3输出。满足上述要求的数例如m=11、m2=121、m3=1331。
方法一:
disp('11-999之间m为回文数,并且m^2,m^3为回文数的数有:')
for m=11:999
s=num2str(m);
if s==s(length(s):-1:1)
t=num2str(m^2);
if t==t(length(t):-1:1)
r=num2str(m^3);
if r==r(length(r):-1:1)
disp(['m=',s,' m^2=',t,' m^3=',r])
end
end
end
end
方法二:
disp('11-999之间m为回文数,并且m^2,m^3为回文数的数有:')
for a=11:999
m=a;