unity学习上次留的C#小问题
分别用
switch…case
和
if…else if…else
语句完成
:
将学生的考试成绩转换成不同的等级:
100
分为
A,90
分以上为
B
,
80
分以上但小于
90
分为
C
,依次类推,
F
表示不及格。
用
if…else if…else很简单,将范围表示出来直接判断就可
int a = 44;
if (a == 100) {
print ("A");
} else if (a >= 90 && a < 100) {
print ("B");
} else if (a >= 80 &&a< 90) {
print ("C");
} else if (a >= 70 &&a< 80) {
print ("D");
} else if (a >= 60&&a < 70) {
print ("E");
} else if (a < 60) {
print ("F");
} else {
print ("输入错误");
}
用switch...case怎么做,switch...case的表达式只能是字符,字符串,整型值,怎么实现60~69范围的循环呢,一个一个列出来,这样太繁琐了,
看一下每个范围的共同点,开头的数字相同,是不是只需要判断一个数字就可以判断出整个范围的成绩呢,要如何实现呢。这就需要一个小算法,整型除以整型得到的还是整型,这样用成绩a/10得到1~10的数,这样使用switch...case就简单多了
int a = 44;
switch (a/10) {
case 10:print ("A");
break;
case 9:print ("B");
break;
case 8:print ("C");
break;
case 7:print ("D");
break;
case 6:print ("E");
break;
case 5:print ("F");
break;
default :print ("F");
break;
}
今天做一个循环题
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
做这道题时,应先画个图,图画好后可以发现,第一次落地到第二次落地的距离是第一次弹起高度的两倍,后面的距离同样是前一次落地到后一次落地的距离是前一次弹起的高度的两倍,这样求和公式就出来了
int sum=100,h=sum/2;
sum=sum+h/2;
循环时从2开始循环就对了;
float sum= 100, h=sum/2;
for(int i=2;i<=10;i++){
sum=sum+2*h;
h=h/2;
}print (sum+" "+h);
最后再留个小问题
用π/4=1-1/3+1/5-1/7+…的公式求π的近似值,直到最后一项的
绝对值小于10-6为止。(绝对值:Mathf.Abs())
更多精彩请点击http://www.gopedu.com/