>>71
ここのスレは「C/C++の宿題片付けます」なんで、コードを書かないと言うのは良くないかもしれないけど。。。
C言語の問題というより、ロジックをどう組み立てるかの問題だと思います。

プログラムのなんて、ロジックを各言語に落としただけなんで。
ただ、ロジックを組む上で、特定の言語で出きる事、出来ない事があるのでまったく無関係という訳ではないけど。

んで、「関数にしろ」と先生に言われたのなら、闇雲にmainに書いてみるんじゃなく、どの部分を関数にしたら良いかを考えるとよいよ。
まぁ、ヒントの1-6の部分をそれぞれ、全部関数にしちゃうって手もあるよ。
そうすると
void main(){
sturuct Data *pDate;
strunct Data **arrayData;
fp = file_open(.....); /* 1.ファイルのオープン */
pData = readData(fp); /* 3.データの読み込み */
calcBMI(pData); /* 4.BMIの算出 */
.....
sortBMI(arrayData); /* 5.BMIの大きい者順に並べ替える */
printData(arrayData); /* 6.画面表示 */
.....
}
引数、戻り値はまだ未定。

3.データ構造の用意 については、今、どのくらいの段階の勉強をしているのか分からないのでなんとも言えないのですが、ポインタとか領域確保(malloc)とかがイメージ出来て入れば、
初めにデータ数を知らなくてもかけないこともない。
ただ、今の段階で、そのレベルの勉強をしているのかが分からないので保留させて頂きます。

まぁ、ざっくりと骨組みらしきものは出来た。
こういう風に考えた物をもとにして、これは、こっちが良いんではないかと考える。
(だから、上のプログラム(の原型にとらわれる必要はない・どんどん、変化していけば良い。)

なんか、考え方等、間違っていたら他の人も指摘・訂正をお願いいたします。