سؤالهای نمونه مناسب پایان ترم برای مبانی برنامهنویسی
به زبان ++C با پاسخ
⦁ نوشته زیر چه خروجیای دارد؟
#include <iostream>
using namespace std;
int main() {
cout << 3 + 4 * 5 << endl;
return 0;
}
⦁ پاسخ: 23
⦁ تفاوت بین متغیر و ثابت را با یک مثال بنویسید.
⦁ پاسخ: متغیر مقداری دارد که میتواند تغییر کند (مثلاً int a = 5؛ a = 7؛)، ثابت مقداری است که پس از مقداردهی تغییر نمیکند (مثلاً const int b = 10؛).
⦁ عبارت شرطی زیر چه نتیجهای دارد؟
#include <iostream>
using namespace std;
int main() {
int x = 6;
cout << (x > 4 ? 1 : 0) << endl;
return 0;
}
⦁ پاسخ: 1
⦁ کلمه کلیدی مرتبط با کلاس در C++ چیست و چرا استفاده میشود؟
⦁ پاسخ: کلاس (class)؛ برای تعریف نوع دادهای با ویژگیها (اعضای data) و رفتارها (اعضای تابع) استفاده میشود.
⦁ تابعی بنویسید که دو عدد صحیح را گرفته و بزرگترین آنها را برگرداند. نام تابع max_of_two باشد.
⦁ پاسخ نمونه (حداقل خروجی): int max_of_two(int a, int b) { return (a > b) ? a : b; }
⦁ یک آرایه با اندازه 5 با مقادیر 1 تا 5 تعریف کنید و مقدار اولین عنصر را در چاپ کنید.
⦁ پاسخ:
int arr = {1,2,3,4,5};
std::cout << arr[0] << std::endl;
// خروجی 1
⦁ رشته (string) در C++ چیست و چگونه یک رشته بنویسیم و چاپ کنیم؟
⦁ پاسخ: کلاس string در کتابخانه استاندارد است. نمونه: #include <string> ... std::string s = "سلام"; std::cout << s << std::endl;
⦁ تفاوت بین حلقه for و while را با مثال کوتاه توضیح دهید.
⦁ پاسخ: for زمانی مناسب است که تعداد تکرار مشخص است (برای نمونه برای i = 0; i < n; ++i). while زمانی مناسب است که شمارنده یا شرط تکرار به صورت پویا تعیین میشود (مثلاً while (condition)).
⦁ مفهوم ایجاد یک کلاس ساده به نام Point با دو عضو x و y و یک سازنده ( constructor ) بنویسید.
⦁ پاسخ نمونه:
class Point {
public:
int x, y;
Point(int x_, int y_) : x(x_), y(y_) {}
};
⦁ یک تابع با بازگشت مقدار بنویسید که مقدار دو عدد را جمع کند و نتیجه را چاپ نکند بلکه برگرداند.
⦁ پاسخ نمونه: int sum(int a, int b) { return a + b; }
نکات کلیدی برای آمادهسازی پایان ترم
⦁ الگوریتمهای پایه: شرطیها، حلقهها، توابع، و سازههای دادهای پایه (آرایهها و استراکچرز/کلاسها) را با مثالهای کوتاه تمرین کنید.
⦁ مفهوم وراثت، چندریختی (polymorphism) و کلاسها و توابع عضو را در سطح ابتدایی مرور کنید.
⦁ ورودی و خروجی: کار با cin و cout، مدیریت رشتهها و کار با کاراکترها را تمرین کنید.
⦁ نکتههای رایج در سوالات کلاسی: خروجی کدها با تغییر ترتیب اپراتورها یا استفاده از پیشزبانها (prefix) و پسزبانها (postfix) گاهی سوءتفاهم ایجاد میکند؛ حتماً با دقت اجرای پیشفرضهای اولیه را بررسی کنید.
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
به زبان ++C با پاسخ
⦁ نوشته زیر چه خروجیای دارد؟
#include <iostream>
using namespace std;
int main() {
cout << 3 + 4 * 5 << endl;
return 0;
}
⦁ پاسخ: 23
⦁ تفاوت بین متغیر و ثابت را با یک مثال بنویسید.
⦁ پاسخ: متغیر مقداری دارد که میتواند تغییر کند (مثلاً int a = 5؛ a = 7؛)، ثابت مقداری است که پس از مقداردهی تغییر نمیکند (مثلاً const int b = 10؛).
⦁ عبارت شرطی زیر چه نتیجهای دارد؟
#include <iostream>
using namespace std;
int main() {
int x = 6;
cout << (x > 4 ? 1 : 0) << endl;
return 0;
}
⦁ پاسخ: 1
⦁ کلمه کلیدی مرتبط با کلاس در C++ چیست و چرا استفاده میشود؟
⦁ پاسخ: کلاس (class)؛ برای تعریف نوع دادهای با ویژگیها (اعضای data) و رفتارها (اعضای تابع) استفاده میشود.
⦁ تابعی بنویسید که دو عدد صحیح را گرفته و بزرگترین آنها را برگرداند. نام تابع max_of_two باشد.
⦁ پاسخ نمونه (حداقل خروجی): int max_of_two(int a, int b) { return (a > b) ? a : b; }
⦁ یک آرایه با اندازه 5 با مقادیر 1 تا 5 تعریف کنید و مقدار اولین عنصر را در چاپ کنید.
⦁ پاسخ:
int arr = {1,2,3,4,5};
std::cout << arr[0] << std::endl;
// خروجی 1
⦁ رشته (string) در C++ چیست و چگونه یک رشته بنویسیم و چاپ کنیم؟
⦁ پاسخ: کلاس string در کتابخانه استاندارد است. نمونه: #include <string> ... std::string s = "سلام"; std::cout << s << std::endl;
⦁ تفاوت بین حلقه for و while را با مثال کوتاه توضیح دهید.
⦁ پاسخ: for زمانی مناسب است که تعداد تکرار مشخص است (برای نمونه برای i = 0; i < n; ++i). while زمانی مناسب است که شمارنده یا شرط تکرار به صورت پویا تعیین میشود (مثلاً while (condition)).
⦁ مفهوم ایجاد یک کلاس ساده به نام Point با دو عضو x و y و یک سازنده ( constructor ) بنویسید.
⦁ پاسخ نمونه:
class Point {
public:
int x, y;
Point(int x_, int y_) : x(x_), y(y_) {}
};
⦁ یک تابع با بازگشت مقدار بنویسید که مقدار دو عدد را جمع کند و نتیجه را چاپ نکند بلکه برگرداند.
⦁ پاسخ نمونه: int sum(int a, int b) { return a + b; }
نکات کلیدی برای آمادهسازی پایان ترم
⦁ الگوریتمهای پایه: شرطیها، حلقهها، توابع، و سازههای دادهای پایه (آرایهها و استراکچرز/کلاسها) را با مثالهای کوتاه تمرین کنید.
⦁ مفهوم وراثت، چندریختی (polymorphism) و کلاسها و توابع عضو را در سطح ابتدایی مرور کنید.
⦁ ورودی و خروجی: کار با cin و cout، مدیریت رشتهها و کار با کاراکترها را تمرین کنید.
⦁ نکتههای رایج در سوالات کلاسی: خروجی کدها با تغییر ترتیب اپراتورها یا استفاده از پیشزبانها (prefix) و پسزبانها (postfix) گاهی سوءتفاهم ایجاد میکند؛ حتماً با دقت اجرای پیشفرضهای اولیه را بررسی کنید.
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
❤2
سوالات دشوارتر مبانی برنامهنویسی++C
(سطح متوسط: اشارهگرها، ارجاع، کلاسها، حافظه پویا و آرایهها)
سوالات با پاسخها
⦁ خروجی کد زیر چیست؟ (اشارهگر و افزایش)
#include <iostream>
int main() {
int x = 5;
int *p = &x;
(*p)++;
std::cout << x;
return 0;
}
⦁ پاسخ: 6 (اشارهگر p به x اشاره میکند؛ *p++ مقدار x را به 6 افزایش میدهد).[1]
⦁ تفاوت اشارهگر (pointer) و ارجاع (reference) را با مثال بنویسید.
⦁ پاسخ: اشارهگر آدرس ذخیره میکند و میتواند nullptr باشد
(int *p = &x;)؛ ارجاع
alias
متغیر است و همیشه معتبر
(int &r = x; r = 10;
x تغییر میکند)
ارجاع نمیتواند تغییر کند.
[2]
⦁ تابعی بنویسید که آرایه را با اشارهگر معکوس کند (reverse).
⦁ پاسخ نمونه:
void reverse(int *arr, int size) { for(int i=0; i<size/2; i++) std::swap(arr[i], arr[size-1-i]); }
[3]
⦁ کلاس Student با اعضای خصوصی name (string)، grade (int) و تابع عمومی setGrade بنویسید.
⦁ پاسخ نمونه:
class Student {
private:
std::string name;
int grade;
public:
void setGrade(int g) { grade = g; }
int getGrade() { return grade; }
};[4]
⦁ حافظه پویا: آرایه 5 تایی int با new تخصیص دهید، مقدار 10 پر کنید و با delete[] آزاد کنید.
⦁ پاسخ نمونه:
int *arr = new int;
for(int i=0; i<5; i++) arr[i]=10; delete[] arr;
[5][1]
⦁ خروجی:
int a=10, b=20; int &ref = a; ref = b; std::cout << a << " " << b;
⦁ پاسخ:
20 20 (ارجاع ref به a است؛ تغییر ref، a را تغییر میدهد اما b نه؛ منتها به ref، مقدار b را به a کپی میکند).[6]
⦁ تابعی با ارجاع که دو عدد را مبادله کند (swap by reference).
⦁ پاسخ نمونه:
void swap(int &x, int &y)
{ int temp = x; x = y; y = temp; }
[2]
⦁ اشارهگر به اشارهگر:
int x=5;
int *p=&x;
int **pp = &p;
**pp = 10;
خروجی *p؟
⦁ پاسخ: 10 (pp به p اشاره میکند؛ **pp مقدار x را 10 میکند).[1]
⦁ کلاس Rectangle با سازنده و تابع area (مساحت).
⦁ پاسخ نمونه:
class Rectangle {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() { return width * height; }
};[4]
⦁ با اشارهگر، عنصر میانی آرایه 5 تایی {1,2,3,4,5} را پیدا کنید.
⦁ پاسخ: int arr[]={1,2,3,4,5};
int *mid = arr + 2;
std::cout << *mid;
// 3[1]
نکات برای تمرین بیشتر
⦁ اشارهگرها و ارجاعها: همیشه چک کنید nullptr نباشد و حافظه را آزاد کنید تا memory leak جلوگیری شود.
⦁ کلاسها: private برای دادهها، public برای متدها؛ سازنده برای مقداردهی اولیه.
⦁ تست کنید: هر کد را در کامپایلر آنلاین مانند onlinegdb اجرا کنید و تغییرات را ببینید.
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
(سطح متوسط: اشارهگرها، ارجاع، کلاسها، حافظه پویا و آرایهها)
سوالات با پاسخها
⦁ خروجی کد زیر چیست؟ (اشارهگر و افزایش)
#include <iostream>
int main() {
int x = 5;
int *p = &x;
(*p)++;
std::cout << x;
return 0;
}
⦁ پاسخ: 6 (اشارهگر p به x اشاره میکند؛ *p++ مقدار x را به 6 افزایش میدهد).[1]
⦁ تفاوت اشارهگر (pointer) و ارجاع (reference) را با مثال بنویسید.
⦁ پاسخ: اشارهگر آدرس ذخیره میکند و میتواند nullptr باشد
(int *p = &x;)؛ ارجاع
alias
متغیر است و همیشه معتبر
(int &r = x; r = 10;
x تغییر میکند)
ارجاع نمیتواند تغییر کند.
[2]
⦁ تابعی بنویسید که آرایه را با اشارهگر معکوس کند (reverse).
⦁ پاسخ نمونه:
void reverse(int *arr, int size) { for(int i=0; i<size/2; i++) std::swap(arr[i], arr[size-1-i]); }
[3]
⦁ کلاس Student با اعضای خصوصی name (string)، grade (int) و تابع عمومی setGrade بنویسید.
⦁ پاسخ نمونه:
class Student {
private:
std::string name;
int grade;
public:
void setGrade(int g) { grade = g; }
int getGrade() { return grade; }
};[4]
⦁ حافظه پویا: آرایه 5 تایی int با new تخصیص دهید، مقدار 10 پر کنید و با delete[] آزاد کنید.
⦁ پاسخ نمونه:
int *arr = new int;
for(int i=0; i<5; i++) arr[i]=10; delete[] arr;
[5][1]
⦁ خروجی:
int a=10, b=20; int &ref = a; ref = b; std::cout << a << " " << b;
⦁ پاسخ:
20 20 (ارجاع ref به a است؛ تغییر ref، a را تغییر میدهد اما b نه؛ منتها به ref، مقدار b را به a کپی میکند).[6]
⦁ تابعی با ارجاع که دو عدد را مبادله کند (swap by reference).
⦁ پاسخ نمونه:
void swap(int &x, int &y)
{ int temp = x; x = y; y = temp; }
[2]
⦁ اشارهگر به اشارهگر:
int x=5;
int *p=&x;
int **pp = &p;
**pp = 10;
خروجی *p؟
⦁ پاسخ: 10 (pp به p اشاره میکند؛ **pp مقدار x را 10 میکند).[1]
⦁ کلاس Rectangle با سازنده و تابع area (مساحت).
⦁ پاسخ نمونه:
class Rectangle {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() { return width * height; }
};[4]
⦁ با اشارهگر، عنصر میانی آرایه 5 تایی {1,2,3,4,5} را پیدا کنید.
⦁ پاسخ: int arr[]={1,2,3,4,5};
int *mid = arr + 2;
std::cout << *mid;
// 3[1]
نکات برای تمرین بیشتر
⦁ اشارهگرها و ارجاعها: همیشه چک کنید nullptr نباشد و حافظه را آزاد کنید تا memory leak جلوگیری شود.
⦁ کلاسها: private برای دادهها، public برای متدها؛ سازنده برای مقداردهی اولیه.
⦁ تست کنید: هر کد را در کامپایلر آنلاین مانند onlinegdb اجرا کنید و تغییرات را ببینید.
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
❤4
20 سؤال تستی سطح متوسط پایان ترم زبان C با پاسخ
⦁ C چیست؟
⦁ گزینهها:
⦁ a) زبان برنامهنویسی سطح پایین
⦁ b) زبان برنامهنویسی سطح بالا
⦁ c) زبان برنامهنویسی سطح متوسط با کاربرد سیستممحور
⦁ d) زبان نشانهگذاری
⦁ پاسخ: c
⦁ کدام گزینه نحوه استفاده از متغیرها را در C تضمین میکند که مقدار اولیه بدهد؟
⦁ الف) اعلان extern
⦁ ب) اعلان static
⦁ ج) اعلان تعریف با مقداردهی اولیه
⦁ د) اعلان typedef
⦁ پاسخ: ج
⦁ کدام یک از دادههای زیر در C نوع داده اصلی برای کاراکتر است؟
⦁ الف) int
⦁ ب) char
⦁ ج) short
⦁ د) long
⦁ پاسخ: ب
⦁ عملگر شرطی به چه صورت عمل میکند؟
⦁ الف) if-else
⦁ ب) switch
⦁ ج) ?:
⦁ د) goto
⦁ پاسخ: ج
⦁ آیا عبارت زیر در C مجاز است: int a = 5, b = 10;؟
⦁ الف) بله
⦁ ب) خیر
⦁ پاسخ: الف
⦁ تعریف تابع با امضای غیر یکتا در چند تابع با نام یکسان در C چه نتیجهای دارد؟
⦁ الف) فرقی ندارد
⦁ ب) هر تابع باید امضای دقیق یکسان داشته باشد
⦁ ج) مجاز است اما با ارجاع پنهانی
⦁ د) تابع با امضاهای متفاوت نمیتواند همنام باشد
⦁ پاسخ: د
⦁ کدام یک از واژههای کلیدی برای جلوگیری از تغییر مقدار یک متغیر استفاده میشود؟
⦁ الف) mutable
⦁ ب) const
⦁ ج) static
⦁ د) volatile
⦁ پاسخ: ب
⦁ کدام ساختار برای اجرای حلقههای تکرار استفاده میشود؟
⦁ الف) if
⦁ ب) switch
⦁ ج) for، while، do-while
⦁ د) goto
⦁ پاسخ: ج
⦁ در C، مفهوم اشارهگر چیست؟
⦁ الف) متغیرهایی که مقدار آنان تغییر میکند
⦁ ب) آدرس یک متغیر در حافظه
⦁ ج) تابعی که مقدار بازمیگرداند
⦁ د) مجموعهای از متغیرها در یک ساختار
⦁ پاسخ: ب
⦁ مقداردهی به اشارهگر NULL چه معنایی دارد؟
⦁ الف) به معنای مقدار صفر است
⦁ ب) به معنای عدم مقداردهی است
⦁ ج) به معنای آدرس حافظه معتبر است
⦁ د) به معنای مقدار همیشه معتبر است
⦁ پاسخ: ب
⦁ کتابخانه استاندارد C چیست و برای چه کارکردی استفاده میشود؟
⦁ الف) <stdio.h> برای ورودی/خروجی
⦁ ب) <math.h> برای مثلثات
⦁ ج) <stdlib.h> برای مدیریت حافظه
⦁ د) همه موارد بالا
⦁ پاسخ: د
⦁ sizeof در C چه کاربردی دارد؟
⦁ الف) اندازه نوع دادهای را برمیگرداند
⦁ ب) طول رشته را میسنجد
⦁ ج) اندازه آرایههای داینامیک را مشخص میکند
⦁ د) سایز حافظه کل برنامه را میسنجند
⦁ پاسخ: الف
⦁ کدام گزینه نشاندهنده یک تابع بازگشتی صحیح است؟
⦁ الف) تابعی که خود را فراخوانی میکند
⦁ ب) تابعی که به صورت غیرمسطح فراخوانی میشود
⦁ ج) تابعی که خروجی ندارد
⦁ د) تابعی که تنها از طریق ماکروها کار میکند
⦁ پاسخ: الف
⦁ در C، آرایهها چگونه مقداردهی اولیه میشوند؟
⦁ الف) فقط با مقداردهی مستقیم
⦁ ب) با استفاده از braced initializer
⦁ ج) با استفاده از malloc
⦁ د) با استفاده از calloc
⦁ پاسخ: ب
⦁ پرچمهای هدف پیشپردازنده چه نقشی دارند؟
⦁ الف) شامل کردن فایلها با #include
⦁ ب) تعریف ماکروها با #define
⦁ ج) شرطی کردن بخشهای کد با #if
⦁ د) همه موارد بالا
⦁ پاسخ: د
⦁ تفاوت اصلی بین اشارهگر و مقدار چیست؟
⦁ الف) آدرس محل ذخیره مقدار است، نه مقدار itself
⦁ ب) مقدار همیشه ثابت است
⦁ ج) اشارهگر به هر نوع دادهای نمیتواند اشاره کند
⦁ د) هیچ تفاوتی وجود ندارد
⦁ پاسخ: الف
⦁ آیا امکان استفاده از متغیرهای داخلی در خارج از بلوک آن وجود دارد؟
⦁ الف) بله
⦁ ب) خیر
⦁ پاسخ: ب
⦁ خطای رایج در استفاده از scanf چیست؟
⦁ الف) فراموشی ampersand برای دریافت آدرس
⦁ ب) استفاده از فرمتهای منطبق با نوع داده
⦁ ج) عدم چک کردن خطاهای ورودی
⦁ د) همه موارد
⦁ پاسخ: د
⦁ رایجترین دستور برای بازگرداندن مقدار از تابع در C چیست؟
⦁ الف) return
⦁ ب) exit
⦁ ج) throw
⦁ د) break
⦁ پاسخ: الف
⦁ کدام هدر برای کار با ورودی/خروجی استاندارد استفاده میشود؟
⦁ الف) <stdio.h>
⦁ ب) <stdlib.h>
⦁ ج) <string.h>
⦁ د) <math.h>
⦁ پاسخ: الف
⦁ چه تفاوتی بین scanf و gets وجود دارد؟
⦁ الف) scanf ایمنتر است زیرا اندازهگیری میکند
⦁ ب) gets امن است چون اندازهگیری ندارد
⦁ ج) gets منسوخ است و امنیت ندارد، در مقابل scanf میتواند با دفرنس اندازهدهی امنتر باشد
⦁ د) هیچ تفاوتی ندارند
⦁ پاسخ: ج
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
⦁ C چیست؟
⦁ گزینهها:
⦁ a) زبان برنامهنویسی سطح پایین
⦁ b) زبان برنامهنویسی سطح بالا
⦁ c) زبان برنامهنویسی سطح متوسط با کاربرد سیستممحور
⦁ d) زبان نشانهگذاری
⦁ پاسخ: c
⦁ کدام گزینه نحوه استفاده از متغیرها را در C تضمین میکند که مقدار اولیه بدهد؟
⦁ الف) اعلان extern
⦁ ب) اعلان static
⦁ ج) اعلان تعریف با مقداردهی اولیه
⦁ د) اعلان typedef
⦁ پاسخ: ج
⦁ کدام یک از دادههای زیر در C نوع داده اصلی برای کاراکتر است؟
⦁ الف) int
⦁ ب) char
⦁ ج) short
⦁ د) long
⦁ پاسخ: ب
⦁ عملگر شرطی به چه صورت عمل میکند؟
⦁ الف) if-else
⦁ ب) switch
⦁ ج) ?:
⦁ د) goto
⦁ پاسخ: ج
⦁ آیا عبارت زیر در C مجاز است: int a = 5, b = 10;؟
⦁ الف) بله
⦁ ب) خیر
⦁ پاسخ: الف
⦁ تعریف تابع با امضای غیر یکتا در چند تابع با نام یکسان در C چه نتیجهای دارد؟
⦁ الف) فرقی ندارد
⦁ ب) هر تابع باید امضای دقیق یکسان داشته باشد
⦁ ج) مجاز است اما با ارجاع پنهانی
⦁ د) تابع با امضاهای متفاوت نمیتواند همنام باشد
⦁ پاسخ: د
⦁ کدام یک از واژههای کلیدی برای جلوگیری از تغییر مقدار یک متغیر استفاده میشود؟
⦁ الف) mutable
⦁ ب) const
⦁ ج) static
⦁ د) volatile
⦁ پاسخ: ب
⦁ کدام ساختار برای اجرای حلقههای تکرار استفاده میشود؟
⦁ الف) if
⦁ ب) switch
⦁ ج) for، while، do-while
⦁ د) goto
⦁ پاسخ: ج
⦁ در C، مفهوم اشارهگر چیست؟
⦁ الف) متغیرهایی که مقدار آنان تغییر میکند
⦁ ب) آدرس یک متغیر در حافظه
⦁ ج) تابعی که مقدار بازمیگرداند
⦁ د) مجموعهای از متغیرها در یک ساختار
⦁ پاسخ: ب
⦁ مقداردهی به اشارهگر NULL چه معنایی دارد؟
⦁ الف) به معنای مقدار صفر است
⦁ ب) به معنای عدم مقداردهی است
⦁ ج) به معنای آدرس حافظه معتبر است
⦁ د) به معنای مقدار همیشه معتبر است
⦁ پاسخ: ب
⦁ کتابخانه استاندارد C چیست و برای چه کارکردی استفاده میشود؟
⦁ الف) <stdio.h> برای ورودی/خروجی
⦁ ب) <math.h> برای مثلثات
⦁ ج) <stdlib.h> برای مدیریت حافظه
⦁ د) همه موارد بالا
⦁ پاسخ: د
⦁ sizeof در C چه کاربردی دارد؟
⦁ الف) اندازه نوع دادهای را برمیگرداند
⦁ ب) طول رشته را میسنجد
⦁ ج) اندازه آرایههای داینامیک را مشخص میکند
⦁ د) سایز حافظه کل برنامه را میسنجند
⦁ پاسخ: الف
⦁ کدام گزینه نشاندهنده یک تابع بازگشتی صحیح است؟
⦁ الف) تابعی که خود را فراخوانی میکند
⦁ ب) تابعی که به صورت غیرمسطح فراخوانی میشود
⦁ ج) تابعی که خروجی ندارد
⦁ د) تابعی که تنها از طریق ماکروها کار میکند
⦁ پاسخ: الف
⦁ در C، آرایهها چگونه مقداردهی اولیه میشوند؟
⦁ الف) فقط با مقداردهی مستقیم
⦁ ب) با استفاده از braced initializer
⦁ ج) با استفاده از malloc
⦁ د) با استفاده از calloc
⦁ پاسخ: ب
⦁ پرچمهای هدف پیشپردازنده چه نقشی دارند؟
⦁ الف) شامل کردن فایلها با #include
⦁ ب) تعریف ماکروها با #define
⦁ ج) شرطی کردن بخشهای کد با #if
⦁ د) همه موارد بالا
⦁ پاسخ: د
⦁ تفاوت اصلی بین اشارهگر و مقدار چیست؟
⦁ الف) آدرس محل ذخیره مقدار است، نه مقدار itself
⦁ ب) مقدار همیشه ثابت است
⦁ ج) اشارهگر به هر نوع دادهای نمیتواند اشاره کند
⦁ د) هیچ تفاوتی وجود ندارد
⦁ پاسخ: الف
⦁ آیا امکان استفاده از متغیرهای داخلی در خارج از بلوک آن وجود دارد؟
⦁ الف) بله
⦁ ب) خیر
⦁ پاسخ: ب
⦁ خطای رایج در استفاده از scanf چیست؟
⦁ الف) فراموشی ampersand برای دریافت آدرس
⦁ ب) استفاده از فرمتهای منطبق با نوع داده
⦁ ج) عدم چک کردن خطاهای ورودی
⦁ د) همه موارد
⦁ پاسخ: د
⦁ رایجترین دستور برای بازگرداندن مقدار از تابع در C چیست؟
⦁ الف) return
⦁ ب) exit
⦁ ج) throw
⦁ د) break
⦁ پاسخ: الف
⦁ کدام هدر برای کار با ورودی/خروجی استاندارد استفاده میشود؟
⦁ الف) <stdio.h>
⦁ ب) <stdlib.h>
⦁ ج) <string.h>
⦁ د) <math.h>
⦁ پاسخ: الف
⦁ چه تفاوتی بین scanf و gets وجود دارد؟
⦁ الف) scanf ایمنتر است زیرا اندازهگیری میکند
⦁ ب) gets امن است چون اندازهگیری ندارد
⦁ ج) gets منسوخ است و امنیت ندارد، در مقابل scanf میتواند با دفرنس اندازهدهی امنتر باشد
⦁ د) هیچ تفاوتی ندارند
⦁ پاسخ: ج
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
۵ نمونه سؤال از آرایهها (Arrays) در زبان ++C به همراه پاسخ و کد نمونه آوردهام. سطح سؤالات از مبتدی تا متوسط است.
✅ سؤال ۱: نمایش عناصر یک آرایه
صورت سؤال:
برنامهای بنویسید که ۵ عدد را در یک آرایه دریافت کرده و آنها را نمایش دهد.
پاسخ:
✅ سؤال ۲: محاسبه مجموع عناصر آرایه
صورت سؤال:
مجموع عناصر یک آرایه ۶ عضوی را محاسبه و چاپ کنید.
پاسخ:
✅ سؤال ۳: پیدا کردن بزرگترین عدد در آرایه
صورت سؤال:
برنامهای بنویسید که بزرگترین عدد یک آرایه را پیدا کند.
پاسخ:
✅ سؤال ۴: شمارش اعداد زوج در آرایه
صورت سؤال:
تعداد اعداد زوج موجود در یک آرایه را محاسبه کنید.
پاسخ:
✅ سؤال ۵: معکوس کردن آرایه
صورت سؤال:
برنامهای بنویسید که عناصر یک آرایه را به صورت معکوس چاپ کند.
پاسخ:
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
✅ سؤال ۱: نمایش عناصر یک آرایه
صورت سؤال:
برنامهای بنویسید که ۵ عدد را در یک آرایه دریافت کرده و آنها را نمایش دهد.
پاسخ:
#include <iostream> using namespace std; int main()
{ int a[5];
for(int i = 0; i < 5; i++)
{ cin >> a[i]; } for(int i = 0; i < 5; i++)
{ cout << a[i] << " "; }
return 0; } ✅ سؤال ۲: محاسبه مجموع عناصر آرایه
صورت سؤال:
مجموع عناصر یک آرایه ۶ عضوی را محاسبه و چاپ کنید.
پاسخ:
#include <iostream> using namespace std; int main()
{ int a[6], sum = 0; for(int i = 0; i < 6; i++)
{ cin >> a[i]; sum += a[i]; }
cout << "Sum = " << sum;
return 0;
} ✅ سؤال ۳: پیدا کردن بزرگترین عدد در آرایه
صورت سؤال:
برنامهای بنویسید که بزرگترین عدد یک آرایه را پیدا کند.
پاسخ:
#include <iostream> using namespace std; int main()
{ int a[5], max; for(int i = 0; i < 5; i++)
{ cin >> a[i]; } max = a[0];
for(int i = 1; i < 5; i++)
{ if(a[i] > max) max = a[i]; }
cout << "Max = " << max;
return 0;
} ✅ سؤال ۴: شمارش اعداد زوج در آرایه
صورت سؤال:
تعداد اعداد زوج موجود در یک آرایه را محاسبه کنید.
پاسخ:
#include <iostream> using namespace std; int main()
{ int a[7], count = 0; for(int i = 0; i < 7; i++)
{ cin >> a[i]; if(a[i] % 2 == 0)
count++; }
cout << "Even numbers = " << count;
return 0;
} ✅ سؤال ۵: معکوس کردن آرایه
صورت سؤال:
برنامهای بنویسید که عناصر یک آرایه را به صورت معکوس چاپ کند.
پاسخ:
#include <iostream> using namespace std;
int main()
{ int a[5];
for(int i = 0; i < 5; i++)
{ cin >> a[i]; } for(int i = 4; i >= 0; i--)
{ cout << a[i] << " "; }
return 0;
}برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
📌 جزوه خلاصه شب امتحان
مبانی برنامهنویسی با ++C
🔹 1. ساختار کلی برنامه در ++C
🔹 2. انواع دادههای مهم
نوع دادهحجم تقریبیint4 بایتfloat4 بایتdouble8 بایتchar1 بایت
🔹 3. عملگرها
ریاضی: + - * / %
مقایسهای: == != < > <= >=
منطقی: && || !
افزایش/کاهش: ++ --
📌 تفاوت مهم:
🔹 4. شرطها (if / else)
🔹 5. حلقهها (بسیار مهم)
🔸 for
🔸 while
🔸 do while
📌 تفاوت مهم: do while حداقل یکبار اجرا میشود.
🔹 6. دستورات کنترلی
break → خروج از حلقه
continue → رفتن به تکرار بعدی
return → خروج از تابع
🔹 7. آرایهها (پرتکرار)
📌 نکات مهم:
اندیس از 0 شروع میشود
آخرین اندیس = size - 1
🔹 8. رشتهها (string)
🔹 9. توابع
📌 مزایا:
کاهش تکرار
خوانایی بیشتر
استفاده مجدد
🔹 10. متغیرها
🔸 محلی
داخل تابع
مقدار اولیه نامشخص
🔸 سراسری
خارج از تابع
مقدار اولیه صفر
🔹 11. ارسال پارامتر
🔸 مقدار (Value)
🔸 مرجع (Reference)
🔹 12. ورودی و خروجی
🔹 13. برنامههای خیلی پرتکرار
✔ عدد اول
✔ فاکتوریل
✔ بزرگترین عضو آرایه
🔹 14. اشکالات رایج امتحانی ❌
استفاده از = بهجای ==
خروج از محدوده آرایه
فراموشکردن return 0;
استفاده از متغیر محلی بدون مقداردهی
🎯 جمعبندی طلایی شب امتحان
✔ حلقهها
✔ آرایه
✔ تابع
✔ شرطها
#flowgorithm
#فلوگوریتم
#الگوریتم #فلوچارت
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
مبانی برنامهنویسی با ++C
🔹 1. ساختار کلی برنامه در ++C
#include <iostream> using namespace std; int main() { // دستورات return 0; } 🔹 2. انواع دادههای مهم
نوع دادهحجم تقریبیint4 بایتfloat4 بایتdouble8 بایتchar1 بایت
🔹 3. عملگرها
ریاضی: + - * / %
مقایسهای: == != < > <= >=
منطقی: && || !
افزایش/کاهش: ++ --
📌 تفاوت مهم:
i++; // بعد از استفاده افزایش ++i; // قبل از استفاده افزایش 🔹 4. شرطها (if / else)
if (x > 0) cout << "Positive"; else cout << "Negative"; 🔹 5. حلقهها (بسیار مهم)
🔸 for
for(int i=0; i<5; i++) cout << i; 🔸 while
while(x > 0) { x--; } 🔸 do while
do { cin >> x; } while(x < 0); 📌 تفاوت مهم: do while حداقل یکبار اجرا میشود.
🔹 6. دستورات کنترلی
break → خروج از حلقه
continue → رفتن به تکرار بعدی
return → خروج از تابع
🔹 7. آرایهها (پرتکرار)
int a[5] = {1,2,3,4,5}; 📌 نکات مهم:
اندیس از 0 شروع میشود
آخرین اندیس = size - 1
🔹 8. رشتهها (string)
string name; cin >> name; cout << name; 🔹 9. توابع
int sum(int a, int b) { return a + b; } 📌 مزایا:
کاهش تکرار
خوانایی بیشتر
استفاده مجدد
🔹 10. متغیرها
🔸 محلی
داخل تابع
مقدار اولیه نامشخص
🔸 سراسری
خارج از تابع
مقدار اولیه صفر
🔹 11. ارسال پارامتر
🔸 مقدار (Value)
void f(int x) { x++; } 🔸 مرجع (Reference)
void f(int &x) { x++; } 🔹 12. ورودی و خروجی
cin >> x; cout << x; 🔹 13. برنامههای خیلی پرتکرار
✔ عدد اول
bool prime(int n) { if(n < 2) return false; for(int i=2; i<n; i++) if(n % i == 0) return false; return true; } ✔ فاکتوریل
int fact(int n)
{ int f = 1;
for(int i=1; i<=n; i++) f *= i;
return f;
} ✔ بزرگترین عضو آرایه
int max = a[0];
for(int i=1; i<n; i++) if(a[i] > max) max = a[i]; 🔹 14. اشکالات رایج امتحانی ❌
استفاده از = بهجای ==
خروج از محدوده آرایه
فراموشکردن return 0;
استفاده از متغیر محلی بدون مقداردهی
🎯 جمعبندی طلایی شب امتحان
اگر اینها را بلد باشی:
✔ حلقهها
✔ آرایه
✔ تابع
✔ شرطها
#flowgorithm
#فلوگوریتم
#الگوریتم #فلوچارت
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
🙏1
✅ 10 نمونه سوال پایان ترم مبانی برنامهنویسی با زبان C++ از کتاب جعفرنژاد قمی به همراه پاسخهای تشریحی کوتاه ارائه شده است:
▎سوال 1:
سوال: برنامهای بنویسید که مجموع اعداد صحیح از 1 تا N را محاسبه کند.
پاسخ:
این برنامه با استفاده از یک حلقه
---
▎سوال 2:
سوال: تابعی بنویسید که یک عدد صحیح را گرفته و بررسی کند که آیا این عدد اول است یا نه.
پاسخ:
این تابع با بررسی تقسیمپذیری عدد، تعیین میکند که آیا عدد اول است یا خیر.
---
▎سوال 3:
سوال: یک کلاس به نام
پاسخ:
کلاس
---
▎سوال 4:
سوال: برنامهای بنویسید که عناصر یک آرایه را معکوس کند.
پاسخ:
این برنامه با استفاده از تابع
---
▎سوال 5:
سوال: یک برنامه بنویسید که اعداد فرد و زوج را از 1 تا N جدا کند.
پاسخ:
برنامه اعداد فرد و زوج را با استفاده از دو حلقه جداگانه چاپ میکند.
---
▎سوال 6:
سوال: تابعی بنویسید که بزرگترین عدد را از میان سه عدد ورودی پیدا کند.
پاسخ:
این تابع با استفاده از تابع
---
▎سوال 7:
سوال: برنامهای بنویسید که فاکتوریل یک عدد را محاسبه کند.
پاسخ:
این برنامه از یک تابع بازگشتی برای محاسبه فاکتوریل استفاده میکند.
---
▎سوال 8:
سوال: یک برنامه بنویسید که رشتهای را دریافت کرده و تعداد حروف آن را شمارش کند.
پاسخ:
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
▎سوال 1:
سوال: برنامهای بنویسید که مجموع اعداد صحیح از 1 تا N را محاسبه کند.
پاسخ:
#include <iostream>
using namespace std;
int main() {
int N, sum = 0;
cout << "Enter a number: ";
cin >> N;
for (int i = 1; i <= N; ++i) {
sum += i;
}
cout << "Sum is: " << sum << endl;
return 0;
}
این برنامه با استفاده از یک حلقه
for مجموع اعداد از 1 تا N را محاسبه میکند.---
▎سوال 2:
سوال: تابعی بنویسید که یک عدد صحیح را گرفته و بررسی کند که آیا این عدد اول است یا نه.
پاسخ:
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i <= n / 2; ++i) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int number;
cout << "Enter a number: ";
cin >> number;
if (isPrime(number))
cout << number << " is prime." << endl;
else
cout << number << " is not prime." << endl;
return 0;
}
این تابع با بررسی تقسیمپذیری عدد، تعیین میکند که آیا عدد اول است یا خیر.
---
▎سوال 3:
سوال: یک کلاس به نام
Rectangle ایجاد کنید که طول و عرض را به عنوان ویژگیهای خود داشته باشد و متدهایی برای محاسبه مساحت و محیط مستطیل داشته باشد.پاسخ:
#include <iostream>
using namespace std;
class Rectangle {
public:
float length, width;
Rectangle(float l, float w) : length(l), width(w) {}
float area() {
return length * width;
}
float perimeter() {
return 2 * (length + width);
}
};
int main() {
Rectangle rect(5.0, 3.0);
cout << "Area: " << rect.area() << endl;
cout << "Perimeter: " << rect.perimeter() << endl;
return 0;
}
کلاس
Rectangle دارای متدهایی برای محاسبه مساحت و محیط است.---
▎سوال 4:
سوال: برنامهای بنویسید که عناصر یک آرایه را معکوس کند.
پاسخ:
#include <iostream>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n / 2; ++i) {
swap(arr[i], arr[n - i - 1]);
}
cout << "Reversed array: ";
for (int i = 0; i < n; ++i) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
این برنامه با استفاده از تابع
swap عناصر آرایه را معکوس میکند.---
▎سوال 5:
سوال: یک برنامه بنویسید که اعداد فرد و زوج را از 1 تا N جدا کند.
پاسخ:
#include <iostream>
using namespace std;
int main() {
int N;
cout << "Enter a number: ";
cin >> N;
cout << "Odd numbers: ";
for (int i = 1; i <= N; i += 2) {
cout << i << " ";
}
cout << "\nEven numbers: ";
for (int i = 2; i <= N; i += 2) {
cout << i << " ";
}
cout << endl;
return 0;
}
برنامه اعداد فرد و زوج را با استفاده از دو حلقه جداگانه چاپ میکند.
---
▎سوال 6:
سوال: تابعی بنویسید که بزرگترین عدد را از میان سه عدد ورودی پیدا کند.
پاسخ:
#include <iostream>
using namespace std;
int maxOfThree(int a, int b, int c) {
return max(max(a, b), c);
}
int main() {
int x, y, z;
cout << "Enter three numbers: ";
cin >> x >> y >> z;
cout << "Maximum is: " << maxOfThree(x, y, z) << endl;
return 0;
}
این تابع با استفاده از تابع
max بزرگترین عدد را پیدا میکند.---
▎سوال 7:
سوال: برنامهای بنویسید که فاکتوریل یک عدد را محاسبه کند.
پاسخ:
#include <iostream>
using namespace std;
int factorial(int n) {
if (n == 0) return 1;
return n * factorial(n - 1);
}
int main() {
int num;
cout << "Enter a number: ";
cin >> num;
cout << "Factorial is: " << factorial(num) << endl;
return 0;
}
این برنامه از یک تابع بازگشتی برای محاسبه فاکتوریل استفاده میکند.
---
▎سوال 8:
سوال: یک برنامه بنویسید که رشتهای را دریافت کرده و تعداد حروف آن را شمارش کند.
پاسخ:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cout << "Enter a string: ";
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
❤2
getline(cin, str);
cout << "Length of the string is: " << str.length() << endl;
return 0;
}
این برنامه از متد
length برای شمارش حروف رشته استفاده میکند.---
▎سوال 9:
سوال: کلاس
Student ایجاد کنید که نام و نمره دانشآموز را ذخیره کند و متدی برای نمایش اطلاعات آن داشته باشد.پاسخ:
#include <iostream>
using namespace std;
class Student {
public:
string name;
float score;
Student(string n, float s) : name(n), score(s) {}
void displayInfo() {
cout << "Name: " << name << ", Score: " << score << endl;
}
};
int main() {
Student student("Alice", 90.5);
student.displayInfo();
return 0;
}
این کلاس اطلاعات دانشآموز را ذخیره و نمایش میدهد.
---
▎سوال 10:
سوال: برنامهای بنویسید که اعداد فیبوناچی را تا N تولید کند.
پاسخ:
#include <iostream>
using namespace std;
void fibonacci(int N) {
int a = 0, b = 1, nextTerm;
for (int i = 1; i <= N; ++i) {
cout << a << " ";
nextTerm = a + b;
a = b;
b = nextTerm;
}
}
int main() {
int N;
cout << "Enter the number of terms: ";
cin >> N;
fibonacci(N);
return 0;
}
این برنامه با استفاده از یک حلقه، اعداد فیبوناچی را تولید و چاپ میکند.
برنامهنویسی را از اینجا شروع کنید👇
@flowchart_algorithm
❤2🔥2