آموزش برنامه نویسی به زبان ++C

این وبلاگ جهت آموزش برنامه نویسی به زبان ++C برای دانش آموزان دبیرستان فرزانگان ایجاد شده است.
يكشنبه, ۲۸ خرداد ۱۳۹۱، ۱۲:۴۱ ب.ظ

سوالات و پاسخ امتحان پایان ترم فرزانگان 4

به ادامه مطلب مراجعه کنید.

 

سوال 1

خروجی برنامه ­ی زیر به ازای ورودی یازده چه مقداریست؟

main()
{
    int x;
    int a;
    float b = 1.5;
    cin >> x;
    a = x / 2;
    a = b * a + x / b + 0.2;
    cout << a;
    
    getch();
}

خروجی این برنامه به ازای ورودی داده شده 15 می باشد. (محاسبات ساده ریاضی)

   

 

سوال 2

در برنامه­ های زیر در هر قسمت، دستورات داخل حلقه به ازای اولین ورودی چند بار و یا تا چه زمانی اجرا می ­شوند؟

 

الف)

main()
{
    int n;
    cin >> n;
    while(n > 0)
    {
        cout << n / 2 << endl;
    }
    getch();
}

به ازای یک ورودی مثبت بی نهایت بار ادامه خواهد داشت


 

ب)

main()
{
    int n;
    cin >> n;
    while(n > 1)
    {
        cout << n << endl;
        n = n / 2;
    }
    getch();
}

به تعداد توانهای 2 موجود در عدد ورودی اجرا خواهد شد. مثلا برای ورودی 1 ، یکبار اجرا خواهد شد و برای 2 و 3، دو بار و برای 4 و 5و 6و 7 سه بار و برای 8 و 9 و ... تا 15 چهار بار اجرا خواهد شد


 

ج)سه بار اجرا خواهد شد. ( ورودی ندارد)

main()
{
    int a, b, c;
    a = 12;
    b = 2;
    while(a>b)
    {
        a=a-b;
        b++;
        cout<<'*';
    }
    system("PAUSE");
    return 0;
}

فایل برنامه

 

سوال 3

خروجی برنامه زیر به ازای ورودی n برابر با 5 چیست؟ شکل رسم کنید:

 

#include <iostream>
#include <graphics.h>

using namespace std;

int main()
{
    int n;
    cin>>n;
    int x=150,y=150;
    initwindow(800,800);
    while(n>0)
    {
        setcolor(n);
        rectangle(x-50,50,x,y);
        x=x+10;
        n--;
    }
    system("PAUSE");
    return 0;
}

 

                             

 

ب) با استفاده از چه دستوری اشکال به رنگ های مختلف در می­ آیند؟

با استفاده از دستور setcolor مستطیل ها به رنگهای مختلف در می آیند. باید متغیر دستور را n قرار دهیم.

 

فایل برنامه

 

سوال 4

به برنامه­ ی زیر توجه کنید:

#include <iostream>

using namespace std;

int main()
{
    int sum=0,bet;
    int n=0;
    int num;
    cin>>num;
    
    while(num!=-1)
    {
        n++;
        sum=sum+num;
        bet=sum/n;
        cin>>num;
        
        if(num>bet)
            cout<<"A";
        else
            cout<<"B";
    }
    
    system("PAUSE");
    return 0;
}

الف) جدول اجرای برنامه بالا را به ازای ورودی های 2-4-6-2( به ترتیب از راست به چپ) رسم کنید:

                       

 

ب) مقدار متغیر bet در دور دوم اجرای حلقه چند است؟

با توجه به جدول بالا بسیار واضح است که در دور دوم اجرای حلقه مقدار متغیر bet به 3 می رسد.

 

ج) آخرین خروجی برنامه به ازای ورودی­ های داده شده در قسمت الف چیست؟

آخرین خروجی برنامه با توجه به جدول B می باشد.

 

د) این برنامه چه کاری را اجام می­­دهد؟ ( A و B به چه معنایی است؟)

با کمی دقت میتوان فهمید که این برنامه دائم از ورودی عدد میگیرد و هربار میانگین اعداد گرفته شده را حساب کرده و با عدد جدید گرفته شده از ورودی مقایسه میکند و اگر عدد جدید از میانگین اعداد قبلی بزرگتر بود حرف A را چاپ می کند. و اگر عدد جدید از میانگین اعداد قبلی کوچکتر بود حرف B را چاپ می کند. در واقع به جای A میتوان نوشت " عدد وارد شده از میانگین قبلی ها بزرگتر است" و به  جای B می توان نوشت" عدد وارد شده از میانگین قبلی ها کوچکتر است" .

 

فایل برنامه

 

سوال 5

برنامه ای بنویسید که یک عدد چند رقمی را دریافت و بزرگترین رقم آن را نمایش دهد.

#include <iostream>

using namespace std;

int main()
{
    cout<<"Please enter a number: ";
    int num;
    cin>>num;
    int max=-1,b;
    
    while(num>0)
    {
        b=num%10;
        if(b>max)
            max=b;
        num=num/10;
    }
    
    cout<<endl<<"biggest digit is : "<<max<<endl;
    
    system("PAUSE");
    return 0;
}

فایل برنامه

 

سئوال 6

 الف) برنامه ای با استفاده از حلقه  for  یا while  بنویسید که برای تمامی اعداد کوچکتر از عدد گرفته شده از ورودی چک کند که آیا شمارنده ی حلقه، مقسوم علیه عدد هست یا نه؟ و به مقدار یک متغیر که تعداد مقسوم علیه ها را می شمارد یکی اضافه کند.

مثلا برای عدد 6 به عنوان ورودی 1،2،3،4،5و 6 را چک کند و به ازای 1،2،3 هر بار یکی به شمارنده اضافه کند و دست آخر چاپ کند: 3 (تعداد مقسوم علیه ها به جز خودش)

 

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num,n=0;
    cin>>num;
    
    for(int i=1;i<num;i++)
    {
        if(num%i==0)
            n++;     
    }
    cout<<"tedade maghsum alayh ha= "<<n<<endl;
    
    system("PAUSE");
    return 0;
                   }

 

ب) کاری کنید که برنامه ی بالا در تعداد تکرارهای کمتری تعداد مقسوم علیه ها را بیابد. راهنمایی: شرط حلقه را تغییر دهید در واقع شرط هوشمندانه تری بیابید شاید لازم نباشد تا خود عدد گرفته شده از ورودی حلقه تکرار شود! یک مثال برای خودتان بزنید و سریع مراقب را صدا نکنید!!!

باید تا نصف عدد پیش برویم. یعنی شرط حلقه می شود

for(int i=1;i<num/2;i++)

 

ج) به برنامه ی بالا چند خط اضافه کنید و برنامه را به برنامه ای که یک عدد از ورودی می گیرد و می گوید اول است یا نه تبدیل کنید. راهنمایی: به سادگی می توان از تعداد مقسوم علیه ها به اول بودن پی برد!

 

با توجه به راهنمایی داده شده جواب سوال بسیار ساده است. به برنامه ی زیر دقت کنید!

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num,n=0;
    cin>>num;
    
    for(int i=1;i<num;i++)
    {
        if(num%i==0)
            n++;
            
    }
    if(n==1)
        cout<<"aval"<<endl;
    else
        cout<<"morakab"<<endl;
    
    system("PAUSE");
    return 0;
                   }

 

فایل برنامه

 

سوال 7

برنامه ای بنویسید که یک عدد چند رقمی دریافت کند و میانگین اعداد جایگاه های فرد آن را نمایش دهد؟

دقت کنید که برنامه ای سر کلاس نوشتیم که مجموع جایگاه های زوج را حساب می کند کار شما دو مرحله دارد تغییر بسیار کوچکی به برنامه دهید تا جایگاه های فرد را بیابد و تعداد جایگاه های فرد را نیز بشمارید.

#include <iostream>

using namespace std;

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num,n=0,b;
    float sum=0;
    cin>>num;
    
    while(num>0)
    {
        b=num%10;
        sum=sum+b;
        num=num/100;
        n++;
    }
    float avr;
    avr=sum/n;
    cout<<"average of odd numbers is= "<<avr<<endl;
    system("PAUSE");
    return 0;
}

 

فایل برنامه

 

سوال 9

برنامه­ ای بنویسید که یک عدد چند رقمی را از ورودی بگیرد و عدد را به شیوه ای که در زیر گفته می­شود رمز نگاری کند!

در این شیوه جای رقم اول و دوم عوض می­شوند. جای رقم سوم و چهارم عوض می­شوند. جای رقم پنجم و ششم عوض می­شوند... همین­طور تا آخرین رقم. ( اگر تعداد ارقام عدد فرد بود یک صفر بی ارزش پشت آخرین رقم بگذارید مثلا 100 به 0100 تبدیل می­شود)

نمونه­ ی ورودی اول: 234567

نمونه­ ی خروجی اول: 325476

نمونه­ ی ورودی دوم : 123(یا 0123)

نمونه­ ی خروجی دوم: 1032

 

#include <iostream>

using namespace std;

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num;
    cin>>num;
    int a,b,c,code=0;
    int r=1;        //zaribe 100
    while(num>0)    //har bar ruye 2 ragham kar mikonim
    {
        a=num%10;   //raghame aval
        num=num/10; //hazfe raghame aval az adad
        b=num%10;   //raghame dovom
        num=num/10; //hazfe raghame dovom
        c=a*10+b;   //sakhte adade 2 raghami ba raghame aval va dovom
        code=code+c*r;/*adade 2 raghami dar zaribe 100 zarb shode va
                        be moteghayere code ezafe mishavad*/
        r=r*100;    //zaribe badi sakhte mishavad
    }
    
    cout<<"ramze adade dade shode= "<<code<<endl;
    system("PAUSE");
    return 0;
}

 

فایل برنامه

 

سوال 9

در ریاضیات ما با اعداد ثابت بسیاری سروکار داریم . همه ی این اعداد صحیح نیستند و بسیاری از آن­ها از محاسبه­ ی روابط پیچیده که تا بی­نهایت ادامه خواهند داشت محاسبه می­ شوند.

رابطه­ ی زیر برای بدست آوردن عدد نِپِر استفاده می­شود.

حالا از شما می­خواهم برنامه ­ای بنویسید که عدد نپر را با دقت N ( که n را از ورودی دریافت می­کند) بدست آورد و حاصل را چاپ کند:

 

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{   cout<<"Please enter a number: "<<endl;
    int n;
    cin>>n;
    float p=1;
    float b,sum=0;
    
    for(int i=1;i<=n;i++)
    {
        p=p*i;
        b=1/p;
        sum=sum+b;
    }
    cout<<"neper = "<<sum<<endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

فایل برنامه

 

 



نوشته شده توسط سارا نازاری
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم

آموزش برنامه نویسی به زبان ++C

این وبلاگ جهت آموزش برنامه نویسی به زبان ++C برای دانش آموزان دبیرستان فرزانگان ایجاد شده است.

سوالات و پاسخ امتحان پایان ترم فرزانگان 4

يكشنبه, ۲۸ خرداد ۱۳۹۱، ۱۲:۴۱ ب.ظ

به ادامه مطلب مراجعه کنید.

 

سوال 1

خروجی برنامه ­ی زیر به ازای ورودی یازده چه مقداریست؟

main()
{
    int x;
    int a;
    float b = 1.5;
    cin >> x;
    a = x / 2;
    a = b * a + x / b + 0.2;
    cout << a;
    
    getch();
}

خروجی این برنامه به ازای ورودی داده شده 15 می باشد. (محاسبات ساده ریاضی)

   

 

سوال 2

در برنامه­ های زیر در هر قسمت، دستورات داخل حلقه به ازای اولین ورودی چند بار و یا تا چه زمانی اجرا می ­شوند؟

 

الف)

main()
{
    int n;
    cin >> n;
    while(n > 0)
    {
        cout << n / 2 << endl;
    }
    getch();
}

به ازای یک ورودی مثبت بی نهایت بار ادامه خواهد داشت


 

ب)

main()
{
    int n;
    cin >> n;
    while(n > 1)
    {
        cout << n << endl;
        n = n / 2;
    }
    getch();
}

به تعداد توانهای 2 موجود در عدد ورودی اجرا خواهد شد. مثلا برای ورودی 1 ، یکبار اجرا خواهد شد و برای 2 و 3، دو بار و برای 4 و 5و 6و 7 سه بار و برای 8 و 9 و ... تا 15 چهار بار اجرا خواهد شد


 

ج)سه بار اجرا خواهد شد. ( ورودی ندارد)

main()
{
    int a, b, c;
    a = 12;
    b = 2;
    while(a>b)
    {
        a=a-b;
        b++;
        cout<<'*';
    }
    system("PAUSE");
    return 0;
}

فایل برنامه

 

سوال 3

خروجی برنامه زیر به ازای ورودی n برابر با 5 چیست؟ شکل رسم کنید:

 

#include <iostream>
#include <graphics.h>

using namespace std;

int main()
{
    int n;
    cin>>n;
    int x=150,y=150;
    initwindow(800,800);
    while(n>0)
    {
        setcolor(n);
        rectangle(x-50,50,x,y);
        x=x+10;
        n--;
    }
    system("PAUSE");
    return 0;
}

 

                             

 

ب) با استفاده از چه دستوری اشکال به رنگ های مختلف در می­ آیند؟

با استفاده از دستور setcolor مستطیل ها به رنگهای مختلف در می آیند. باید متغیر دستور را n قرار دهیم.

 

فایل برنامه

 

سوال 4

به برنامه­ ی زیر توجه کنید:

#include <iostream>

using namespace std;

int main()
{
    int sum=0,bet;
    int n=0;
    int num;
    cin>>num;
    
    while(num!=-1)
    {
        n++;
        sum=sum+num;
        bet=sum/n;
        cin>>num;
        
        if(num>bet)
            cout<<"A";
        else
            cout<<"B";
    }
    
    system("PAUSE");
    return 0;
}

الف) جدول اجرای برنامه بالا را به ازای ورودی های 2-4-6-2( به ترتیب از راست به چپ) رسم کنید:

                       

 

ب) مقدار متغیر bet در دور دوم اجرای حلقه چند است؟

با توجه به جدول بالا بسیار واضح است که در دور دوم اجرای حلقه مقدار متغیر bet به 3 می رسد.

 

ج) آخرین خروجی برنامه به ازای ورودی­ های داده شده در قسمت الف چیست؟

آخرین خروجی برنامه با توجه به جدول B می باشد.

 

د) این برنامه چه کاری را اجام می­­دهد؟ ( A و B به چه معنایی است؟)

با کمی دقت میتوان فهمید که این برنامه دائم از ورودی عدد میگیرد و هربار میانگین اعداد گرفته شده را حساب کرده و با عدد جدید گرفته شده از ورودی مقایسه میکند و اگر عدد جدید از میانگین اعداد قبلی بزرگتر بود حرف A را چاپ می کند. و اگر عدد جدید از میانگین اعداد قبلی کوچکتر بود حرف B را چاپ می کند. در واقع به جای A میتوان نوشت " عدد وارد شده از میانگین قبلی ها بزرگتر است" و به  جای B می توان نوشت" عدد وارد شده از میانگین قبلی ها کوچکتر است" .

 

فایل برنامه

 

سوال 5

برنامه ای بنویسید که یک عدد چند رقمی را دریافت و بزرگترین رقم آن را نمایش دهد.

#include <iostream>

using namespace std;

int main()
{
    cout<<"Please enter a number: ";
    int num;
    cin>>num;
    int max=-1,b;
    
    while(num>0)
    {
        b=num%10;
        if(b>max)
            max=b;
        num=num/10;
    }
    
    cout<<endl<<"biggest digit is : "<<max<<endl;
    
    system("PAUSE");
    return 0;
}

فایل برنامه

 

سئوال 6

 الف) برنامه ای با استفاده از حلقه  for  یا while  بنویسید که برای تمامی اعداد کوچکتر از عدد گرفته شده از ورودی چک کند که آیا شمارنده ی حلقه، مقسوم علیه عدد هست یا نه؟ و به مقدار یک متغیر که تعداد مقسوم علیه ها را می شمارد یکی اضافه کند.

مثلا برای عدد 6 به عنوان ورودی 1،2،3،4،5و 6 را چک کند و به ازای 1،2،3 هر بار یکی به شمارنده اضافه کند و دست آخر چاپ کند: 3 (تعداد مقسوم علیه ها به جز خودش)

 

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num,n=0;
    cin>>num;
    
    for(int i=1;i<num;i++)
    {
        if(num%i==0)
            n++;     
    }
    cout<<"tedade maghsum alayh ha= "<<n<<endl;
    
    system("PAUSE");
    return 0;
                   }

 

ب) کاری کنید که برنامه ی بالا در تعداد تکرارهای کمتری تعداد مقسوم علیه ها را بیابد. راهنمایی: شرط حلقه را تغییر دهید در واقع شرط هوشمندانه تری بیابید شاید لازم نباشد تا خود عدد گرفته شده از ورودی حلقه تکرار شود! یک مثال برای خودتان بزنید و سریع مراقب را صدا نکنید!!!

باید تا نصف عدد پیش برویم. یعنی شرط حلقه می شود

for(int i=1;i<num/2;i++)

 

ج) به برنامه ی بالا چند خط اضافه کنید و برنامه را به برنامه ای که یک عدد از ورودی می گیرد و می گوید اول است یا نه تبدیل کنید. راهنمایی: به سادگی می توان از تعداد مقسوم علیه ها به اول بودن پی برد!

 

با توجه به راهنمایی داده شده جواب سوال بسیار ساده است. به برنامه ی زیر دقت کنید!

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num,n=0;
    cin>>num;
    
    for(int i=1;i<num;i++)
    {
        if(num%i==0)
            n++;
            
    }
    if(n==1)
        cout<<"aval"<<endl;
    else
        cout<<"morakab"<<endl;
    
    system("PAUSE");
    return 0;
                   }

 

فایل برنامه

 

سوال 7

برنامه ای بنویسید که یک عدد چند رقمی دریافت کند و میانگین اعداد جایگاه های فرد آن را نمایش دهد؟

دقت کنید که برنامه ای سر کلاس نوشتیم که مجموع جایگاه های زوج را حساب می کند کار شما دو مرحله دارد تغییر بسیار کوچکی به برنامه دهید تا جایگاه های فرد را بیابد و تعداد جایگاه های فرد را نیز بشمارید.

#include <iostream>

using namespace std;

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num,n=0,b;
    float sum=0;
    cin>>num;
    
    while(num>0)
    {
        b=num%10;
        sum=sum+b;
        num=num/100;
        n++;
    }
    float avr;
    avr=sum/n;
    cout<<"average of odd numbers is= "<<avr<<endl;
    system("PAUSE");
    return 0;
}

 

فایل برنامه

 

سوال 9

برنامه­ ای بنویسید که یک عدد چند رقمی را از ورودی بگیرد و عدد را به شیوه ای که در زیر گفته می­شود رمز نگاری کند!

در این شیوه جای رقم اول و دوم عوض می­شوند. جای رقم سوم و چهارم عوض می­شوند. جای رقم پنجم و ششم عوض می­شوند... همین­طور تا آخرین رقم. ( اگر تعداد ارقام عدد فرد بود یک صفر بی ارزش پشت آخرین رقم بگذارید مثلا 100 به 0100 تبدیل می­شود)

نمونه­ ی ورودی اول: 234567

نمونه­ ی خروجی اول: 325476

نمونه­ ی ورودی دوم : 123(یا 0123)

نمونه­ ی خروجی دوم: 1032

 

#include <iostream>

using namespace std;

int main()
{
    cout<<"Please enter a number: "<<endl;
    int num;
    cin>>num;
    int a,b,c,code=0;
    int r=1;        //zaribe 100
    while(num>0)    //har bar ruye 2 ragham kar mikonim
    {
        a=num%10;   //raghame aval
        num=num/10; //hazfe raghame aval az adad
        b=num%10;   //raghame dovom
        num=num/10; //hazfe raghame dovom
        c=a*10+b;   //sakhte adade 2 raghami ba raghame aval va dovom
        code=code+c*r;/*adade 2 raghami dar zaribe 100 zarb shode va
                        be moteghayere code ezafe mishavad*/
        r=r*100;    //zaribe badi sakhte mishavad
    }
    
    cout<<"ramze adade dade shode= "<<code<<endl;
    system("PAUSE");
    return 0;
}

 

فایل برنامه

 

سوال 9

در ریاضیات ما با اعداد ثابت بسیاری سروکار داریم . همه ی این اعداد صحیح نیستند و بسیاری از آن­ها از محاسبه­ ی روابط پیچیده که تا بی­نهایت ادامه خواهند داشت محاسبه می­ شوند.

رابطه­ ی زیر برای بدست آوردن عدد نِپِر استفاده می­شود.

حالا از شما می­خواهم برنامه ­ای بنویسید که عدد نپر را با دقت N ( که n را از ورودی دریافت می­کند) بدست آورد و حاصل را چاپ کند:

 

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{   cout<<"Please enter a number: "<<endl;
    int n;
    cin>>n;
    float p=1;
    float b,sum=0;
    
    for(int i=1;i<=n;i++)
    {
        p=p*i;
        b=1/p;
        sum=sum+b;
    }
    cout<<"neper = "<<sum<<endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

فایل برنامه

 

 

موافقین ۰ مخالفین ۰ ۹۱/۰۳/۲۸
سارا نازاری

نظرات  (۱۲)

سلام خانم خسته نباشید ممنون همه چیز خوب ومفیدبود بخصوص نمونه سوالا اما امتحان ما سخت تر بود تابستان خوبی داشته باشید
پاسخ:
بله! چون به نظر من شما خیلی باهوشید!
شما هم همین طور!
 سلام.خانوم چرا انقد امتحان مارو سخت تر دادین؟؟گفتین تقریبا مثل امتحان فرزانگان 6 سوال میدین...
وقتمونم یه ذره کم بود...با تشکر     
پاسخ:
چون شما باهوشید! خیلی!
خانوم سوال فرزانگان 6 خیلی گلابی تر بودااا 8 ما خیلی خیلی سخت بود.راستی سوال 2 قسمت ج 4 بار تکرار میشه ها من هزار بار تست کردم یبار با12-2 بعد با10-3 بعد8-4بعدم6-5
پاسخ:
جوابش هست دیگه! برنامشو اجرا کن تا ببینی!
وقتش کم بود، دیگه نرسیدیم چک کنیم...
پاسخ:
؟

 yani rasmannnnnnn MEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

KHANUM LOTFANNNNNNN ba dasto delbazi sahih konid!!!!

ma 4ia ke enghade khubimm!khodayi in tu delam gir kAarde!hal mikonid macheghadr khubim??cheghadr bamarefat??midunid chera?chon faghat az f4 baratun comment miad!deghat kardidd??

hala ke ma enghadr khubimmmmmmmmmmmmmmmmmm,khanum?????!!!!!!:((

like
خانم نازاری
کدوم مباحث کتابو اینجا رو بیشتر بخونیم؟؟
البته با توجه ب ضیق وقت میپرسمااا اگرنه که همه مباحث مهمن بعـــــــله...:)
سلام خانوم مثل اینکه امروز برگه های میان ترم و پخش کردن ولی خیلی ها متوجه نشدند میشه سوال و جواب هارو زود تر بذارین فردا امتحان داریم
khaaaaaaaaaaanooooooooooom nazariiiiiii mishe begiiiin az che mabahesi bishtar soal dadiiiiiiin aiiiiiiiiiiaaaaaaaaaaaaaa????????????????????????????????:S:(

آسان بود

خانم دهنتون سرویس :|

like

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی