نمونه سوالات ++C

۱۰ دیدگاه

با توجه به نزدیک شدن به ایام امتحانات در این نوشته به طرح چند سوال برنامه نویسی به همراه کدهای آن پرداخته شده است. درجه سختی سوالات با * مشخص شده است. ترتیب سوالات از ساده به سخت در نظر گرفته شده است . اگر در فهم سوالات مشکل دارید شاید بد نباشد مطالبی که در آموزش مقدماتی ، ساختار تصمیم ، ساختار تکرار و آرایه ها مطرح شده است را نگاهی دوباره بیندازید. همچنین در قسمت نظرات می‌توانید سوالات یا توضیحات تکمیلی در مورد مثالهای ارائه شده با دوستانتان مطرح کنید.

نکته قابل ذکر این است که نوشتن برخی از کدهایی که در ادامه خواهید دید با استفاده از توابع خواناتر و بهتر خواهد بود اما با توجه به اینکه هنوز مبحث توابع آموزش داده نشده است از نوشتن توابع صرفنظر شده است.

* مثال ۱ – برنامه‌ای بنویسید که طول و عرض مستطیلی دریافت کند و محیط و مساحت آن را چاپ کند.

*مثال ۲ – برنامه‌ای بنویسید که یک عدد دریافت کند و زوج و فرد بودن آن را گزارش کند.

توضیح کد را در مثال دوم ساختار تصمیم ببینید.

* مثال ۳: برنامه‌ای بنویسید که از ورودی ضرایب یک معادله درجه ۲ را دریافت کند و ریشه های آن را چاپ کند.

توضیح کد را در مثال چهارم ساختار تصمیم ببینید.

** مثال ۴: برنامه‌ای بنویسید که از ورودی عدد n را دریافت کند و مجموع ۱ تا n را محاسبه کند.
** مثال ۵: برنامه‌ای بنویسید که از ورودی n را دریافت کند و فاکتوریل آن را محاسبه کند.
** مثال ۶: برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و بزرگترین آنها را چاپ کند.
** مثال ۷: برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و دومین بزرگترین عدد را چاپ کند.

کدهای مثال ۴ تا ۷ را در مثالهای ۲، ۴ ، ۵ و ۶ ساختار تکرار ببینید.

** مثال ۸: برنامه‌ای بنویسید که معدل ۱۰۰ دانشجو از ورودی دریافت کند و بالاترین معدل مشروط شده را چاپ کند.

*** مثال ۹: برنامه‌ای بنویسید که نمره ۱۰۰ دانشجو از ورودی دریافت کند و میانگین نمرات بالای ۱۵ را محاسبه کند.

** مثال ۱۰: برنامه‌ای بنویسید که از ورودی عدد n را دریافت کند و nامین جمله دنباله فیبوناچی را چاپ کند.

*** مثال ۱۱: برنامه ای بنویسید که یک عدد از ورودی دریافت کند و تشخیص دهد که عدد اول است یا خیر.

کدهای مثال ۱۰ و ۱۱ را در مثالهای ۷ و ۸ ساختار تکرار ببینید.

** مثال ۱۲: برنامه‌ای بنویسید که یک عدد دریافت کند و تعداد ارقامش را چاپ کند.

** مثال ۱۳: برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و مجموع ارقامش را چاپ کند.

*** مثال ۱۴: برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و بزرگترین رقمش را چاپ کند.

***مثال ۱۵: برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و تعداد مقسوم علیه‌های آن را چاپ کند

***مثال ۱۶: برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و مجموع مقسوم علیه‌های آن را چاپ کند

***مثال ۱۷: برنامه‌ای بنویسید که دو عدد از ورودی دریافت کند و مقسوم علیه های مشترک آنها را چاپ کند.

*** مثال ۱۸ : برنامه‌ای بنویسید که دو عدد از ورودی دریافت کند و بزرگترین مقسوم علیه مشترک دو عدد را چاپ کند.

***مثال ۱۹: برنامه بازی HOP را بنویسید.

دو عدد m و n را از خروجی دریافت کند و در خروجی اعداد ۱ تا n چاپ می‌شود با این شرایط که به جای اعداد مضرب m ، کلمه HOP چاپ شود. برای مثال برای n=10 و m=3 باید خروجی زیر چاپ شود.

۱ ۲ Hop 4 5 HOP 7 8 HOP 10

** مثال ۲۰: برنامه ای بنویسید که ۵۰ عدد از ورودی دریافت کند. ابتدا اعداد زوج و سپس اعداد فرد را چاپ کند

کد این مثال را در مثال ۱ ساختار آرایه ببینید.

** مثال ۲۱: برنامه‌ای بنویسید که از ورودی ۲۰ عدد دریافت کند و برعکس ترتیب ورودی اعداد را چاپ کند

*** مثال ۲۲:برنامه‌ای بنویسید که که ورودی یک آرایه را دریافت کند و واریانس اعداد آرایه را محاسبه کند

** مثال ۲۳: برنامه‌ای بنویسید که دو آرایه از ورودی دریافت کند و مجموع دو آرایه را چاپ کند.

کد مثال ۲۲ و ۲۳ را در مثال ۲ و ۴ ساختار آرایه ببینید.

*** مثال ۲۴: برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و مشخص کند چند تای آنها از میانگین ۱۰۰ عدد بزرگتر است.

*** مثال ۲۵: برنامه‌ای بنویسید که از ورودی نمره ۲۰ دانشجو دریافت کند و به همه دانشجویان چنان به طور مساوی نمره اضافه کند که بالاترین نمره ۲۰ شود.

*** مثال ۲۶: برنامه‌ای بنویسید که یک آرایه از ورودی دریافت کند، سپس عددی از کاربر دریافت کند و آن عدد را در آرایه به صورت ترتیبی جستجو کند.

*** مثال ۲۷: برنامه ای بنویسید که یک آرایه مرتب از ورودی دریافت کند و سپس عدد دیگری از کاربر دریافت کند و آن عدد را در آرایه به صورت دودویی جستجو کند

کد مثال ۲۴ و ۲۵ را در مثال ۶ و ۷ ساختار آرایه ببینید.

**** مثال ۲۸: برنامه ای بنویسید که یک آرایه از ورودی دریافت کند و به روش حبابی آرایه را به صورت صعودی مرتب کند.

کد این مثال را در مثال ۸ ساختار آرایه ببینید.

*** مثال ۲۹: برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و تشخیص دهد که آیا آن عدد متقارن است یا خیر.

**** مثال ۳۰: برنامه‌ای بنویسید که بزرگترین عدد متقارنی که حاصلضرب دو عدد دو رقمی است را پیدا کند.

***** مثال ۳۱: برنامه‌ای بنویسید که از ورودی نمره ۱۰۰ دانشجو دریافت کند. سپس عددی را که بیشترین بار تکرار شده است چاپ کند.

***** مثال ۳۲: برنامه‌ای بنویسید که ۱۰۰ عدد مثبت از ورودی دریافت کند (اعداد می‌توانند تکراری باشند) و در نهایت مشخص کند که هر عدد چند بار تکرار شده است.

توضیح کد:
در این مثال از آرایه counter استفاده شده است. وظیفه این آرایه این است که متناسب با خانه های آرایه A تعداد دفعات تکرار اعداد آرایه A را ذخیره کند. مثلا اگر آرایه A برابر اعداد زیر باشد (از چپ به راست)

۱ , ۱ , ۲ , ۲ , ۱ , ۳ , ۲ , ۳ , ۱

مقدار counter[0] باید برابر با ۴ محاسبه شود. از طرفی وقتی که counter[0] را محاسبه کردیم دیگر نیازی به محاسبه counter[7]، counter[4] و counter[8] نیست (زیرا مقدار اندیسهای متناظر آنها در آرایه A همگی ۱ هستند.) پس زمانی که تعداد اعداد تکراری A[0] را پیدا میکنیم، به محض اینکه به A[4]، A[7] و A[8] رسیدیم به counter[0] یک واحد اضافه میکنیم و مقادیر آنها را برابر ۱- قرار می‌دهیم. مقدار ۱- قراردادی است که خودمان در کد میگذاریم و به این معنی است که اگر مقدار یکی از خانه های A منفی یک باشد یعنی قبلا در شمارش اعداد تکراری در نظر گرفته شده است.
با این توضیحات نگاهی به دوباره به کد بیاندازید:
در خط ۱۲ و ۱۳ آرایه counter با یک مقدار دهی می‌شود.
در خط ۱۷ تا ۲۲ قرار است تعداد دفعات تکرار A[i] محاسبه شود، اگر A[i] برابر منفی یک نبود به این معنی است که قبلا مقدار A[i] در شمارش ظاهر نشده است، بنابراین در خط ۱۸ از خانه i+1 تا آخر حرکت میکنیم و هر A[j] که با A[i] برابر بود را پیدا میکنیم به counter[i] یک واحد اضافه میکنیم و A[j] را برابر ۱- قرار میدهیم.

***** مثال ۳۳: برنامه‌ای بنویسید که ۱۰۰ عدد از ورودی دریافت کند و فقط اعداد تکراری را نشان دهد

( مثلا اگر ورودی اعداد ۲ ۲ ۵ ۱ ۲ ۷ ۱ ۳ ۱۲ ۵ باشد در خروجی این اعداد چاپ شود: ۷ ۳ ۱۲)

***** مثال ۳۴: برنامه‌ای بنویسید که از ورودی یک آرایه ۵۰ تایی دریافت کند. سپس یک آرایه ۵ تایی دریافت کند و تشخیص دهد آرایه دوم در آرایه اول وجود دارد یا خیر.

مثلا اگر اعداد روبرو قسمتی از آرایه اول باشند. … ۵ ۱ ۲ ۲ ۳ ۳ ۱ ۵ ۲ … و آرایه دوم ۱ ۲ ۲ ۳ ۳ باشد الگوریتم باید تشخیص دهد که آرایه دوم (با همان ترتیب) در آرایه اول وجود دارد.

***** مثال ۳۵: برنامه‌ای بنویسید که یک آرایه ۱۰۰ تایی از ورودی دریافت کند. سپس عدد ۱۰۱ام را از ورودی بخواند و به گونه ای در آرایه قرار دهد که آرایه همچنان صعودی باشد.

برای درک بهتر این سوال فرض کنید آرایه مرتب زیر از ورودی دریافت شود:

اگر عدد ششم ۵ باشد الگوریتم باید به گونه ای کار کند که اعداد ۱۰، ۱۵ و ۲۰ یک واحد به سمت راست شیفت پیدا کنند و عدد ۵ در خانه دوم به صورت زیر قرار گیرد:

توضیح کد:
۱- در خط ۷ اندازه آرایه را ۱+n در نظر گرفتیم، زیرا قرار است ابتدا آرایه n تایی از ورودی بخوانیم و سپس یک عدد به آرایه اضافه کنیم
۲-در خط ۱۲ و ۱۳ یک آرایه از ورودی دریافت می‌کنیم. (که کاربر باید آرایه مرتب وارد کند)
۳- در خط ۱۵ عددی که قرار است به آرایه اضافه شود دریافت می‌کنیم.
۴- در خط ۱۶ تا ۲۰، از خانه آخر آرایه به سمت ابتدای آرایه حرکت می‌کنیم. (توجه داشته باشید که آخرین خانه آرایه خالی است) در هر مرحله خانه قبلی اندیس i را با x مقایسه می‌کنیم. چنانچه از x بزرگتر باشد در خانه i قرار می‌دهیم و چنانچه کوچکتر باشد به این معنی است که جای دقیق x پیدا شده و از ساختار تکرار خارج می‌شویم
برای درک بهتر، الگوریتم را بر روی آرایه بالا توضیح می‌دهیم:
بعد از دریافت آرایه همانطور که می‌بینید خانه ۵ خالی است. ساختار تکرار در خط ۱۶ به ازای i=5 آغاز می‌شود. در شرط خط ۱۷ خانه ۱-i (که خانه چهارم و عدد ۲۰ در آن دخیره شده ) با x (که در این مثال عدد ۵ است) مقایسه می‌شود و چون ۲۰ بزگتر است عدد ۲۰ در خانه A[i] (که خانه پنجم است ذخیره می‌شود.) همانطور که دیدید عدد ۲۰ یک واحد به راست شیفت پیدا کرد. این وضعیت برای iهای ۴ و ۳ نیز اتفاق می‌افتد ولی به ازای i=2 شرط A[i-1] < x غلط می‌شود و از ساختار تکرار خارج می‌شود و در خط ۲۱ x در خانه iام که ۲ است ذخیره می‌شود.

  • نویسنده
    حمید جهانگیری
  • تعداد بازدید
    3,240
۱۰دیدگاه فرستاده شده است.
شما هم دیدگاه خود را بنویسید
  1. احسان :
    ۱۴ دی ۹۸

    سوالهای ۵ ستاره عالی بودن. مخصوصا سوال آخر. اگر باز هم همچین سوالهایی طرح کنید خیلی خوب میشه.

    • حمید جهانگیری :
      ۱۸ دی ۹۸

      با سلام.
      به مرور اضافه می‌شود.

  2. محمدحسین :
    ۲۰ دی ۹۸

    با سلام
    در سوال ۸ چرا ما max=۰ قرار دادیم؟؟؟
    تشکر

    • حمید جهانگیری :
      ۲۰ دی ۹۸

      سلام
      چون معدل بین صفر و ۲۰ است بنابراین با max رو با صفر مقداردهی میکنیم.

  3. سهیل فلاح زاده :
    ۰۸ خرداد ۹۹

    با سلام استاد گرامی
    ضمن تشکر از سایت بسیار عالی و کاربردی و خوبتان ، امکانش هست بفرمایید که چرا توی مثال ۸، x را عدد صحیح تعریف کردین؟ نباید اعشاری (float) تعریف بشه؟
    از کمک هاتون بسیار متشکرم

    • حمید جهانگیری :
      ۰۹ خرداد ۹۹

      سلام، ممنون از لطفتون.
      بله درست میگید، باید اعشاری تعریف بشه: float یا double.
      کد اصلاح شد.

  4. سهیل فلاح زاده :
    ۰۹ خرداد ۹۹

    با سلام خدمت شما استاد گرامی
    امکانش هست که بفرمایید در مثال ۳۱ , j را برابر با i+1 قرار دادین؟
    با تشکر از شما

    • حمید جهانگیری :
      ۱۰ خرداد ۹۹

      سلام،
      اگر از i هم شروع بشه جواب درست تولید میشه ولی در منطقِ کد من مثلا اگر پنج بار عدد ۳ ظاهر بشه به این صورت نگاه میکنم که یک عدد ۳ داریم که چهار بار تکرار شده (با خود عدد ۳ میشه پنج بار) به همین دلیل اولین عدد ۳ رو تو شمارش نمیارم و از i+1 شروع به شمردن میکنم

  5. سهیل فلاح زاده :
    ۰۹ خرداد ۹۹

    با سلام مجدد خدمت شما استاد گرامی و عزیز
    استاد من مثال ۳۲ رو متوجه نمیشم …(خط ۱۲ به بعد)
    امکانش هست یک توضیح راجبش بدین؟
    ممنون که وقت میزارین

    • حمید جهانگیری :
      ۱۰ خرداد ۹۹

      سلام، بله حتما.
      توضیحات به مثال اضافه شد

نوشته‌های ویژه
اخبار ویژه

با عضویت در خبرنامه، تازه‌ترین نوشته‌های وبلاگ را در ایمیل‌تان دریافت کنید.
برای عضویت نشانی ایمیل خود را وارد کرده و بر روی دکمه عضویت کلیک نمایید.