编写脚本文件text4,要求连续通过键盘输入10个数,对这10个数进行从大到小的排序,并显示排序结果。
这是我在VI中编写的
编译时 出现如下结果,
。
这根本就没有,怎么回事
#!/bin/bash
for((i=1;i<=10;i++))
do
echo -n "shurudi${i}igeshuzhi: "
read num[i]
done
for((i=1;i<=10;i++))
do
for((j=i;j<=10-i;j++))
do
if [ ${num[j]} -gt ${num[j+1]} ]
then
temp=${num[j]}
num[j]=${num[j+1]}
num[j+1]=$temp
fi
done
done
echo "da--xiaopaixujieguoruxia:"
for((i=1;i<=10;i++))
do
echo ${num[i]}
done
for((i=1;i<=10;i++))
do
echo -n "shurudi${i}igeshuzhi: "
read num[i]
done
for((i=1;i<=10;i++))
do
for((j=1;j<=10-i;j++))
do
if [ ${num[j]} -lt ${num[j+1]} ]
then
temp=${num[j]}
num[j]=${num[j+1]}
num[j+1]=$temp
fi
done
done
echo "da--xiaopaixujieguoruxia:"
for((i=1;i<=10;i++))
do
echo ${num[i]}
done
for((i=1;i<=10;i++))
do
echo -n "shurudi${i}igeshuzhi: "
read num[i]
done
for((i=1;i<=10;i++))
do
for((j=i;j<=10-i;j++))
do
if [ ${num[j]} -gt ${num[j+1]} ]
then
temp=${num[j]}
num[j]=${num[j+1]}
num[j+1]=$temp
fi
done
done
echo "da--xiaopaixujieguoruxia:"
for((i=1;i<=10;i++))
do
echo ${num[i]}
done
修改如上述代码,运行结果如下:
追问对这10个数进行从大到小的排序.不是从小到大。麻烦你修改一下哦。谢谢了
追答#!/bin/bashfor((i=1;i<=10;i++))
do
echo -n "shurudi${i}igeshuzhi: "
read num[i]
done
for((i=1;i<=10;i++))
do
for((j=1;j<=10-i;j++))
do
if [ ${num[j]} -lt ${num[j+1]} ]
then
temp=${num[j]}
num[j]=${num[j+1]}
num[j+1]=$temp
fi
done
done
echo "da--xiaopaixujieguoruxia:"
for((i=1;i<=10;i++))
do
echo ${num[i]}
done
刚回家 O(∩_∩)O~ 。小小改动一下就行
另外 建议楼主好好看看数据算法,这个典型的冒泡法排序哈
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-06-28
用sort写一个吧:
#!/bin/bash#script filename: text4
for i in {1..10}
do
read -p "shurudi${i}geshuzi: " num[$i]
str=${str}"\n"${num[$i]}
done
str=${str:2}
echo -e "$str"|sort -r
说明:
按你的方法用read读入10个数字并连接成一个字符串,数字间以回车符“\n”隔开。
用${str:2}取得从第3个字符(index为2)开始往后的子串,即剔除开头的前两个字符"\n"(index为0和1)。
用echo以竖排形式输出用户输入的数字,用sort -r从大到小自动排序。
我要问的在@whudwl里面,发图片发不上去。
追答read -p 引号里的东西写错了
$这个是取值符号,后面必须跟一个变量。${i}这样是对的。
请仔细对照我上面的代码。
又错了哦。
这是我修改的
编译出现了错误 10怎么不是第一个呢
这回是我的错,嘿嘿~~
最后的 sort -r 改为 sort -nr
加一个-n选项,按数字排序。
第2个回答 2013-06-28
排序为什么不用sort呢 .追问
我们要求用这个,请问怎么改呢
追答我和这位@xiehuahere 的想法是一样的...
追问我按照sort做,如下图,有错误,请指出来
运行出现如下结果