حل تمرینات فصل 4 کتاب c جعفر نژاد قمی
نویسنده : محمد پارسایی | زمان انتشار : 14 اسفند 1400 ساعت 15:30
جهت انجام پروژه های دانشجویی و یا تمرینهای برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید
@AlirezaSepand
تمرینات فرد فصل 4
سوال 1
برای به کارگیری تابع در برنامه باید الگوی ان را در خارج از تابع () به کامپایلر اعلان کرد . الگوی تابع مشخص می کند که تابع چگونه فراخوانی میشود الگوی تابع نیز به صورت زیر مشخص می شود
(لیست پارامترها ) نام تابع ;
(لیست پارامترها ) نام تابع
}
:
:
دستور ان
{
ساختار تابع
سوال 3
هنگام فراخوانی تابع باید تعداد و نوع پارامترها و ارگومان ها یکسان باشد
سوال 5
به سه دسته تقسیم می شوند
1.هیچ مقداری را بر نمیگردانند
2.یک مفدار بر می گردانند
3چنرین مقدار بر می گردانند
سوال 7
منظور از برنامه نویسی ساخت یافته یعنی قابلیت های برنامه نویسی مختلفی که برای شما امکاناتی را فراهم می اورد دستور ها و داده ها را دسته بندی می کند و مستقیما ساخت حلقه های مختلفی از قبیل را تقویت می کند استفاده از در یک زبان ساخت یافته منع شده و رد گردیده
زبان های ساخت یافته عمدتا مدرن هستند در حقیقت یکی از نشانه ها ی یک زبان برنامه نویسی قدیمی ساحت یافته بودن ان است امروزه اغلب برنامه نویسان معتقدند که برنامه نویسی برننامه های ساخت یافته ساده تر است
امتیازات برنامه نویسی ساخت یافته عبارت است از
1.نوشتن
سوال 9
بازگشتی به مفهومی گفته می شود که در ان تابعی خودش را فرا خوانی میکند توابع می توانند به طور مستقیم یا غیر مستقیم خودشان را فراخوانی کنند .
سوال 11
=nتعداد اعدادفيبوناچي
=iشمارنده حلقه
#include
#include
int fibo(int);
int main()
{
Int n,i;
Clrscr();
Printf("\n please enter n:");
Scanf("%i", &n);
Printf("\n result is : ");
for(i=1;iPrintf("%8i",fibo(i));
getch();
return 0;
}
int fibo(int n)
{
If (n==1)
return (1);
If (n==2)
return (1);
return (fibo(n-2)+fibo(n-1));
سوال 13
= aعدداول
= bعدددوم
= cعددسوم
#include
#include
void read(void);
flaot average (float a, float b, float c);
{
Return ((a + B + c)/3);
}
int main()
{
Float a, b, c;
clrscr();
printf("enter a, b, c:");
scanf("%f%f%f", &a, &b, &c);
printf("result is %f", average(a, b, c));
}
سوال15
= aعدد اول
= nعدد دوم
= aپارامتر اول
= nپارامتر دوم
= mulحاصل توان
= iشمارنده
#include
#include
double pow(double a, int n)
{
int i;
double mul = 1.0;
if( n > 0 )
{
for( i=1; imul *=a;
return mul;
}
else
{
for( i= -n; I >= 1; i--)
mul *=1 / a;
return (mul);
}
}
int main()
}
int n;
double a;
clrscr; ()
printf("\n Enter a, n:");
scanf("%f%i", &a, &n) ;
f=(c*1.8)+32;
printf("\n result is %f", pow(a, n));
return 0;
}
تمرینات زوج فصل 4
تمرینات فصلچهارم:
2ـ روش كار تابع را توضيح دهيد.(مگانيزم فراخواني وبرگشت)
وقتي تابعي، توسط تابع ديگر ي فراخواني ميشود، دستورات آن تابع اجرا مي شود. پس از اجراي دستورات تابع، كنترل اجراي برنامه به برنامه فراخوان بر ميگردد. پس از بازگشت از تابع فراخواني شده، اولين دستور بعد از فراخواني تابع (در تابع فراخوان) اجرا ميشود.
با فراخواني تابع دستورات آن تابع اجرا ميشوند و پس از اجراي تابع، كنترل به برنامه اصلي بر ميگردد. هر تابع مي تواند چندين بار فراخواني شود.
4ـ جنبه هاي مختلف يك تابع را نام ببريدو توصيف كنيد.
هر تابع داراي دو جنبه است، جنبه تعريف و جنبه فراخواني آن. جنبه تعريف تابع، مجموعه اي از دستورات است كه عملكرد تابع را مشخص ميكند و جنبه فراخواني تابع، دستوري است كه تابع را فراخواني مي كند. فراخواني تابع با نام آن انجام مي شود. نامگذاري براي تابع، از قانون نامگذاري براي متغيرها تبعيت ميكند. توابع را بايد بعد از تابع main() نوشت.
6ـچه تفاوتي بين آرگومان و پارامتر وجود دارد؟
پارامترها اطلاعاتي هستندكه هنگام فراخواني تابع، از برنامه فراخوان به آن ارسال مي شود. به عبارت ديگر، پارامترها وسيله اي براي تبادل اطلاعات بين تابع فراخوان و فراخواني شده هستند.اگر تعداد پارامترها بيش از يكي باشد، بايد با كاما از هم جدا شوند.در ليست پارامترها، نوع هر يك از پارامترها نيز مشخص مي شود.
آرگومان اطلاعاتي است كه هنگام فراخواني تابع، در جلوي نام تابع (در داخل پرانتز) ظاهر ميشوند،
8- كلاس هاي حافظه چه امتيازاتي مي توانند داشته باشند؟ انواعكلاس هاي حافظه را درcتشريح كنيد.
كلاس هاي حافظه، ويژگيي از متغير است كه 2 چيز را در مورد متغير مشخص ميكند:
1- حوزه متغير (scope)
2- طول عمر متغير (life time)
منظور از حوزه متغير اين است كه، يك متغير در چه جاهايي از برنامه قابل دستيابي است. به عبارت ديگر، كلاس حافظه متغيري مثل X ، مشخص ميكند كه اين متغير در چه جاهايي از برنامه قابل استفاده است و در چه جاهايي نمي توان از آن استفاده كرد. منظور از طول عمر متغير، مدت زماني است كه متغير در حافظه وجود دارد. به عبارت ديگر، متغير كي به وجود مي آيد و كي از بين ميرود.
4 نوع در ز قابل استفاده است كه عبارت انداز:
1- كلاس حافظه اتوماتيك
2- كلاس حافظه ثبات
3- كلاس حافظه استاتيك
4- كلاس حافظه خارجي
براي تعيين كلاس حافظه براي متغير ها به صورت زير عمل ميكنيم:
;نام متغير >نوع متغير >
كلاس حافظهاتوماتيك:
متغير هايي كه در داخل تابعي تعريف مي شوند، با فراخواني تابع ايجاد ميشوند و با خاتمه اجراي تابع از بين مي روند. اين متغيرها را متغيرهايي با كلاس حافظه اتوماتيك گويند، زيرا هنگام ورود به تابع به طور اتوماتيك ايجاد ميشوند و هنگام خروج از تابع به طور اتوماتيك از بين ميروند.براي تعيين كلاس حافظه اتوماتيك ، از كلمه كليدي auto استفاده ميشود.
و داراي ويژگي هاي زير است:
1- فقط در همان تابعي كه تعريف ويشود قابل استفاده است( حوزه متغير)
2- با فراخواني تابع حافظه به آنها اختصاص مي يابد (به وجود مي آيد) و با خاتمه اجراي تابع ، از بين ميرود.(طول عمر متغير)
كلاس حافظه ثبات:
كلاس حافظه ثابت، به كامپايلر پيشنهاد ميكند كه متغير اتوماتيك را در ثبات پردازنده (CPU) قرار دهد. بنابراين ، حوزه و طول عمر متغيرهاي كلاس حافظه ثبات مثل اتوماتيك است. براي تعيين كلاس ثبات از كلمه كليدي register استفاده مي گردد.
و داراي محدوديت هاي زير است:
1- فقط براي متغير هاي محلي قابل استفاده است.
2- انواع كاراكتر، صحيح و اشاره گر مي توانند با كلاس حافظه ثبات تعريف شوند. در مورد ساير انواع بايد به مستندات كامپايلري كه از آن استفاده مي كنيد، مراجعه نماييد.
3- چون تعداد ثبات پردازنده محدود است ، تعداد اندكي از متغيرها مي توانند با اين كلاس حافظه تعريف شوند.
4- آدرس متغيرهايي با كلاس حافظه ثبات ، معني ندارد.
كلاس حافظهاستاتيك:
متغيرهاي استاتيك به دو دسته تقسيم ميشوند: 1- متغيرهاي استاتيك محلي 2- متغيرهاي استاتيك عمومي. متغيرهاي استاتيك محلي در داخل تابع و متغيرهاي استاتيك عمومي در خارج تابع تعريف ميشوند. مقدار اوليه متغيرهاي استاتيك محلي و متغيرهاي استاتيك عمومي صفر است.
كلاس حافظه خارجي:
متغيرهايي كه در خارج از توابع تعريف مي شوند (متغيرهاي عمومي) داراي كلاس حافظه خارجي اند. ويژگي هاي اين متغيرها عبارتند از:
1- با شروع اجراي برنامه ايجاد شوند و تا پايان اجراي برنامه حضور دارند (طول عمر).
2- در سرتاسر برنامه قابل استفاده اند ( حوزه متغير).
10ـ برنامه اي بنويسيد كه عددي را ازورودي خوانده به كمك تابع بازگشتي، شمارش معكوس از آن عدد به يك را انجامدهد.(شماره ها را در خروجي چاب كند)
=nعدد ورودي
#include
#include
void reverse(int n)
{
If (n==0) return;
else
{
Printf("%i ", n--);
reverse(n);
}
}
int main()
{
Clrscr();
Printf("\n enter n:");
Scanf("%i", &n);
Printf("\n result is ");
reverse(n);
}
12ـ برنامه اي بنويسيد كه فاصله اي را برحسب فوت و اينچ دريفت كرده، معادل آنرا برحسب متر و سانتي متر بيان كند. هرفوت 3048/0 متر و هر متر 100 سانتي متر و هر فوت 12 اينچ است. حداقل از 3تابع استفاده كنيد. يكي براي ورودي ، يكي براي انجام محاسبات ، و يكي برايخروجي.
:foot فوتc_m: سانتيمتر
foot_to_cm : فوت بهسانتيمترin_to_m: اينچ به متر
in_to_cm:: اينچ بهسانتيمترfoot_to_m : فوت به متر
:inاينچ
#include
#include
void read(void);
viod calculate(void);
void write(void);
flaot foot,in,foot_to_m,in_to_m;
float c_m,foot_to_cm,in_to_cm;
int main()
{
clrscr();
read();
calculate();
write();
getch();
return 0;
}
void read(void);
{
printf("\n foot? ");
scanf("%f",&foot);
printf("\n in? ");
scanf("%f",&in);
}
viod calculate(void);
{
foot_to_m=0/3048*foot;
foot_to_cm=100*foot_to_m;
in_to_m=(flaot)(1.0/12)*0/3048*in;
in_to_cm=100* in_to_m;
}
void write(void);
{
printf("\n the %f foot is %f m",foot, foot_to_m);
printf("\n the %f foot is %f cm",foot, foot_to_cm);
printf("\n the %f in is %f m",in,in_to_m);
printf("\n the %f in is %f cm",in,in_to_cm);
}
14ـ برنامه اي بنويسيد كه دماي هوا رابرحسب سانتيگراد خوانده به تابعي تحويل دهد و تابع آن را به درجه فارنهايتتبديل كردهبرگرداند.
16ـ برنامهای بنویسید که دو عدد اعشاريرا از ورودي خوانده به تابعي ارسال كند. تابع تفاضل حاصلضرب و حاصل تقسيمآنها را محاسبه كرده، به برنامه ارسال كند.
=aعدد اول
=bعدد دوم
#include
#include
float result(float a, float b)
{
return (a * b - a / b);
}
int main()
{
float a, b = 0;
while(b==0)
{
clrscr();
printf("\n enter a, b:");
scanf("%f%f",&a, &b);
}
printf("result is %f",result(a,b));
}
+ نوشته شده در دوشنبه ۱۳۹۱/۰۶/۲۷ ساعت 10:59 توسط SM.Sajadi |
منبع: smsajjadi66.blogfa.com