回 帖 发 新 帖 刷新版面

主题:键盘输入10个数,不准用条件语句,把其中最大的数和最小的数打印出来!

1\键盘输入10个数,不准用条件语句,把其中最大的数和最小的数打印出来!

2\ 有一块金属,三人对它进行判断:
A说:"它不是铁,也不是钢"
B说:"它不是铁,而是锌"
C说:"它不是锌,而是跌"
结果有一个人全说错了,一个人全说对了,一个人对一句错一句,请你判断这块金属到底是什么?

谢谢

回复列表 (共13个回复)

沙发

第一题用计数排序或基数排序即可
第二题基础枚举

板凳

能不能说得详细点呀?
在QBASIC里用语言怎么解呀?

谢谢

3 楼

不准用条件?我看看有没有办法

4 楼

我最讨厌只要程序的人。

5 楼

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 楼

拜托
楼上的看清楚我说的是什么排序了吗?
计数排序和基数排序都不是基于比较的排序,不用if!

7 楼

不用IF怎么写呢?

8 楼

我来说下第一题,我有个没效率的方法...你就湊合用吧?
设比较的两个数为a和b的,它们的差的绝对值为d
那么它们之间
大的那个数为
(a+b+d)/2
小的那个数为
(a+b-d)/2
这个公式应该会明白吧?求它们的差的绝对值,有好几种方法,你想想吧
2.第二题金属就3种状态,循环加判断

9 楼

如果这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 楼

没有好点的算法?

我来回复

您尚未登录,请登录后再回复。点此登录或注册