matlab脚本编程习题2
- 输入一个四位整数,求出各位数字之和,如果该和能被3整除,输出“这个数可以被3整除”,否则输出“这个数不可以被3整除”。
num=input('input the four-digit integer:\n');
A=zeros(1,4);
for i=1:4
A(i)=floor(mod(num,10));
num=num/10;
end
sum=0;
for i=1:4
sum=sum+A(i);
end
fprintf('各位数之和为%d\n',sum);
if mod(sum,3)==0
fprintf('这个数可以被3整除');
else
fprintf('这个数不可以被3整除');
end
- 输入一个字符,如果是大写字母,输出其后继字符及其ASCII值,如果不是大写字母,原样输出。例如,输入字符B,输出“字母B的后继字符为C,对应的ASCII码值为67”,注意字母Z的后继字符为A。
判断的部分可以直接改成c>=‘a’ && c<‘z’ 就不用查ascii码表了
c=input('input the character:\n','s');
x=abs(c);
if x>=65 && x<90
x=x+1;
fprintf('字母%c的后继字符为%c,对应的ascii码值为:%d\n',c,x,x);
elseif x==90
x=65;
fprintf('字母%c的后继字符为%c,对应的ascii码值为:%d\n',c,x,x);
else
fprintf('输入字符%c',c);
end
- 输入一个小于10000的整数,求出是几位数并且逆序输出。例如,输入123,输出“该数为3位整数,其逆序数为321”。
用了比较笨的方法,有大佬会更简单的方法可以在评论区交流~
注意matlab数组初始化时,zeros函数生成的是一个矩阵
如zeros(4)生成的是4*4矩阵,要考虑维度问题
num=input('input a number < 10000:\n');
count=0;
A=zeros(1,4);
while true
A(count+1)=floor(mod(num,10));
num=num/10;
count=count+1;
if num<1
break;
end
end
fprintf('该数为%d位整数,其逆序数为',count);
for i=1:count
fprintf('%d',A(i));
end
- 在编辑窗口中:输入学生成绩,输出该成绩的等级。等级规定如下:[90,100]为A等,[80,90)为B等,[70,80)为C等,[60,70)为D等,[0,60)为E等。
问就是自己找规律摸出来的
grade=input('input the grade:\n');
c=65; %A
c=c+floor(abs(grade-99)/10);
if grade<60
c=69;
end
fprintf('%c',c);
- 商场购物,100件以下,不优惠,100199件95折,200399件90折,400799件85折,8001499件80折,1500件以上,75折。输入所购货物的单价、件数,求实际付款数目
switch语句会更好看一些
uprice=input('请输入货物单价:\n');
num=input('请输入件数:\n');
if num<100
zhekou=1;
elseif num>=100 && num<=199
zhekou=0.95;
elseif num>=200 && num<=399
zhekou=0.9;
elseif num>=400 && num<=799
zhekou=0.85;
elseif num>=800 && num<=1499
zhekou=0.8;
else
zhekou=0.75;
end
total=zhekou*uprice*num;
fprintf('实际付款%.4f元',total);