失礼ですが、fscanf()など、C言語の単語や組み合わせは分かっていらっしゃるんですよね。そして、並べ替えのアルゴリズムが分からないのですよね?
理屈は、内部で何をしているか分からない関数を使うよりベーシックなBASICのほうが分かり易いと思いますので、今は亡きMZ80BパソコンについていたHuBASICで最小限だけ書きますので、Cの単語に置き換えてください。
ちなみに以下は、泡立て法(隣接交換法、バブルソート)というやり方です。ほかにも方法はありますが、これが、一番時間がかかるものの、一番流れが理解し易いソートです。
1 N=10
※データー数の設定(質問文では3だが余裕をみて)
2 DIM A(N)
※配列変数を10個用意
3 FOR I=1 TO N
※1からデーター数Nまで、Iの値を増やしていく
4 READ A(I)
※データーを読み込んで変数A(I)に格納。例えばA(1)には45が入る
5 NEXT
※IがNになるまで3へ戻って、繰り返す。
6 FOR UP=2 TO N-1
7 FOR I=N TO UP STEP -1
※Iの値がNからUPの値になるまで、1つずつ減らして繰り返す
8 IF A(I-1)>A(I) THEN B=A(I-1) : A(I-1)=A(I) : A(I)=b
※もしA(9)がA(10)より大きいなら、A(9)の中の値をいったんBに
入れて保存し、A(9)にA(10)の値を入れる。そしてA(10)にBの値
を入れる。つまり、A(9)とA(10)の値を入れ替える。
もしA(9)がA(10)より小さいか、等しいなら、なにもしないで
次の行へ行く
9 NXT I
※7行目へ戻る
10 NXT UP
※6行目へ戻る
11 FOR I=1 TO N
12 PRINT A(I)
※A(I)の中の値を順番に表示する
13 NEXT
14 DATA 45,43,38,21,11,5,51,49,60,28
で、(数値を縦に並べた場合)小さい数字が、まるで泡のように、上へ上へと昇っていきます・・・ どこかで間違っていなければ。(但し、これはそこまで手の込んだプログラムではないので、数が入れ替えられていく様子は表示されません)
8行目の不等号の向きを変えると降順になります。
昔の冗談で、正しくプログラムを書いたのに答えがでない。なぜだなぜだと三日三晩考えたが分からない。4日目にフッと気がついた。答えを表示しろという命令(PRINT)が抜けていた、というのがあります。1つ間違えると正解が出ないのでご勘弁を。