هذه مجموعة من التمارين مع الحلول وهي ليست نهائية سنضيف اليها ما يستجد بإذن الله, والهدف من هذه المجموعة هو زيادة القدرات البرمجيّة لدى الدارس.
لأكبر استفادة من هذه التمارين يرجى الالتزام بالآتي: عدم قراءة الحل قبل أن تضني نفسك بالمحاولات... قراءة الؤال والجواب دفعة واحدة لن تفيد ابدا.
سين وجيم:
انواع المتغيرات والأوامر البسيطة
مستوى بسيط:
1. معطى رقمين a=2,b=5 , بشكل عام لكي نقوم بتبديل قيم المتغيرين فيما بينهما, نحتاج الى متغيّر مساعد بالشكل التالي:
Temp=a;
a=b;
b=temp;
قم بتبدي القيم لكن دون استخدام المتغير المساعد...
الجواب:
#include <stdio.h>
void main ( )
{
int a = 5 , b = 2;
a += b;
b = a - b;
a -= b;
printf ( "a = %d b = %d" , a , b );
}الحل بطريقة أخرى:
#include <stdio.h>
void main ( )
{
int a = 5 , b = 2;
a ^= b;
b ^= a;
a ^= b;
printf ( "a = %d b = %d" , a , b );
}2. القد مرّ منذ بداية اليوم k ثوانٍ .. ما هي الساعة الان بالضبط... مثلا : k=49635 الساعة ستكون : 13:47:15 .. أكتب برنامج يقرأ من المستخدم k ويطبع له الساعة الحالية (حسب ال k ).
#include <stdio.h>
void main()
{
long time;
int hour, minute, second;
printf ( "PUT TIME ( seconds )" );
scanf ( "%ld" , & time );
hour = time / 3600;
time %= 3600;
minute = time / 60;
second = time % 60;
printf ( "TIME = %d : %d : %d" , hour , minute , second );
}3. بواسطة الامر switch أكتب آلة حاسبة تقوم بالعمليات التالية : "+" , "-" ,"*" , "/".
على أن يقوم المستخدم بطباعة رقمين بينهما الاشارة, والبرنامج يعطي نتيجة العملية, مثلا :
الدخل : 1+9 الخرج 10.
الحل:
void main()
{
int firstNumber, secondNumber;
char sign;
printf ( "PUT: NUMBER SIGN NUMBER ( for example : 13 + 24 )n" );
scanf ( "%d%c%d" , & firstNumber, & sign , & secondNumber );
printf ( "%d %c %d = " , firstNumber, sign, secondNumber );
switch ( sign ) {
case '+' : printf ( "%dn" , firstNumber + secondNumber );
break;
case '-' : printf ( "%dn" , firstNumber - secondNumber );
break;
case '*' : printf ( "%dn" , firstNumber * secondNumber );
break;
case '/' : printf ( "%fn" , ( float ) firstNumber / secondNumber );
}
}تمارين بلا حلول في موضوع انواع المتغيرات والأوامر البسيطة
1. لديك رقم عدد حقيقي float a قم بنسخ القسم الصحيح من الرقم (الذي على يسار النقطة) في متغير int b وانسخ القسم الكسري (الذي عن يمين النقطة) الى المتغيّر float c , مثلا :
a=12.601
c=0.601
.b=12
2. إحسب الباقي من عملية قسمة a على b لكن دون استخدام الامر % .
3. معطى عدد ثلاثي الخانة (مكون من 3 خانات), أكتب برنامج يعطيك مجموع الخانات. مثلا : الرقم :157
النتيجة تكون 13 .
مستوى بسيط:
1.أكتب برنامج يحصل من المستخدم على رقم a (0
مثلا لو أن a =5 سنحصل على : 14 23 32 41 50 .
#include <stdio.h>
void main()
{
int a = 0 , i;
while ( a < 1 || a > 18 ) {
printf ( "PUT NUMBER [ 1 .. 18 ]n" );
scanf ( "%d" , & a );
}
for ( i = 10; i < 100; i ++ )
if ( i / 10 + i % 10 == a )
printf ( "%d " , i );
}2. متوالية fiboncci وهي تبدو كالتالي:
أي من العضوالثلث فصاعدا العضو يساوي مجموع العضوين السابقين. هكذا:
أكتب برنامج يقوم بطباعة أول 10 أعضاء في هذه المتوالية.
void main()
{
int i, a1 = 1, a2 = 1, temp;
printf ("1 1 ");
for ( i = 2; i <= 10; i++ ) {
temp = a1;
a1 = a2;
a2 += temp;
printf("%d ", a2);
}
}
#include <stdio.h>
1. معطى رقمين double a و int precision .
قم بعمليّة تقريب للعد a بدقّة precision ارقام بعد النقطة , مثلا:
a = 124.21429 و precision =4 النتيجة ستكون 124.2143 .
2. palindrome هو رقم أو كلمة اذا قرأناه من اليمين , ومن اليسار نحصل على نفس القرائة: مثلا:
1234321 أو abcdcba , معطى رقم موجب من نوع long إفحص هل هو palindrome .
4. معطى رقم صحيح موجب.. حلله الى عوامل أولية مثلا: 180=2*2*3*3*5
5. معطى رقم صحيح موجب long كم خانة مختلفة يوجد فيه:
يكفي لهذه المشاركة , وسنكمل في مشاركات قادمة.... للإستفسار يمكنكم الكتابة في هذا الموضوع...