Part5: 案例类
1、
《愤怒的小鸟》给予初速度以后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法。
Vector3 v 代表初速度 v'代表现在的速度, 假设小鸟是沿的 z 轴也就是 transform.forward方向运动的质量为 1,那么 v'=v-new Vector3(0,g
t,f
t),transform.Translate(v')做的就是抛物线运动(g 为重力加速度不要用现实中的需要自己调试,f 为阻力也要自己调试设置,t 为时间)
2、
观察数字:54321,43215,32154,(),15432,第四个数字是多少?
21543
3、
小赵的店里来了一位顾客,挑了20元的货,顾客拿出50元,小赵没有零钱找不开,就到隔壁小韩的店里把这50元换成零钱,回来给顾客找了30元零钱,过了一会儿,小韩来找小赵,说刚才的是假钱,小赵马上给小韩换成了一张真钱,问:在这一过程中小赵赔了多少钱?
80元
4、
观察3、3、8、8这一组数字,不改变数字顺序,加入运算符号和括号,将这些数字组成一个算式,使结果等于27。
(3+3/8)*8=27
5、
图形共有2000个,按照下面的规律排列: △□□□△□□□△□□□……第1995个图形是什么?
1995 % 4 = 3 所以是方块
6、
用三根火柴要摆成一个最小的数(不许把火柴折断或者弯曲),这个数是什么?
-11
7、
说一个岛上有100个人,其中5个红眼睛,95个蓝眼睛。这个岛上有三个奇怪的宗教规则。
他们不能照镜子,不能看自己眼睛的颜色。
他们不能互相交流眼睛颜色的问题,也不能告诉别人对方的眼睛是什么颜色。
一旦有人知道了自己眼睛的颜色,他就必须在当天夜里自杀。
注:虽然题设了5个红眼睛,但岛民是不知道具体数字的。
岛民一直过着宁静的生活,相安无事。某天,有个旅行者到了这个岛上,由于不知道这里的规矩,所以一起狂欢的时候,不留神就说了一句:你们这里有红眼睛的人。
最后的问题是:
(1) 假设这个岛上的人够聪明,每个人都可以做出缜密的逻辑推理。请问这个岛上将会发生什么?
(2) 为什么旅行者看似无意义的一句话改变了岛上的格局?
" 因为自从那个人说了岛上有红眼人后他们开始思考自己眼睛的颜色,假如有一个红眼人,那么他看到99个蓝眼人,他第一天会自杀,如果有两个红眼人,他看到98蓝1红,如果他发现那个红眼人第一天没自杀那么他将意识到他也是红眼人,故第二天两个红眼人都将自杀,同理可推知,第五天五个红眼人将自杀,五个红眼人自杀之后,通过推理,剩下的都是蓝眼人了,所以第六天,剩下的蓝眼人都自杀了。
8、
有4位好友,其中一个人干了一件好事,不留名,记者来查此事,问4位,他们的回答如下:
A:不是我 B:是C C:是D D:他胡说
已知3个人说真话,一个人说假话,现在根据以上信息找出做了好事的人(并编程实现)
a.假设A讲假话,其馀三人讲真话,则B和C出现矛盾,所以假设不成立,A讲真话。
b.假设B讲假话,其馀三人讲真话,则C和D的,说法出现矛盾,所以假设不成立,B讲真话。
c.假设C讲假话,其馀三人讲真话,则A、B、D的证供都成立,所以假设成立,C讲假话。
d.假设D讲假话,其馀三人讲真话,则B和C出现矛盾,所以假设不成立,D讲真话。
推出,C是做好事的人。
提示:
第一步:被测者从1—4
第二步:将被测者代入表达式
第三步:判断3个表达式为真吗?是的则打印结果程序结束。不是,判断是否全测完,不是转第一步,是打印未找到,程序结束。完成下面的程序。
#
include
<
stdio
.
h
>
main
(
)
{
int
k
=
0
,
sum
=
0
,
g
=
0
;
char
man
=
' '
;
for
(
k
=
1
;
k
<=
4
&&
g
==
10
;
k
++
)
{
man
=
64
+
k
;
sum
=
(
man
!=
'A'
)
+
(
man
==
'C'
)
+
(
men
==
'D'
)
+
(
men
!=
'D'
)
;
if
(
sum
==
3
)
{
clrscr
(
)
;
printf
(
"\nman=%c\n"
,
64
+
k
)
;
g
=
1
;
}
}
if
(
g
!=
1
)
printf
(
"can't found! "
)
;
getch
(
)
;
}
9、
你拥有A块钱,一瓶水B块钱,每瓶水可以得到一个瓶盖,每C个瓶盖可以换一瓶水请写出函数求解上面题目,上面题目ABC为参数
public
static
int
Buy
(
int
a
,
int
b
,
int
c
)
{
return
a
/
b
+
ForCap
(
c
,
a
/
b
)
;
}
public
static
int
ForCap
(
int
c
,
int
d
)
{
if
(
d
return
0
;
}
else
{
return
d
/
c
+
ForCap
(
c
,
d
/
c
+
d
%
c
)
;
}
}
10、
有一排开关,第一个人把所有的开关打开,第二个人按2的倍数的开关,第三个人按3的倍数的开关,以此类推,现在又n个开关,k个人,写函数求最后等两者的开关,输入参数n和k
static
void
Main
(
string
[
]
args
)
{
int
n
=
int
.
Parse
(
Console
.
ReadLine
(
)
)
;
int
k
=
int
.
Parse
(
Console
.
ReadLine
(
)
)
;
Function
(
100
,
100
)
;
}
static
void
Function
(
int
n
,
int
k
)
{
int
i
,
j
=
0
;
bool
[
]
a
=
new
bool
[
1000
]
;
//初始false:关灯,true:开灯
for
(
i
=
1
;
i
<=
k
;
i
++
)
//k个人
for
(
j
=
1
;
j
<=
n
;
j
++
)
//n个灯
if
(
j
%
i
==
0
)
a
[
j
]
=
!
a
[
j
]
;
//取反,false变true,原来开变关,关变开
for
(
i
=
1
;
i
<=
n
;
i
++
)
//最后输出a[i]的值就可以了
if
(
a
[
i
]
)
//灯亮着
Console
.
WriteLine
(
i
)
;
}
11、
数制转换,将任意整数转换成8进制形式
static
void
Main
(
string
[
]
args
)
{
int
n
;
n
=
int
.
Parse
(
Console
.
ReadLine
(
)
)
;
Console
.
WriteLine
(
"输入的10进制为:{0}"
,
n
)
;
Console
.
Write
(
"转换为8进制数为: "
)
;
d2o
(
n
)
;
}
static
void
d2o
(
int
n
)
{
if
(
n
>
7
)
{
d2o
(
n
/
8
)
;
}
Console
.
Write
(
n
%
8
)
;
}
12、
找出200以内的素数。
static
void
Main
(
string
[
]
args
)
{
int
count
=
0
;
for
(
int
i
=
1
;
i
<
200
;
i
++
)
{
//外层循环:要判断的数
for
(
int
j
=
2
;
j
<=
i
;
j
++
)
{
if
(
i
%
j
==
0
&&
i
!=
j
)
{
break
;
}
if
(
j
==
i
)
{
//结束的条件:最后一个数还没有被整除
count
++
;
Console
.
WriteLine
(
i
)
;
}
}
}
Console
.
WriteLine
(
count
)
;
}
13、
打印杨辉三角形
public
static
void
YHSJ
(
)
{
int
[
]
[
]
a
=
new
int
[
7
]
[
]
;
a
[
0
]
=
new
int
[
1
]
;
//a[0][0]=1;
a
[
1
]
=
new
int
[
2
]
;
for
(
int
i
=
0
;
i
<
7
;
i
++
)
{
a
[
i
]
=
new
int
[
i
+
1
]
;
a
[
i
]
[
0
]
=
1
;
a
[
i
]
[
i
]
=
1
;
if
(
i
>
1
)
{
//求出中间的数据
for
(
int
j
=
1
;
j
a
[
i
]
[
j
]
=
a
[
i
-
1
]
[
j
-
1
]
+
a
[
i
-
1
]
[
j
]
;
}
}
}
for
(
int
i
=
0
;
I
for
(
int
k
=
0
;
k
<
a
.
长度
-
1
-
i
;
k
++
)
{
Console
.
Write
(
""
)
;
}
for
(
int
j
=
0
;
j
Console
.
Write
(
a
[
i
]
[
j
]
+
""
)
;
}
Console
.
WriteLine
(
)
;
}
}
14、
中国有句俗话“三天打鱼两天晒网”,某人从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在今后的某天中“打鱼”还是”晒网”
public
static
void
Compute
(
)
{
Console
.
WriteLine
(
(
DateTime
.
Now
-
DateTime
.
Parse
(
"2000-01-01"
)
)
.
Days
%
5
<
3
?
"打鱼"
:
"晒网"
)
;
}
15、
假设当前市场价一只鸡10元,一只鸭12元5角。请写一个函数ShowPrice,输入参数分别为鸡和鸭的个数(非负整型),功能为显示出总价钱,精确到分。例如调用ShowPrice(5,10)后输出175.00。请注意程序的可读性和易于维护性。
static
void
ShowPrice
(
int
num_chicken
,
int
num_duck
)
{
float
totalPrice
=
0.00f
;
float
price_chicken
=
10f
;
float
price_duck
=
12.5f
;
totalPrice
=
num_chicken
*
price_chicken
+
num_duck
*
price_duck
;
Console
.
WriteLine
(
"总价钱为:{0:0.00}"
,
totalPrice
)
;
}
16、
请写一个函数,用于返回n!(阶乘)结果末尾连续0的个数,如GetZeroCount(5)返回1,因为5! = 120,末尾连续1个0
static
void
Main
(
string
[
]
args
)
{
int
fac
=
Factorial
(
5
)
;
Console
.
WriteLine
(
CountZero
(
fac
)
)
;
}
public
static
int
Factorial
(
int
n
)
{
if
(
n
==
1
)
{
return
1
;
}
else
{
return
n
*
jiecheng
(
n
-
1
)
;
}
}
//求连续的0的个数
public
static
int
CountZero
(
int
num
)
{
int
result
=
0
;
//最后的结果
String
numStr
=
num
.
ToString
(
)
;
for
(
int
i
=
numStr
.
长度
-
1
;
i
>=
0
;
i
--
)
{
if
(
numStr
[
i
]
==
'0'
)
{
result
++
;
}
else
{
break
;
}
}
return
result
;
}
学习无止境,上述也只是一部分的汇总,欢迎大家敲窗交流。
本文介绍了Unity3D中如何利用物理引擎模拟《愤怒的小鸟》的抛物线轨迹,涉及重力和空气阻力的计算方法。同时涵盖逻辑推理问题,如数字序列规律、找零逻辑、图形序列、火柴棒拼数字、岛屿红眼人问题、逻辑判断题、经济交易计算、开关灯谜题、数制转换、素数筛选、杨辉三角及日期判断等多方面知识,展现了Unity3D的基础应用与数学思维在编程中的运用。
4365

被折叠的 条评论
为什么被折叠?



