Sign in
or
Register
Courses
Textbook
Compiler
Contests
Topics
Courses
سي #. الأساسيات
الروتين الفرعي: الإجراءات والوظائف - 1
Module:
الروتين الفرعي: الإجراءات والوظائف - 1
Problem
11
/11
تغيير الحجج
Theory
Click to read/hide
مهمة h5>
اكتب إجراء يتبادل قيم متغيرين. tt>
خصوصية هذه المهمة هي أننا نحتاج إلى التغييرات التي تم إجراؤها في الإجراء حتى تصبح معروفة للبرنامج المتصل.
دعنا نحاول كتابة الإجراء مثل هذا:
تبديل الفراغ الثابت (int a، int b) // مع هذا الوصف لمعلمات الإجراء ، {// سينسخ قيم الوسيطات (س وص) كثافة العمليات ج ؛ // المتغيرات a و b هي متغيرات مستقلة لا علاقة لها بـ x و y ج = أ ؛ أ = ب ؛ ب = ج ؛ } فراغ ثابت رئيسي () { int س = 1 ، ص = 2 ؛ المبادلة (س ، ص) ؛ // قيم المتغيرات x و y (الوسائط) يتم نسخها إلى المعلمات a و b ، x = 1 ، y = 2 } إذا قمت بتشغيل هذا البرنامج ، يمكنك أن ترى أن قيم متغيري x و y لم تتغير. لكي تغير المعلمات قيم الوسيطات ، يجب عليك استخدام البيانات المارة حسب المرجع. & nbsp ؛ للقيام بذلك ، قبل اسم نوع البيانات في رأس الروتين الفرعي ، يجب عليك كتابة
المرجع
.
مبادلة باطلة (المرجع int a ، المرجع int b) // الآن المتغيرات a و b تحصل على عناوين المتغيرات x و y في الذاكرة { كثافة العمليات ج ؛ ج = أ ؛ أ = ب ؛ ب = ج ؛ } فراغ ثابت رئيسي () { نبسب ؛ int س = 1 ، ص = 2 ؛ نبسب ؛ المبادلة (المرجع x ، المرجع y) ؛ التطبيق: إذا قمت بتمرير وسيطة من خلال المرجع ، فعندئذٍ فقط اسم المتغير (ليس رقمًا وليس تعبيرًا حسابيًا) يمكن أن يقف في هذا المكان عند استدعاء الإجراء.
لا يمكنك استدعاء إجراء مثل هذا: <قبل> المبادلة (× ، 4) ؛ المبادلة (5 + س ، ص) ؛
Problem
اكتب إجراء يبدل قيم متغيرين. & nbsp؛ ابحث عن الأخطاء وصححها في هذا الإجراء.
نبسب ؛
مثال h6>
#
إدخال
الإخراج
<الجسم>
1
1
2
2
1
1000
ms
256 Mb
Rules for program design and list of errors in automatic problem checking
Teacher commentary