主题:键盘输入10个数,不准用条件语句,把其中最大的数和最小的数打印出来!
hxy1980hxy
[专家分:0] 发布于 2005-03-19 21:42:00
1\键盘输入10个数,不准用条件语句,把其中最大的数和最小的数打印出来!
2\ 有一块金属,三人对它进行判断:
A说:"它不是铁,也不是钢"
B说:"它不是铁,而是锌"
C说:"它不是锌,而是跌"
结果有一个人全说错了,一个人全说对了,一个人对一句错一句,请你判断这块金属到底是什么?
谢谢
回复列表 (共13个回复)
沙发
faintzw [专家分:2660] 发布于 2005-03-19 21:55:00
第一题用计数排序或基数排序即可
第二题基础枚举
板凳
hxy1980hxy [专家分:0] 发布于 2005-03-19 22:12:00
能不能说得详细点呀?
在QBASIC里用语言怎么解呀?
谢谢
3 楼
methuselah [专家分:6840] 发布于 2005-03-19 22:56:00
不准用条件?我看看有没有办法
4 楼
faintzw [专家分:2660] 发布于 2005-03-20 13:04:00
我最讨厌只要程序的人。
5 楼
qbqb [专家分:400] 发布于 2005-03-20 13:40:00
dim a(1 to 10)
for i=1 to 10
input a(i)
next i
for i=1 to 10
if a(i)<min then min=a(I)
if a(i)>max then max=a(I)
next i
print "最小数“;min
print "最大数“;max
用排序法也要用if啊,完全不用if有一点麻烦。
6 楼
faintzw [专家分:2660] 发布于 2005-03-20 14:25:00
拜托
楼上的看清楚我说的是什么排序了吗?
计数排序和基数排序都不是基于比较的排序,不用if!
7 楼
hxy1980hxy [专家分:0] 发布于 2005-03-20 16:45:00
不用IF怎么写呢?
8 楼
codepk [专家分:2800] 发布于 2005-03-20 16:57:00
我来说下第一题,我有个没效率的方法...你就湊合用吧?
设比较的两个数为a和b的,它们的差的绝对值为d
那么它们之间
大的那个数为
(a+b+d)/2
小的那个数为
(a+b-d)/2
这个公式应该会明白吧?求它们的差的绝对值,有好几种方法,你想想吧
2.第二题金属就3种状态,循环加判断
9 楼
staa [专家分:3690] 发布于 2005-03-20 22:42:00
如果这10个数都是正整数,而且不是很大,我可以用下面的程序把它打印出来,呵呵,其实do while语句也是取巧了,严格说是不合题意的。
(这里向大家推荐的是这种排序的算法,它其实是一种极为高效的算法,我把它称为“分发式排序”。经过各种适应性改造,还是有实用价值的。)
DEFINT A-Z
DIM a(10)
FOR i = 1 TO 10
PRINT i;
INPUT a(i)
s = s + a(i)
NEXT
DIM b(s)
FOR i = 1 TO 10
b(a(i)) = a(i)
NEXT
FOR i = 1 TO s
DO WHILE b(i) > 0
PRINT b(i)
EXIT FOR
LOOP
NEXT
FOR i = s TO 1 STEP -1
DO WHILE b(i) > 0
PRINT b(i)
EXIT FOR
LOOP
NEXT
END
10 楼
methuselah [专家分:6840] 发布于 2005-03-21 00:10:00
没有好点的算法?
我来回复