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

برنامه های ساده

1-       برنامه‌ای بنویسید که طول و عرض مستطیلی دریافت کند و محیط و مساحت آن را چاپ کند.
2-       برنامه‌ای بنویسید که یک عدد دریافت کند و زوج و فرد بودن آن را گزارش کند. (حل این سوال را در مثال 2 از ساختار تصمیم را ببینید)
3-        برنامه ای بنویسید که یک زمان مشخص بر اساس ساعت، دقیقه و ثانیه دریافت کند و مشخص کند چند ثانیه از شروع روز گذشته است
4-       برنامه‌ای بنویسید که یک عدد دریافت کند و قدرمطلق آن را چاپ نماید.
5-       برنامه‌ای بنویسید که ضرایب یک معادله درجه دوم را دریافت کند و ریشه های معادله راچاپ کند. (حل این سوال را در مثال 4 از ساختار تصمیم را ببینید)
6-      برنامه‌ای بنویسید که سه ضلع یک مثلث را دریافت کند و مشخص کند مثلث متساوی الاضلاع، متساوی الساقین یا مختلف الاضلاع است
7-        برنامه‌ای بنویسید که یک عدد صحیح از ورودی دریافت و مشخص کند برای خورد کردن چنین مقدار پولی با سکه‌های یک تومانی، ۲ تومانی و ۱۰ تومانی به حداقل چه تعداد سکه نیازمندیم.  (مثلا اگر کاربر ۲۳ را وارد کرد باید در خروجی بنویسد دو سکه ۱۰ تومانی، یک سکه ۲ تومانی و یک سکه ۱ تومانی

چنانچه بدنبال حل سوالاتی هستید که در این نوشته وجود ندارد می‌توانید از طریق ایمیل (کلیک کنید) ، تلگرام (کلیک کنید) و یا واتس‌اپ (کلیک کنید) با ما در تماس باشید.

ساختار تکرار

8-       برنامه‌ای بنویسید که از ورودی عدد n  را دریافت کند و مجموع ۱ تا n  را محاسبه کند.
9-       برنامه‌ای بنویسید که از ورودی n  را دریافت کند و فاکتوریل آن را محاسبه کند.
10-       برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و بزرگترین آنها را چاپ کند
11 –      برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و دومین بزرگترین عدد را چاپ کند
12-      برنامه ای بنویسید که از ورودی 100 عدد دریافت کند و مشخص کند بزرگترین عدد چند بار تکرار شده است.

13-     برنامه‌ای بنویسید که معدل ۱۰۰ دانشجو از ورودی دریافت کند و بالاترین معدل مشروط شده را چاپ کند.
14-     برنامه‌ای بنویسید که نمره ۱۰۰ دانشجو از ورودی دریافت کند و میانگین نمرات بالای ۱۵ را محاسبه کند.
15-     برنامه‌ای بنویسید که نمره ۱۰۰ دانشجو از ورودی دریافت کند و میانگین نمرات بالای ۱۵ را محاسبه کند.

16-      برنامه‌ای بنویسید که یک عدد دریافت کند و تعداد ارقامش را چاپ کند.
17-      برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و مجموع ارقامش را چاپ کند.
18-      برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و بزرگترین رقمش را چاپ کند.

19-        برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و تعداد مقسوم علیه‌های آن را چاپ کند
20-        برنامه‌ای بنویسید که از ورودی یک عدد دریافت کند و مجموع مقسوم علیه‌های آن را چاپ کند
 21-        برنامه‌ای بنویسید که دو عدد از ورودی دریافت کند و مقسوم علیه های مشترک آنها را چاپ کند.
 22 –       برنامه‌ای بنویسید که دو عدد از ورودی دریافت کند و بزرگترین مقسوم علیه مشترک دو عدد را چاپ کند.
 23 –       برنامه‌ای بنویسید که از ورودی عدد n را دریافت کند و nامین جمله دنباله فیبوناچی را چاپ کند.
24-       برنامه بازی HOP را بنویسید.
دو عدد m  و n  را از خروجی دریافت کند و در خروجی اعداد ۱ تا n  چاپ می‌شود با این شرایط که به جای اعداد مضرب m ، کلمه HOP  چاپ شود. برای مثال برای n=9  و m=3  باید خروجی زیر چاپ شود.
1 2 HOP
4 5 HOP
7 8 HOP

برای خرید و دانلود سوالات 1 تا 35 با 15 درصد تخفیف کلیک کنید.

تابع

25-         تابع مربوط به محاسبه فاکتوریل یک عدد و تشخیص عدد اول را بنویسید
26 –       برنامه‌ای بنویسید که دو عدد a,b دریافت کند و حاصل a به توان b را محاسبه کند
 27 –       برنامه‌ای بنویسید که از ورودی یک عدد در مبنای 10 دریافت کند و آن عدد را به مبنای 2 ببرد
 28 –       برنامه‌ای بنویسید که از ورودی یک عدد در مبنای 2 دریافت کند و آن عدد را به مبنای 10 ببرد

29-          برنامه ای بنویسید که اعداد اول کوچکتر از 1000 را چاپ کند
 30-          برنامه‌ای بنویسید که 1399 امین عدد اول را چاپ کند.
 31 –         یک عدد جالب‌انگیز است،اگر مجموع فاکتوریل ارقام آن با خود عدد برابر باشد، به طور مثال: !۵ + !۴ + !۱ = ۱۴۵
                 برنامه ای بنویسید که مجموع تمام اعداد جالب‌انگیز کوچکتر از 1000 را چاپ کند.

 32 –         یک عدد جالب نامیده می‌شود، اگر حاصلضرب دو عدد دیگر باشد و در هر سه‌ی این اعداد هر رقم فقط یک بار ظاهر شود.
به طور مثال: ۷۲۵۴ = ۱۸۶ × ۳۹
همانطور که می‌بینید ۷۲۵۴ جالب است، زیرا ارقام ۱ تا ۹ در رابطه‌ی بالا هر کدام یکبار (فقط یک بار) ظاهر شده‌اند. برنامه ای بنویسید که مشخص کند که آیا یک عدد جالب است یا خیر

سوال 32 به همراه سه سوال بعدی که تحت عنوان سوال چالشی مطرح می‌شوند، سوالات بسیار خوبی هستند که با حل آنها دید بسیار مناسبی در روش حل مساله پیدا خواهید کرد

سوال چالشی

33-     پویا یک برنامه نوشته که اعداد یک تا پنج هزار را در خطوط مختلف چاپ می‌کند، البته متاسفانه دکمه اینتر لپ‌تاپ‌ش دچار مشکل شده و وقتی برنامه را اجرا کرد دید که برنامه تمامی اعداد ۱ تا n  را به ترتیب در یک خط چاپ کرده و در واقع یک عدد بسیار بزرگ تولید شده است (یعنی در خروجی عدد بسیار بزرگ …۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲۱۳ چاپ شده بود).
حال برای او سوال شده که k امین رقم سمت چپ این عدد بسیار بزرگ چیست؟ به او کمک کنید تا جواب را پیدا کند.

ورودی : در خط اول ورودی عدد k داده می‌شود.
خروجی: در خروجی رقم kام از چپ چاپ می‌شود.

مثال: اگر ورودی ۵ باشد باید در خروجی ۵ چاپ شود ، اگر ورودی ۱۰ باشد باید ۱ چاپ شود. و اگر ورودی ۱۱ باشد ۰ چاپ شود


34-     قبیله‌ی «گاوچران‌های بی‌ادعا» یک رئیس مقتدر به نام «عباسقلی» دارد. در پی فشارهای زیاد کاری که در این چند روز اخیر بر روی عباسقلی بود، او تصمیم گرفته تا آخر هفته به همراه اهل و عیال، راهی شهرستان خوش آب و هوای «جدولستان» شود.
جاده‌ای که به شهرستان جدولستان می‌رود، خود به صورت یک جدولِ  ۱×n است که در هر خانه‌ی آن یک عدد طبیعی نوشته‌شده. می‌گوییم این جاده دارای دست‌انداز است، اگر خانه‌ای در جدول وجود داشته باشد که عددِ آن از عدد دو خانه‌ی مجاورش اکیداً بیشتر باشد.

عباسقلی و اهل و عیال هم‌اکنون در خانه‌ی اول از این جدول قرار دارند و می‌خواهند به خانه‌ی آخر جاده برسند. آیا می‌توانید با گرفتنِ جاده‌ای که به شهرستان جدولستان می‌رود، بگویید که عباسقلی و خانواده‌اش می‌توانند تا آخر هفته در شهرستان جدولستان، در کنار هم جوج بزنند یا نه؟ توجه کنید ماشین عباسقلی قابل اعتماد نیست و در جاده‌هایی که دست‌انداز دارند، دچار نقص فنی می‌شود.

ورودی: در سطر اول ورودی، عدد طبیعی  n که نشان‌دهنده‌ی طول جاده‌ی جدولستان است، آمده. در سطر دوم به ترتیب n  عدد که نشان‌ دهنده‌ی مقدار نوشته‌شده در خانه‌های جاده‌ی جدولستان است، می‌آید.
خروجی: اگر عباسقلی و اهل و عیال می‌توانند به خانه‌ی آخر جدول برسند، عبارت Bah Bah! Ajab jooji!  و در غیر این صورت، عبارت Ey baba 🙁   را چاپ کنید.

ورودی نمونه ۱: ورودی نمونه ۲:
۵
۵ ۳ ۷ ۸ ۸
۳
۶ ۸ ۷
خروجی نمونه ۱ خروجی نمونه ۲
Bah Bah! Ajab jooji! Ey baba 🙁

35- آرش میخواهد در مسابقه‌ی برنامه‌نویسی که در ساعت 18:00 روز پنج‌شنبه برگزار می‌شود شرکت کند. این مسابقه 4 ساعت به طول خواهد انجامید و شامل n سوال است. سوالات به ترتیب آسان به سخت مرتب شده‌اند. یعنی سوال 1 ساده‌ترین سوال و سوال n سخت‌ترین سوال است.
آرش میداند که سوال iام، 5i دقیقه طول میکشد که بتواند حل کند.

از طرفی همان شب، عموی آرش جشنی در خانه‌ی خود ترتیب داده است. آرش میخواهد سر ساعت 10 یا زودتر به مهمانی برسد. اگر مدت زمان لازم برای رسیدن آرش به مهمانی از محل برگزاری مسابقه k دقیقه باشد، برنامه‌ای بنویسید که از ورودی n(تعداد سوالات)  و k(زمان لازم برای رسیدن آرش به جشن-به دقیقه-) را دریافت کند و حداکثر تعداد سوالاتی را که آرش فرصت میکند که حل کند را چاپ کند.

مثال: اگر ورودی n=3 و k=222 باشد:

مسابقه 3 مساله دارد و 222 دقیقه زمان نیاز است که آرش از مسابقه به جشن برسد. سه مساله به ترتیب به 5، 10 و 15 دقیقه زمان نیاز دارد که حل شوند.  آرش سوال اول و دوم را در15=10+5  دقیقه حل میکند. پس ساعت 18:15 مسابقه را ترک میکند و به طرف جشن حرکت میکند و ساعت 21:57 دقیقه (بعد از 222 دقیقه) به جشن میرسد. پس آرش دو سوال میتواند حل کند.
(توجه کنید که آرش نمیتوانست سوال 3 را حل کند، چون اگر حل کرده بود به جای ساعت 21:57، ساعت 22:12  به جشن میرسید.)

آرایه

36-         برنامه‌ای بنویسید که از ورودی 100 عدد دریافت کند و برعکس ترتیب ورودی اعداد را چاپ کند
37-         برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و مشخص کند چند تای آنها از میانگین ۱۰۰ عدد بزرگتر است.
38-         برنامه‌ای بنویسید که از ورودی نمره ۲۰ دانشجو دریافت کند و به همه دانشجویان چنان به طور مساوی نمره اضافه کند که بالاترین نمره ۲۰ شود.
39-          برنامه ای بنویسید که دو آرایه دریافت کند و مجموع دو آرایه را چاپ کند.
40-        برنامه‌ای بنویسید که یک آرایه از ورودی دریافت کند، سپس عددی از کاربر دریافت کند و آن عدد را در آرایه به صورت ترتیبی جستجو کند.
41-       برنامه ای بنویسید که یک آرایه مرتب از ورودی دریافت کند و سپس عدد دیگری از کاربر دریافت کند و آن عدد را در آرایه به صورت دودویی جستجو کند.
42-        برنامه ای بنویسید که یک آرایه از ورودی دریافت کند و به روش حبابی آرایه را به صورت صعودی مرتب کند.
43-       برنامه‌ای بنویسید که از ورودی نمره ۱۰۰ دانشجو دریافت کند. سپس عددی را که بیشترین بار تکرار شده است چاپ کند.
44-       برنامه‌ای بنویسید که ۱۰۰ عدد مثبت از ورودی دریافت کند (اعداد می‌توانند تکراری باشند) و در نهایت مشخص کند که هر عدد چند بار تکرار شده است.
45-         برنامه‌ای بنویسید که ۱۰۰ عدد از ورودی دریافت کند و فقط اعداد تکراری را نشان دهد
46-        برنامه‌ای بنویسید که از ورودی یک آرایه ۵۰ تایی دریافت کند. سپس یک آرایه ۵ تایی دریافت کند و تشخیص دهد آرایه دوم در آرایه اول وجود دارد یا خیر.
47-        برنامه‌ای بنویسید که یک آرایه ۱۰۰ تایی از ورودی دریافت کند. سپس عدد ۱۰۱ام را از ورودی بخواند و به گونه ای در آرایه قرار دهد که آرایه همچنان صعودی باشد.
48- برنامه ای بنویسید که دو آرایه 10 تایی (که به صورت صعودی مرتب هستند) را از ورودی دریافت کند و این دو آرایه را در هم چنان ادغام کند که آرایه نهایی نیز به صورت صعودی مرتب باشد
49-       برنامه ای بنویسید 100 عدد از ورودی دریافت کند و واریانس آنها را محاسبه کند
50-        برنامه ای بنویسید که یک آرایه از ورودی دریافت کند و تشخیص دهد که آرایه به صورت صعودی مرتب است یا خیر

برای خرید کد سوالات مربوط به آرایه (سوال 36 تا 50) به زبان ++C به قیمت 15,000 تومان کلیک کنید. ( توجه داشته باشید این محصول فقط شامل کد سی پلاس پلاس است. )

حل منتخب بعضی از سوالات

سوال 5

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double a,b,c;
	cin>>a>>b>>c;
	double delta=pow(b,2)-4*a*c;
	if (delta>0)
	{
		cout<<"2 answers:"<<endl;
		double x1=(-b+sqrt(delta))/(2*a);
		double x2=(-b-sqrt(delta))/(2*a);
		cout<<x1<<endl<<x2<<endl;
	}
	else if(delta==0)
	{
		cout<<"1 answers:"<<endl;
		double x1=(-b)/2*a;
		cout<<x1<<endl;
	}
	else
	{
		cout<<"No answer!"<<endl;
	}
	return 0;
}

سوال 10

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int main(){
	
	int i,x,max;
	
	cin>>x;
	max = x;
	
	for(i=2;i<=5;i++)
	{
		cin>>x;
		if(x>max)
			max = x;
	
	}
	
	cout<<max;
		
		
	getch();
	return 0;
}

سوال 16

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int main(){
	
	int x,counter=0;;
	
	cin>>x;
	
	while(x>0){
		x = x/10;
		counter ++ ;
	}
	
	cout<<counter;
			
		
	getch();
	return 0;
}

سوال 23

#include <iostream>

using namespace std;

int main(){
	
	int a,b,c,i,n;
	
	a=1;
	b=1;
	cin>>n;
	
	for(i=3;i<=n;i++){
		c=a+b;
		a=b;
		b=c;
	}
	
	cout<<c;

}

سوال 24

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int fact (int x);
bool isprime(int x);

int main(){
	
	cout<<isprime(5);
	getch();
	return 0;
}

int fact (int x){
	
	int f=1,i=1;
	for(i=1;i<=x;i++)
		f = f * i;
	return f;		
}

bool isprime(int x){
	int i;
	
	for(i=2;i<=x-1;i++)
		if(x%i == 0)
			return false;
			
	return true;		
}

سوال 34

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;


int main()
{
	int i,n,k,r;
	int sum = 0;
	
	cin>>n>>k;
	
	r = 240 - k;
	
	
	
	for(i=1;i<=n;i++){
		if(sum + (5*i) < r)
			sum = sum + (5*i);
		else
			break;
	}
	
	cout<<i-1;
	
	getch();
	return 0;

}


سوال 37

#include <iostream>
#include <conio.h>

using namespace std;

int main(){

    int const n = 10; 
    int i,A[n];
	double sum=0,avg;
    
    cout<<n<<" adad vared konid: ";
    for(i=0;i<n;i++){
	    cin>>A[i];
	    sum = sum + A[i];
    }
    
    avg = sum / n; //mohasebeye miangin adad
    
	cout<<"miangin = "<<avg<<endl;
	cout<<"Adadi ke az miangin bishtar hastand: "<<endl;    
	for(i=0;i<n;i++)
		if(A[i]>avg)
			cout<<A[i]<<" ";    


	getch();
	return 0;		
}


سوال 46

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
	int const n=10, m = 5;
	int i,j,A[n],B[m];
	
	cout<<"Enter Array A: ";
	for(i=0;i<n;i++)
		cin>>A[i];
	
	cout<<"Enter Array B: ";		
	for(i=0;i<m;i++)
		cin>>B[i];

	bool flag = false;
	
	for(i = 0 ; i<=n-m ; i++){
		for(j=0;j<m;j++)
			if(B[j] != A[i+j])
				break;
		if(j==m){
			flag = true;
			break;
		}				
	}
	
	if(flag == true)
		cout<<"vojood darad";
	else
		cout<<"vojood nadarad";	
	
		
	getch();
	return 0;	
}