סביר להניח
שהבעיה היא בה ';' שבשורה של הDEFINE (בנוסף לסימן ה '=', שלא אמור להיות שם). חשוב מאוד להבין את ההבדל בין DEFINE לבין const. DEFINE הוא לא באמת משתנה קבוע, אלא הגדרת PRECOMPILER. מה שזה אומר, שלפני שהקומפיילר מקפל, הוא עובר על כל הקובץ ומחליף את כל הK ב 50;. כך שאיפה שיש לך
for ( i = 0; i <= arr[K]; i++ )
הופך לזה:
for ( i = 0; i <= arr[50;]; i++)
מה שכמובן ייתן לך שגיאה. לגבי השאלה השניה - כל משתנה שמוגדר בתוך פונקציה ניתן לשימוש רק בתוך הפונקציה. אם שולחים אותו כפרמטר לפונקציה אחרת אז ניתן להשתמש בו (האמת, בעותק שלו) ע"פ השם שמוגדר לו בהגדרה של הפונקציה. השימוש של extern הוא לשימוש במשתנים שהוגדרו בקובץ קוד אחר.