遅レス、すんまそ。皆さん親切で感激です。
何回か読み返してみて何となく納得と言うか整理が多少できました。

でも、疑問も又浮かびました>>371で書いた通り
>>376さんの書いた様な文法にしたら(直ぐに括弧閉じ)

main() {
 for() { }
 if { }
 printf();
}

エラーは起こらず2001が出力されました、何故上の様に
関数(){}の様に直ぐに括弧を閉じたらいけないのでしょうか?
入門書にもこう書かれています

main(){
処理
}

関数名1(){
  関数の処理
}

関数2(){
関数の処理
}

と直ぐに括弧閉じになってます、たぶんこれが混乱の原因かと・・・
>>362さんみたいに最初に付けた括弧は最後に括るではないのでしょうか?