Professional Documents
Culture Documents
سلسلة حلول تمارين كتاب بشير القائد -م- محمد دريبيكة PDF
سلسلة حلول تمارين كتاب بشير القائد -م- محمد دريبيكة PDF
وبعددد ،،بفضددم مددن ه كددان النجددا ال د ا حللتدده السلسددل األولددى مددن حلددوم تمددارين الكتدداب الملددرر ملدم د إلددى
البرمج بلغ سي للدكتور الفاضم بشير اللائد ،ها أنا أضع بين أيديكم باقي تلك السلسل والتي أبصدرت الندور
نتيج تفكير وبحث عميلين ،سائالً المولى ّ
عز وجم ّ أن يجعم ه ا العمم خالصا ً لوجهه الكريم .
للد كان التشجيع من الجميع دافعا ً وحافزاً ،كما كان النلد الب ّناء من خالم المالحظدات الل ّيمد مدن الدزمالء ومدن كدم
نعتز به كثيراً .
من قرأ السلسل األولى – والتي ع ّبرت رسائلهم إلينا – ك ّنا ّ
منهدا تحليدا أقصدى فائددم ولتكدون بمثابد نمدا ي يلتدد بهدا فدي ه ه السلسل تشدمم كدم هائدم مدن البدرامد الهدد
إعداد برامد مماثل في حياتك ،وستشمم ه ه السلسل في اللريب العاجم إن شاء ه شرو مفصل لكم تمرين.
إن طموحاتنا كبيرم وآمالنا عظيم وثلتنا باهلل بغير حدود ،ول لك فإننا نناشد كم صداحب قلدم أو فكدر مدن المهتمدين
والمختصين في مجام البرمجد أن يضدع يدده بديددينا لكدي نخدري أفكداراً وربمدا مالفدات إلدى الندور ونسداهم فدي سدد
العجز الهائم في ه ا المجام .
للد حاولت في ه ه السلسل أن أزيدم الحداجز النفسدي بدين عامد المسدتخدمين ولغدات البرمجد خاصد لغد Cالتدي
تعتبر أقو لغات البرمج للمحترفين على اإلطالا ،وال نطلب منك إالّ أن تعطينا الفرصد وتشداركنا عمليد تحويدم
المستخدم إلى مبرمد يصبح غيره مستخدما لما ينتجه .
بعض دا ً مددن مواهبددك ...ه د ا مددا فدددن تكددون منش د الشدديء ال مددن يسددتخدمه ...ه د ا مددا نرتضدديه لددك ،أن تكتش د
سنساعدك عليه .
المللي في ساح العطاء ...ه ا ما نصبوا إليه . موق أن تل
Page ii
احملتويات
.................................................................................................................... المحتويات
.................................................................................................................... المقدمة
i
إجابة الباب األول
حل تمارين كتاب " مقدمة إلى البرمجة بلغة سي" الطبعة الخامسة
إعداد م – محمد أحمد دريبيكة "مبرمج لغة سي" 298 4289787
)6اشرح ما هو المقصود بالمعرفات مع ذكر بعض منها . )6وضح الفرق بٌن كل من -:
long short
المعرف هو ذلك السم الذي ٌخزن به قٌم المتغٌرات متل التابت أو المتغٌر
أو الدالة . سعة التخزٌن حجمه 64بت حجمه 66بت
المدى -2147483648 to -32768 to
)3حدد صالحٌة أو عدم صالحٌة كل من التوابت اآلتٌة مع ذكر نوعها -: +2147483647 32767
)6عرف الكلمات المحجوزة مع ذكر تالث منها . ;int FLOAT صحٌح .
هً الكلمات التً ال ٌمكن استعمالها كمتغٌرات حتى ال تسبد رباك
غٌر صحٌح و ألن ٌ LONGجد أن
للمترجم أتناء تنفٌذ البرنامج
;LONG integer تكون باألحرف الصغٌرة حتى ٌتعامل
)(for - if - else
معها المترجم بالشكل الصحٌح .
;unsigned float x unsignedهو نوه من أنواه العدد
الصحٌح ولٌس العدد الحقٌقً .
)5ما هو المقصود بكلمة comment؟ ومتى ٌتم استخدامها مع عطاء ;char char1;char2 ٌجد أن توضع فاصلة غٌر منقوطة
بعض األمتلة على ذلك . بٌن المتغٌرٌن cha1,char2
هً أوامر اٌضاحٌة لٌس لها أي تأتٌر وال تعتبر جزء من البرنامج و
;double density صحٌح .
تستخدم لتسهٌل عادة قراءة البرنامج أو تعدٌله من قبل المبرمج و أو لشرح
وبٌان السبد وراء أي شًء تفعله و ٌبدأ التعلٌق بالرمزٌن (* )/وٌنتهً ;short way,to_go صحٌح .
بالرمزٌن (. )*/
)8
long float x and y ٌجد أن توضع فاصلة بٌن المتغٌرٌن x,yبدال من andو كما
ٌجد أن تضاف فاصلة منقوطة بنهاٌة الجملة .
;)char string(50 ٌجد أن ٌوضع طول السلسلة بٌن قوسٌن مربعٌن ].[50
)9اذكر ما هو الخطأ ذا كان هناك خطأ مع ذكر السبد لما ٌلً -:
كلنا ٌعلم بأن التعلٌق ٌبدأ بالرمز (* )/وٌنتهً بالرمز ( )*/و علٌه ٌنتهً التعلٌق عند كلمة ) )usingو
وبالتالً ٌكون الجزء الباقً ( )comment statement */هو غٌر معرف لذا المترجم .
هذا النوه من التعلٌقات ٌسمى التعلٌق بالسطر الواحد و فً حٌن أن التعلٌقات السابقة تسمى التعلٌقات
باألسطر العدٌدة و التعلٌق بالسطر الواحد دائما ٌبدأ بالرمزٌن //و تمت ضافة هذه الخاصٌة فً لغة C++
القٌاسٌة و الكتاد المقرر غٌر متطرق أبدا لهذا النوه من التعلٌقات .
) إجعل الحاسب يطبع اسمك كامال بداية من العمود التاسع والسطر1 : ) اكتب برنامجا لقراءة أطوال أضالع مستطيل مع حساب5 G
.السادس . محيطه = مجموع أطوال أضالعه
. العرضx مساحته = الطول G
#include<stdio.h>
main() #include<stdio.h>
{ main()
printf("\n\n\n\n\n\t mohamed"); {
} float l,w,x,y;
printf("Enter value of long and wide \n");
) المطلوب كتابة برنامج مهمته طباعة اسمك كامال في السطر2
scanf("%f%f",&l,&w);
وعمرك في السطر، وعنوانك في السطر السادس، الثالث
x=l+w+l+w;
. واحدة فقطprintf() الثامن باستخدام دالة
y=l*w;
#include<stdio.h>
printf("circumference = %.3f \n area = %.3f ",x,y);
main()
}
{
printf("\n\n Mohamed Drebika \n\n\n Tripoli -: ) أوصف ناتج اآلتي6
\n\n 25years”);
} ت المعادلة النتيجة
a printf(“a=%05d”,555); a=00555
) اكتب جمل اإلشهار المناسبة لرقم الدواء وسعره وتاريخ3
. صالحيته b printf(“b=%5s”,”abc”); b=bbabc
long number;
float cost; c printf(“c=%E”,23.68956); c=2.368956E+01
char date[15]; d printf(“d=%.2f”,23.63936); d=23.64
المطلوب قراءة هذه البيانات، )3( ) باستخدام االشهار بالتمرين4
e printf(“e=%.0f”,23.61234); e=24
. مع طباعتها بالشكل المناسب
#include<stdio.h> f printf(“f=%ld”,2368956); f=2368956
main()
{ g printf(“g=%d”,0<=!(9) ); g=1
long number; h printf(“h=%11.2f”,94.5678); h=bbbbbb94.57
float cost ;
char date[15] ; i printf(“i=%7.4f”,94.5377); i=94.5377
printf("Enter Serial No. of medicine\n"); j printf(“j=%2c”,’&’); j=b&
scanf("%ld",&number);
printf("Enter cost of medicine\n"); k printf(“k=%8d”,-4321); k=bbb-4321
scanf("%f",&cost) ;
l printf(“l=%d”,’A’>’a’); I=0
printf("Enter Expired date of medicine \n");
scanf("%s",&date); m printf(“m=%2c”,’&’); m=b&
n printf(“n=%f”,3456.4321); n=3456.432100
printf("Serial No. of medicine is %ld \ncost of
medicine is %f \nExpired date is %s”,number,cost
,date);
}
G
-: ) افحص األخطاء مع التصحيح إن وُ جدت في البرامج اآلتية7 G
a) b printf(“\nA*B===>%ld”,2000*1000);
قبل التصحيح بعد التصحيح
#include<sdio.h> الناتج A*B===>2000000
main() main() c printf(“\nSUB\nTRAC\nTION\n%d”,35-8);
{ {
int a,y,float b, SUB
int a,y; float b;
الناتج TRAC
scanf(“%D”;A); scanf(“%d”,&a);
TION
printf(“%f”,b); scanf(“%f”,&b); 27
printf(“/n/n”)y=A+b; printf(“\n\n”);y=a+b; d short M=-9;
printf(“A=%d , B= printf(“A=%d , B= printf(“\nM equal to %d”,-M);
%d, Y=%d,a,b,y”); %f, Y=%d”,a,b,y); الناتج M equal to 9
} }
،scanf() عن طريق الدالة55,66,5,6 ) بعد إدخال القيم9
b) واحدة ينتج عنها إظهار البياناتprintf () اكتب دالة
قبل التصحيح بعد التصحيح -: السابقة بالشكل اآلتي
#include<sdio.h> THE SUM OF 66 AND 55 = 121
main() main() THE PRODUCT OF 6 TIMES 5 IS EQUAL TO 30
{ {
#include<stdio.h>
int x, float y ,x; long X; float y ,x; main()
x=45.0; X=9876543; x=45.0; {
scanf(“A=%f” ,x); X=9876543; int a,b,c,d;
printf(“x+y=%d”,&x,&y); printf(“x=%f” ,x); scanf(“%d%d%d%d”,&a,&b,&c,&d);
} y=X+x; printf("THE SUM OF %d AND %d = %d \nTHE
printf(“x+X=%f”,y); PRODUCT OF %d TIMES %d IS EQUAL TO %d”
} ,b,a,a+b,d,c,c*d);
}
-: ) استخدم الورقة والقلم أوال ثم جهاز الحاسب ثانيا إليجاد الناتج اآلتي8
بحيث17-2-2011 ) اكتب برنامجا يقوم بإدخال التاريخ10
يتم قراءة اليوم والشهر والسنة بالمتغيرات
a printf(“\n%.0f plus %.2f <%.3f”,25.86,16.013,50.5662);
مع إظهارها بالصورة اآلتيةday,manth,yaer
our date is 17/2/2011
الناتج 26 plus 16.01 < 50.566
)10 ) أعــد كتابة البرنامج بالتمرين السابق عـلى أن تكون النتائج بالشكل التالي12 G
#include<stdio.h> -:
main() Student Report G
{ -----------------
int day,month,year; Id Number test_1 test_2 test_3 total avg
printf("Enter day month and year\n"); -------------------------------------------------------------------------------
scanf("%d %d %d",&day,&month,&year);
17022011 69.5 71.0 80.0 22.05 73.5
printf("out date is %d/%d/%d",day,month,year);
#include<stdio.h>
}
main()
{
) قم بكتابة برنامج يقوم باستقبال رقم قيد الطالب ودرجاته في11
long int ID;
-: ثالثة امتحانات التي قد تكون على النحو التالي
float test1,test2,test3,total,avg;
Student ID# is 17022011 printf("Enter student ID number\n");
Test1==>69.5 scanf("%ld",&ID);
Test2==>71.0 printf("Enter mark of first test please\n");
Test3==>80.0 scanf("%f",&test1);
Average==>7305 printf("Enter mark of second test please\n");
scanf("%f",&test2);
#include<stdio.h>
printf("Enter mark of third test please\n");
main()
scanf("%f",&test3);
{
total=test1+test2+test3;
long int ID;
float test1,test2,test3,avg;
avg=(total)/3;
printf("Enter ID number of student\n");
scanf("%ld",&ID);
printf("\t\tStudent Report\n");
printf("Enter mark of first test please\n");
printf("\t\t--------------\n");
scanf("%f",&test1);
printf("Id Number\ttest_1\ttest_2\ttest_3\ttotal\tAvg\n");
printf("Enter mark of second test please\n");
printf("--------------------------------------------\n");
scanf("%f",&test2);
printf("Enter mark of third test please\n");
printf("%8ld\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f",ID,test1,test2,
scanf("%f",&test3);
test3,total,avg);
}
avg=(test1+test2+test3)/3;
-: ) علي فرض أنك أعطيت اإلشهار بالشكل التالي13
printf("Student ID# is %ld\n",ID);
long a=-77665544; float b=765.56713;
printf("-----------------------\n");
int x=8764; char c= ‘R’ ;
printf("Test 1 ==> %.1f \n",test1); -: صف ناتج كل فقرة من الفقرات اآلتية
printf("Test 2 ==> %.1f \n",test2);
printf("Test 3 ==> %.1f \n",test3); a) printf(“\nA1=%9ld B1=%f”,a,b);
printf("Average ==> %.1f \n",avg);
} الناتجA1=-77665544 B1=765.567139
G
)13 مع إيجاد حاصلX,Y ) قم بكتابة برنامج مهمته قراءة قيمتين15
c) printf(“\nA3=%11ld B3=%10.3f”,a,b); -: جمعهما وضربهما على أن يكون الناتج بالصورة التالية G
a) scanf(“%f%d%c’,&X,&A,&C); #include<stdio.h>
printf(“\nX=%f A=%d C=%c”,X,A,C); main()
الناتج X=123.456444 A=77 C=c {
float c,f;
b) scanf(“%c%c%f”,&B,&C,&X,&A);
printf("Enter Value of F\n");
printf(“\nB=%3cC=%cX=%fA=%d”,B,C,X,A);
scanf("%f",&f);
الناتج B=bbbC=cX=123.456444A=77
c=5.0/9*(f-32);
c) scanf(“%ld%c%f”,&Y,&C,&X);
printf("C=%f",c),
printf(“Y=%ld X=%.0fC=%c”,Y,X,C);
}
الناتج Y=123456789 X=123C=c
d) scanf(“%ld%f”,&Y,&X);
printf(“\nY=%ld X=%f”,Y,X);
الناتج Y=123456789 X=123.456444
e) printf(“k-->%.0f”,23.689); k-->24
f) printf(“k-->%d”,0<!(-9)); k-->0
)2أوجد قٌمة المتغٌر Rلكل من التعابٌر اآلتٌة فً حالة -: إجابة تمرٌن رقم ()9
;int R,a=4,b=9,c=7 >#include<stdio.h
)(main
{
a) R=(b%a + ++a/2/2) %2 R=1 ;int n,weeks,days
;)"printf("Enter total number of Days \n
b) R=b*4%(b-a)<=1 R=1
;)scanf("%d",&n
)c R=++a+ b-- == (a* (a-2)) R=0 ;weeks=n/7
)d) R=a+a%b/ (b/5-1 divide error ;days=n%7
)e R=c++ % a + c/3 R=5 ;)printf("%d weeks and %d days",weeks,days
}
)f R=b+b/a-(c+ ++a)/2 R=4
)g R=a+(++b*a)%c*c-a R=35
>#include<stdio.h
)(main >#include<stdio.h
{ >#include<math.h
;float r,pi,A,B )(main
;pi=22.0/7
{
;)"printf("Enter value of R \n
;)scanf("%f",&r ;float n,b,y
;A=pi*r*r ;)"printf("enter value of b and y and n \n
;B=2*pi*r ;)scanf("%f %f %f",&b,&y,&n
;)printf("A=%5.3f \n B=%5.3f",A,B ;y=pow((y-b)/5,n)+b/3
}
)11اكتب برنامجا إلسناد اسم الطالب SOFYAN SOHIAB GAYEDإلى المتغٌر nameوعمره 4.5إلى ageثم اكتب دالة اإلخراج
المناسبة إلظهار هذه البٌانات بالشكل التالً -:
>#include<stdio.h
)(main
{
;"char name[]="SOFYAN SOHAIB GAYED
;float age=4.5
;)printf("Hi****%s****your age is %5.1f years old",name,age
}
)12اكتب برنامجا كامال لقراءة العجلة الثابتة Aوالزمن Tثم احسب المسافة Dوالسرعة النهائٌة Vحٌث -:
*D=0.5*A
V=AT
>#include<stdio.h
)(main
{
;float A,T,D,V
;)"printf("Enter Value of A and T\n
;)scanf("%f%f",&A,&T
;D=0.5*A*T*T
;V= A*T
;)printf("D=%5.2f V=%5.2f",D,V
}
if ((a>=b)&&(b>=c)) else
max=a+b; if(x==4||x==-4)
if((b>=c)&&(c>=a)) {
max=b+c; y=x*x;
if((c>=a)&&(a>=b)) printf("X=%d and X*X= %d\n",x,y);
max=c+a; }
if((a>=c)&&(c>=b)) else
max=a+c; printf("Sorry data out of range\n");
if((b>=a)&&(a>=c)) }
max=b+a; ) المطلوب كتابة برنامج مهمته استقبال رقم قٌد الطالب ودرجاته11
if((c>=b)&&(b>=a))
فً االمتحان األول والثانً والنهائً ثم ٌطبع رقم القٌد ومجموع
max=c+b;
-: ًدرجاته مع حالته استناداً على اآلت
printf("Max=%5.3f",max); الحالة الدرجة
} Fail 51 أصغر من
if ) مستخدما جملة4-5-4( ) أعد كتابة مثال9 Pass 65 وأصغر من51 أكبر من أو تساوي
#include<stdio.h> Good 75 وأصغر من65 أكبر من أو تساوي
main() V.Good 85 وأصغر من75 أكبر من أو تساوي
{ Exel. 111 وأصغر من أو تساوي85 أكبر من أو تساوي
int x,y;
#include<stdio.h>
printf("Enter Value Of X\n");
main()
scanf("%d",&x);
{
if(x==-6)
long int ID;
{
float test1,test2,final,total;
y=(x*x)-x;
printf("Enter ID number for student\n");
printf("X=%d and (x*x)-x= %d\n",x,y);
scanf("%ld",&ID);
}
printf("Enter marks of test1,test2 and final\n");
else
scanf("%f%f%f",&test1,&test2,&final);
if(x==1||x==5)
total=test1+test2+final;
{
y=(x*10)/2; printf("ID number of student is %ld\n",ID);
printf("X=%d and (X*10)/2= %d\n",x,y); printf("Total mark of student is %f\n",total);
} if (total<50) printf("Fail\n");
else else
if(x==2) if ((total>=50)&&(total<65)) printf("Pass\n");
{ else
y=x+x; if ((total>=65)&&(total<75)) printf("Good\n");
printf("X=%d and X+X= %d\n",x,y); else
} if ((total>=75)&&(total<85)) printf("V.Good\n");
else
if ((total>=85)&&(total<=100)) printf("Exel.\n");
}
√
x=
b { int x=11,y=9;
إذاx= موجبا وطباعة وطباعة الجذرٌن فً حالة التعبٌر if(x==11)
. كان التعبٌر صفرا وطباعة الرسالة المناسبة إذا كان غٌر ذلك if(y<x)
#include<stdio.h> printf("Yes User\n");
#include<math.h> else
main() printf("No User\n");
{ printf("Good Bye User\n");
float a,b,c,x1,x2; }
printf("Program to find roots of ax^2+bx +c \n"); ناتج البرنامجYes User
printf("enter value of a,b and c \n"); Good Bye User
scanf("%f %f %f", &a ,&b ,&c );
if((b*b-4*a*c)>0)
{
x1=(-b+ sqrt(b*b-4*a*c))/(2*a);
x2=(-b- sqrt(b*b-4*a*c))/(2*a);
printf("the roots of this equation is %5.2f and
%5.2f",x1,x2);
}
if((b*b-4*a*c)==0)
{
x1=x2=-b/2*a;
printf("the roots is equaly %5.2f %5.2f",x1,x1);
}
else
printf("Input Error!");
}
i=1; #include<stdio.h>
while(i<=n) main()
{ {
fact=fact*i;
if(i==1) int i,n,sum2;
printf("%.0f/%d!",x,i); printf("Enter Value of n\n");
else scanf("%d",&n);
printf("+%.0f/%d!",x,i); sum2=0;
i++;
} for(i=1;i<=n;i++)
} {
. for ) باستخدام جملة3( ) أعد كتابة حل تمرٌن4 if(i%2==0)
sum2=sum2-i;
a) sum1= 1+2+3+ ... + n
else
sum2=sum2+i;
#include<stdio.h>
main() }
{
printf("%d =",sum2);
int i,n,sum1;
printf("Enter Value of n\n");
for(i=1;i<=n;i++)
scanf("%d",&n);
{
sum1=0; if(i==1)
for(i=1;i<=n;i=i+1) printf("%d",i);
sum1=sum1+i; else
printf("%d =",sum1); if(i%2==0)
printf("-%d",i);
for(i=1;i<=n;i=i+1) else
{
printf("+%d",i);
if(i==1)
printf("%d",i);
else }
printf("+%d ",i); } حلول هذه المتسلسالت ٌتكون من حلقتٌن-: مالحظة
} . = لطباعة الناتج وعالمة ٌساوي-: األولى
}
. لطباعة مكونات المتسلسلة-: الثانٌة
الغرض من وجود حلقتٌن وذلك ألن المطلوب لٌس إٌجاد
. بل إٌجاد الناتج وطباعة شكل المتسلسلة، الناتج فحسب
#include<stdio.h> #include<stdio.h>
main() main()
{ {
int i,n,fact; int a,b,i,temp,sum=0;
float x,sum3; printf("Enter two numbers\n");
printf("Enter Value of x\n"); scanf("%d%d",&a,&b);
scanf("%f",&x); if(a>b)
{
printf("Enter Value of n\n"); temp=a;
scanf("%d",&n); a=b;
b=temp;
fact=1; }
sum3=0; if(a%2==0)
for (i=1;i<=n;i=i+1) a=a+1 ;
{ for(i=a;i<=b;i=i+2)
fact=fact*i; sum=sum+i*i;
sum3=sum3+x/fact; printf("Answer is %d",sum);
} }
printf("%.2f=",sum3);
) المطلوب كتابة برنامج ٌقرأ متغٌرٌن من النوع الصحٌح ثم ٌحسب قٌمة6
-: حٌثp
fact=1;
p=( )
for (i=1;i<=n;i=i+1)
do while , while ,for ) وذلك باستخدام جملn>m( فً حالة
{
fact=fact*i; for( ) باستخدام جملة
if(i==1)
#include<stdio.h>
printf("%.0f/%d!",x,i);
main()
else
{
printf("+%.0f/%d!",x,i);
int n,m,k,i;
}
long float fact1=1,fact2=1,p;
}
printf("Enter Value Of n\n"); scanf("%d",&n);
printf("Enter Value Of m\n"); scanf("%d",&m);
k=n-m;
if(k>0)
{
for(i=1;i<=n;i++)
fact1=fact1*i;
for(i=1;i<=k;i++)
fact2=fact2*i;
1 2 3 4 5
6 7 8 9 10
c) while( ) باستخدام جملة 11 12 13 14 15
for(a=1;a<=3;a++) a=1; 16 17 18 19 20
for(b=a;b<=5;b+=2) while(a<=3) 21 22 23 24 25
printf("a*b=%3d",a*b); {
b=a;
e) while() باستخدام جملة
while(b<=5)
{ for(i=1;i<=20;++i) i=1;
printf("a*b=%3d",a*b); if((i%5!=0) while(i<=20)
printf("\t%d",i); {
b+=2; else if((i%5!=0)
} printf("\t%d\n",i); printf("\t%d",i);
a++; else
} printf("\t%d\n",i);
ناتج البرنامج ++i;
a*b= 1 a*b= 3 a*b= 5 a*b= 4 a*b= 8 a*b= 9 a*b= 15 }
ناتج البرنامج
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
المطلوب تتبعه واستنتاج مخرجاته ،على فرض أن المتغٌرات b,aكانت )4أعد كتابة التمرٌن ( )2بدون استخدام جملة goto
لها القٌم اآلتٌة -:
>#include<stdio.h
a) a=3,b=4 b) a= 5,b=2
)(main
c) a=-2,b=-7 d) a= 6,b=6
{
;int x=6,y=2,z=3
)while ( z<x || x<y
)a a=3 b=4
{
الناتج 29 ;x+=2
;z+=3
)b a=5 b=2
;y++
الناتج 12 ;)printf("\n%d %d %d",x,y,z
)c a=-2 b=-7 }
;)"printf("\ngood bye user
الناتج 3 }
)d a= 6 b=6
)5المطلوب إٌجاد ناتج البرامج اآلتٌة أوال واعادة كتابتها ثانٌا
الناتج 114 باستخدام جملة forوبدون استخدام جملة continue
)a
ALL DONE )5اكتب برنامجا مستخدما فٌه جملة gotoوجملة ، ifثم استبدالها
مستعمال جملتً switch, while
تنفٌذ تمرٌن رقم )a( 5باستخدام جملة for
البرنامج التالً ٌطبع األعداد الفردٌة من 0إلى 21ثم ٌطبع
>#include<stdio.h
الرسالة Thank Youفً سطر جدٌد
)(main أوالً باستخدام جملة gotoوجملة if .i
{ >#include<stdio.h
;short i )(main
)for(i=4;i<=9;i++ {
{ ;int a=1
)no: if(a>30
;)printf("\nI=%d",i
;goto yes
)if(i==5 )if(a%2!=0
;)printf("\n%d",i*i ;)printf("%3d",a
} ;a++
;)"printf("\n\nALL DONE ;goto no
} ;)"yes: printf("\nThank You
}
ٌ -: atoiمىو ترؼشٌفها َفس انًهف انساتك ،نكُها ذمىو ترثذٌم )5انًطهىب كراتح تشَايح ٌمىو تُسخ انسهسهح S1فً انسهسح S2
انسشف فً انشفشج إنى ػذد صسٍر . int
strcpy(S1,S2);
puts("Enter string two");
puts(S1); gets(string2);
} result=strcmp(string1,string2);
فً سلسلة تمB,G,N ) أكتب برنامجا لحساب عدد الحروف4 if(result>0)
. ادخالها عن طرٌق لوحة المفاتٌح puts("positive");
#include<stdio.h>
#include<conio.h> if(result<0)
main() puts("negitive");
{ else
char ch[20]; puts("zero");
int c=0,b=0,g=0,n=0; }
while((ch[c]= getche()) != '\r') ) أكتب برنامجا ً لقراءة سلسلة حرفٌة حرفا ً حرفا ً ثم اطبع هذه6
{ ) مع إٌقاف البرنامج إذا تمascii( الحروف بما ٌقابلها بالشفرة
if(ch[c]=='B') )?( إدخال الرمز
b++; #include<stdio.h>
if(ch[c]=='G') #include<conio.h>
g++; main()
if(ch[c]=='N') {
n++; int i,c=0;
char *str ;
c++ printf("Enter Letters\n");
} while((str[c]=getche())!='?')
printf("number of B is %d\n",b); c++;
printf("number of G is %d\n",g); printf("\nAnswer is \n");
printf("number of N is %d\n",n); for(i=0;i<c;i++)
} {
فً هذا الباب، gets() ٌمكن حل هذا التمرٌن باستخدام الدالة printf("%d",*str);
سنتطرق للحل بأكثر من طرٌقة حتى نغطً تطبٌقات أغلب str++;
} توجد طرٌقة حل أخرى-: مالحظة
. الدوال المقررة لهذا الباب
} . لهذا التمرٌن بنهاٌة إجابة هذا الباب
for(i=0;i<c;i++)
#include<stdio.h> {
main() printf("%d",str[i]);
{ }
char *str1="aaabbb", }
*str2="bbbccc",
*str3="ccc";
if(strncomp(str2,str1,3)>0)
printf("\nstr2>str1"); )02( طريقة أخرى لحل تمرين رقم
else #include<stdio.h>
printf("\n str1 > str2"); #include<string.h>
if(strncomp(str2,str3,3)>0) main()
printf("\n str2>str3"); {
else int i,n;
printf("\n str3 > str2"); char letter[10],wanted ;
printf("Enter String\n");
}
ناتج البرنامجstr2>str1
gets(letter);
str3 > str2 n=strlen(letter);
printf("\nEnter wanted letter\n");
scanf("%c",&wanted);
وهذا، ) السؤال السابع عشر ٌحتاج إلى استدعاء دالة فرعٌة05
استدعاء الدوال، الموضوع لٌس من مواضٌع الباب السابع for(i=0;i<n;i++)
. مغطى بشكل جٌد فً الباب التاسع والعاشر والثانً عشر {
if(letter[i]==wanted)
حلول أخرى لبعض التمارين السابقة من هذا الباب printf("the letter is No.%d",i+1);
}
)2( طريقة أخرى لحل تمرين رقم }
#include<stdio.h>
#include<conio.h> )00( طريقة أخرى لحل تمرين رقم
main() #include<stdio.h>
{ #include<string.h>
int i,c=0; #include<ctype.h>
char *str ; main()
{
printf("Enter Letters\n");
int i,n;
while((str[c]=getche())!='?') char str[50] ;
c++;
printf("Enter String\n");
printf("\nAnswer is \n"); gets(str);
)for(i=1;i<=M;i++
هل المؤثر الشرطً ٌحل محل جملة if – elseدائما ً ؟
{
نعم ،بإمكانه أن ٌحل محل جملة if – elseدائما إذا ما وُ ضع ;)"printf("Enter number\n
بالطرٌقة الصحٌحة ٌ ،مكن استخدام مؤثر الفاصلة والقوسٌن ( ) فً ;)scanf("%d",&x
حالة وجود أكثر من جملة داخل جملة . if ;)"printf("Decimal\tHexadecimal\tOctal\tBinary\n
;)printf("%d\t%4X\t\t%4o\t",x,x,x
)5إذا ما أعطٌت الجمل : )for(j=1;j<=8;j++
;int result ,i=2,j=3,k=11 {
;’char x=’a’; y=’b’ , z=’c ;)'putchar( m&x ? '1' : '0
;x<<=1
)a ;result =i % j == I ? k : j 11 }
)b ;result=i*j == k-(j+i) ? x: k 97 ;)"printf("\n
}
)c ;result=y-1 != x ? k : j 3
}
)d ;result= --z == y++ ? i*k : i*j 22
)e ; result = z >= x + i ? z:x 99
)5إذا تم إشهار المتغٌرٌن b,aمن النوع الصحٌح و ُخصصت
)f ;result = k % (i+j) == 1 ? k>>1 : k>>1 5
لهما القٌم 79,90علً التوالً ،أوجد قٌم كل الفقرات اآلتٌة :
حرفا ثم25 ) المطلوب قراءة سلسلة حرفٌة ال ٌزٌد طولها عن9 #include<stdio.h>
: استدعاء دالتٌن #include<ctype.h>
. األولى مهمتها تحدٌد طول السلسلة main()
. الثانٌة طباعتها عكسٌا {
strlen(( ← من المفترض أن تكون طرٌقة الحل بدون استخدام الدلة char letter;
للقراءة حرفا بحرف ثم نحسب عددgetche( ) لذلك سنلجأ إلى الدالة void capital_small(char letter);
. هذه الحروف void small_capital(char letter);
#include<stdio.h> int is_punct(char letter);
باعتبار أن، 26 تم تحدٌد طول السلسة
#include<conio.h> int is_digit(char letter);
المترجم ٌضٌف فً نهاٌة كل سلسلة
main()
لذلك فإنه قد، \) تلقائٌا.( رمز النهاٌة
{ printf("Enter letter \n");
تم حجز مكان له فً الذاكرة
char string[26]; scanf("%c",&letter);
int strlong(int c); if(isupper(letter))
void reverse(char string[ ],int c); capital_small( letter);
int c=0; else
printf("Enter string\n"); small_capital(letter);
while((string[c]=getche())!='\r') printf("is this special symbol %d\n",is_punct(letter));
c++; printf("is this digital number %d\n",is_digit(letter));
printf("long of string is %d\n",strlong(c)); }
reverse(string,c); void capital_small(char ch)
} {
int strlong(int c) printf("%c\n",tolower(ch));
{ }
return (c>0 ? c : 0) ; void small_capital(char ch)
} {
void reverse(char string[ ],int c) printf("%c\n",toupper(ch));
{ c=c-1; }
for(int i=c ; i>=0 ; i--) int is_punct(char ch)
printf("%c",string[i]); {
} return ispunct(ch) > 0 ? . : 9 ;
}
) أكتب برنامجا ً إلدخال حرف عن طرٌق لوحة المفاتٌح9. int is_digit(char ch)
-: ًوباستخدام الدوال اعمل اآلت {
تحوٌل الحرف الكبٌر إلى حرف صغٌر return isdigit(ch) > 0 ? 1 : 0;
تحوٌل الحرف الصغٌر إلى حرف كبٌر }
) فً حالة كون الحرف المدخل رمزا.( ترجٌع قٌمة
ثم كتابة دالة مهمتهاnum ) اكتب برنامجا لقراءة عدد صحٌح99
ً) فً حالة كونه من النوع الرقم9( خاصا ً والرقم
أي العدد الذي ٌقبل القسمة على، إٌجاد وطباعة األرقام األولٌة
. num إلى9 الواحد وعلى نفسه فقط وذلك من
منN ) صمم برنامجا كامالً وظٌفته قراءة درجات لفصل به95 باستخدام المؤشرات
المطلوب استدعاء دالة تقوم بحساب متوسط درجات، الطالب
#include<stdio.h>
طلبة وإٌجاد أكبر درجة على أن تطبع المطالٌب بالدالة الرئٌسٌة
.باستعمال المتغٌرات الخارجٌة أوال وعن طرٌق المؤشرات ثانٌا main()
{
باستخدام المتغيرات الخارجية int i, n;
float mark,sum=0,avg,max=0;
#include<stdio.h> float maximum (float *max,float mark);
float avg,max=0; float average(float *avg,float sum,int n);
main()
{ printf("Enter number of student\n");
int i,n; scanf("%d",&n);
float mark,sum=0;
for(i=1;i<=n;i++)
int maximum (float mark);
int average(int n,float sum); {
printf("Enter mark of student No.%d\n",i);
printf("Enter number of student\n");
scanf("%f",&mark);
scanf("%d",&n);
maximum(&max,mark);
for(i=1;i<=n;i++) sum=sum+mark;
{ }
printf("Enter mark of student No.%d\n",i);
scanf("%f",&mark); average(&avg,sum,n);
printf("maximum =%f avg=%f",max,avg);
maximum(mark);
sum=sum+mark; }
} float maximum (float *max,float mark)
average(n,sum);
{
printf("%f %f",max,avg);
} if(mark>*max) *max=mark;
return 0;
int maximum (float mark) }
{ float average(float *avg,float sum,int n)
max=(mark>max)? mark : max ;
{
return 0;
} *avg=sum/n;
return 0;
int average(int n, float sum) }
{
avg= sum/n; -: ً) تتبع البرنامج اآلت96
return 0;
}
for(i=0;i<5;i++)
C[i]=A[i];
printf("K=%d",k); {
} sum+=*(ptr+i);
++b;
int use_fun(int N[ ][C])
}
{ return (c=sum/b);
for(i=0;i<R;i++) }
for(j=0;j<C;j++) ناتج البرنامجThe avg 12.50
if(N[i][j] %2 ==0)
{ ذات البعد الواحدmat ) اكتب برنامجا ً رئٌسٌا لقراءة مصفوفة01
N[i][j]=N[i][j] / 2; ثم ٌقوم باستدعاء الدالة بالصورة21 الٌزٌد عنsize حجمها
k+=N[i][j]; int max(int size , int mat[ ]) -: التالٌة
} . بحٌث ترجع بمتوسط القٌم الزوجٌة الموجبة
}
#include<stdio.h>
5 4 -5 13 main()
ناتج البرنامج -9 10 8 -3 { int max(int size,int mat[ ]);
17 -7 9 15 int i,size,mat[20],result;
k=36
b) printf("Enter size of array less than or equal 20\n");
scanf("%d",&size);
#include<stdio.h>
for(i=0;i<size;i++)
#define L 10
main() {
{ printf("\nEnter item No. %d\n",i+1);
int rat[L]={7,1,-4,2,9,7,3,-10,16,5}; scanf("%d",&mat[i]);
float ans,use_fun(int rat[ ]); }
ans=use_fun(rat); result=max(size,mat);
printf("\n The avg %.2f ",ans); printf("avg = %d",result);
return 0; }
}
int max(int size,int mat[ ])
float use_fun(int rat[ ])
{ { int i,sum=0,even=0 ;
int a,b,i,*ptr; for(i=0; i<size ;i++)
float c,sum; { if(mat[i] % 2 ==0 && mat[i] >=0 )
sum=b=0; {
ptr=rat; sum=sum+mat[i];
a=*ptr; even=even+1;
for(i=1;i<L;i++) }
if(*(ptr+i)>a) }
return sum/even;
}
ً من النوع الصحٌح فX ) اكتب برنامجا ً ٌبحث عن قٌمة08 )08( بقٌة إجابة تمرٌن رقم
، 21 ذات البعد الواحد التً طولها ال ٌزٌد عنLIST مصفوفة
if (found==1)
واطبع، موجودة فاطبع مكان وجودهاX فإذا كانت قٌمة
printf("it's at postion No. %d",i+1);
الرسالة التالٌة عند عدم وجودها
The value of X not found else
printf("The value of X not found");
#include<stdio.h> }
#include<process.h>
#define MAX 20
main()
{
int i,n,X,found;
int LIST[MAX];
for(i=0;i<n;i++)
scanf("%d",&LIST[i]);
for(i=0;i<=n;i++)
if(LIST[i] == X)
{
found=1;
break;
}
else
found =0;