ForumTek
Would you like to react to this message? Create an account in a few clicks or log in to continue.

ForumTek

ForumTek Güncel Paylaşım Sitesi.
 
AnasayfaLatest imagesAramaKayıt OlGiriş yap

 

 C Programlama Dersi - VII

Aşağa gitmek 
YazarMesaj
ForumTek
Administrator
Administrator
ForumTek


Mesaj Sayısı : 852
Kayıt tarihi : 09/06/10
Yaş : 53
Nerden : TümTürkiye

C Programlama Dersi - VII Empty
MesajKonu: C Programlama Dersi - VII   C Programlama Dersi - VII EmptyCuma Haz. 11, 2010 6:47 pm

Şimdiye kadar işlemiş olduğumuz dersleri pekiştirmek için, bu yazıda örnek sorular çözeceğiz. Soruların hazırlanmasında, arkadaşım Sunay SÖNMEZ'in büyük emeği geçmiştir. Kendisine teşekkür ederim.

Örnek Sorular
Soru 1.a: Aşağıdaki programın çıktısı nedir? Soru 1.b: Aşağıdaki programı doğru olarak yazınız.
#include<stdio.h>
int main( void )
{
int i = 0;
for( ; i < 12; i++ ) {
if( ( i++ + 1 ) == 5 )
printf( "%d\n",i );
else
if( i % 2 == 0 ) break;
else if( i % 3 == 0)
continue;
else
printf("%d\n", i );
}
return 0;
}
#include<stdio.h>
int main( void )
{
int sum;
float average;
int weight_1, weight_2;
printf( "1.agirlik> " );
scanf( "%d", &weight_1 );
sum += weight_1;
printf( "2.agirlik> " );
scanf( "%d", weight_2 );
sum += weight_2;
average = sum / 2;
printf( "Ortalama: %.2f\n", average );
return 0;
}

Cevap için tıklayınız...

1
5
7
11
Cevap için tıklayınız...

#include<stdio.h>
int main( void )
{
int sum = 0;
float average;
int weight_1, weight_2;
printf( "1.agirlik> " );
scanf( "%d", &weight_1 );
sum += weight_1;
printf( "2.agirlik> " );
scanf( "%d",&weight_2 );
sum += weight_2;
average = sum / 2.0;
printf( "Ortalama: %.2f\n", average );
return 0;
}


Soru 2: Bir üçgende, iki kenarın toplam uzunluğu, üçüncü kenardan az olamaz. Ayrıca iki kenarın birbirinden farkının mutlak değeri, üçüncü kenardan büyük olmamalıdır. Bu bilgileri kullanarak, verilen üç kenar uzunluğuna göre bir üçgen çizilip çizilmeyeceğini gösteren programı yazınız. Girilecek kenar uzunlukları tam sayı olacaktır.

Cevap için tıklayınız...


/* Girilen 3 tamsayinin bir ucgenin kenari olup olmadigi kontrol edilir */

#include<stdio.h>
int main( void )
{
int a, b, c;
int temp;

printf("Birinci kenar uzunlugu> ");
scanf("%d", &a);
printf("Ikinci kenar uzunlugu> ");
scanf("%d", &b);
printf("Ucuncu kenar uzunlugu> ");
scanf("%d", &c);

/* a ile b den buyuk olan a ya kucuk olan b ye atanir */
if(a < b) {
temp = a;
a = b;
b = temp;
}

if( ((a + b) < c) || ((a - b) > c) )
printf("Bu kenar uzunluklarina sahip bir ucgen olamaz.\n");
else
printf("Bu kenar uzunluklarina sahip bir ucgen cizilebilir.\n");

return 0;
}

Soru 3: Klavyeden girilecek bir sayının asal sayı olup olmadığını ekrana basan bir program yazınız.

Cevap için tıklayınız...


/*
Bir sayının asal olup olmadığını bulmak için çeşitli metodlar
vardır. Aşağıda bu metodlardan basit bir tanesi yazılmıştır.
Eğer sayının yarısına kadar kontrol etmek yerine, kareköküne
kadar olan sayıları test ederseniz, yine aynı sonuç çıkacaktır.
Ancak anlaşılma konusunda sorun olmaması için soru bu şekilde
çözülmüştür.
*/
#include<stdio.h>
int main( void )
{
int sayi, i;
//Sayıyı ilk başta asal kabul ediyoruz.
//asal_mi değişkeni 1 ise, sayi asaldir.
int asal_mi = 1;

//Klavyeden, test edilmek üzere bir sayı alınıyor.
printf( "Bir sayı giriniz> " );
scanf("%d",&sayi);

//Girilen sayının, başka sayılara göre sırayla modunu
//alıyoruz. Bir sayının modunu aldığınızda, kalan 0 ise
//bu sayının bölünebildiğine ve dolayısıyla
//asal olmadığına dair bilgi verir. Bu işlemi yapabilmek
//için 2'den başlayarak, sayının yarısına kadar olan
//bütün değerler deneniyor.
for( i = 2; i <= sayi/2; i++ ) {
if( sayi%i == 0 ) {
//Sayı i değişkenine kalansız bölünmektedir.
//Dolayısıyla, sayı asal değildir ve döngüyü
//sürdürmeye gerek yoktur.
asal_mi = 0;
break;
}
}
//Sayının asal olup olmama durumuna göre, çıktı yazdırılıyor.
if( asal_mi == 1 )
printf( "%d sayısı asaldır.\n", sayi );
else
printf( "%d sayısı asal değildir.\n", sayi );

return 0;
}

Soru 4: Klavyeden girilecek 0 ile 999 arasında bir tam sayının, yazıyla ifade eden ( örneğin 49, 'kırkdokuz' gibi ) bir program oluşturunuz.

Cevap için tıklayınız...


/*
Girilen sayının, nasıl okunduğunu ekrana yazdıran programdır.
Fonksiyon kullanımıyla daha efektif olarak yazılabilir.
Ancak henüz işlenmeyen bir konu olduğundan, basit bir şekilde
yazılmıştır.
*/
#include<stdio.h>
int main( void )
{
int sayi;

//Klavyeden girilecek sayinin 0 ile 999 sınırlarında
//olup olmadığı kontrol ediliyor. Eğer değilse,
//uyarı verilip, yeni bir sayı isteniyor. Bu işlem
//doğru bir değer girilene kadar devam ediyor.
do {
printf( "Sayıyı giriniz> " );
scanf("%d",&sayi);
if( sayi>999 || sayi<0 )
printf("Girdiğiniz sayı uygun değildir.\n"
"0 ile 999 arasında olmalıdır.\n");
else
break;
}while( 1 );

printf( "%d sayısı, '",sayi );

//Verilen sayıyı, yazıyla ifade edebilmemiz için,
//yüzler, onlar ve birler basamaklarına ayırmamız
//gerekmektedir.

//Sayının yüzler basamağı ayrıştırılıyor.
//Bunun için sayıyı, 100'e bölmek yeterli.

//YÜZLER BASAMAĞI:
switch( sayi/100 ) {
case 9: printf( "dokuzyüz" ); break;
case 8: printf( "sekizyüz" ); break;
case 7: printf( "yediyüz" ); break;
case 6: printf( "altıyüz" ); break;
case 5: printf( "beşyüz" ); break;
case 4: printf( "dörtyüz" ); break;
case 3: printf( "üçyüz" ); break;
case 2: printf( "ikiyüz" ); break;
case 1: printf( "yüz" ); break;
}

//Onlar basamağını bulmak için, sayının
//yüze bölümünden kalan değeri, 10'a
//bölüyoruz. Yüzler basamağını bir önceki
//adımda ele aldığımız için, bu adımda,
//sayının yüze bölümünü değil, bölümünden
//kalanı kullandık.

//ONLAR BASAMAĞI:
switch ( (sayi%100)/10 ) {
case 9: printf( "doksan" ); break;
case 8: printf( "seksen" ); break;
case 7: printf( "yetmiş" ); break;
case 6: printf( "altmış" ); break;
case 5: printf( "elli" ); break;
case 4: printf( "kırk" ); break;
case 3: printf( "otuz" ); break;
case 2: printf( "yirmi" ); break;
case 1: printf( "on" ); break;
}

//Birler basamağını bulabilmek için, sayının
//10'a bölümünden kalana bakıyoruz.

//BİRLER BASAMAĞI:
switch ( (sayi%10) ) {
case 9: printf( "dokuz" ); break;
case 8: printf( "sekiz" ); break;
case 7: printf( "yedi" ); break;
case 6: printf( "altı" ); break;
case 5: printf( "beş" ); break;
case 4: printf( "dört" ); break;
case 3: printf( "üç" ); break;
case 2: printf( "iki" ); break;
case 1: printf( "bir" ); break;
}

//Eğer sayı 0 ise, yukarda ki düzeneğe
//uymayacağından, onu ayrıca ele alıyoruz.
if( sayi == 0 )
printf( "sıfır" );

printf( "' şeklinde okunur.\n" );

return 0;

}

Soru 5: Dört basamaklı bir sayının rakamları ters yazılıp, 4 ile çarpılırsa, çıkan sonuç, kendisiyle aynıdır. Dört basamaklı bu sayıyı bulunuz.

Cevap için tıklayınız...


/*
Dört basamaklı bir sayının rakamları, ters yazılıp, 4 ile
çarpılırsa, sayının kendisine eşit olmaktadır. Bu program,
bahsedilen dört basamaklı bu sayıyı bulmaktadır.
*/
#include<stdio.h>
int main( void )
{
//Dört basamaklı bir sayının tersinin dört katına
//eşit olmasını hesaplamamız gerektiğinden, her
//basamağı ayrı ayrı düşünmemiz gerekmektedir.
//Bilinmeyen bu sayıyı, abcd olarak düşünebiliriz.
int a,b,c,d;
int sayi, sayinin_tersi;
for( a = 0; a < 10; a++ )
for( b = 0; b < 10; b++ )
for( c = 0; c < 10; c++ )
for( d = 0; d < 10; d++ ) {
//Burada sayinin degeri bulunmaktadir.
sayi = a * 1000 + b * 100 + c * 10 + d;

//Burada da sayinin tersi hesaplanmaktadir.
sayinin_tersi = d * 1000 + c * 100 + b * 10 + a;

//Sayinin tersinin 4 katinin ilk sayiya
//esit olup olmadigi kontrol ediliyor.
//Ayrica sayinin 0 olmamasi gerekmektedir.
//Bu kontrol de yapilmaktadir.
if( sayi == 4 * sayinin_tersi && sayi != 0 ) {

//Sayi ve uygun olan tersi gosterilir:
printf( "Sayı: %d, tersi: %d\n", sayi, sayinin_tersi );

//return ifadesi programin daha fazla devam
//etmemesi icin burada kullanilmistir.
//Program donguye devam etmez ve burada kesilir.
//return, main fonksiyonunu sonlandirir.
return 0;
}
}
//Uygun bir sayi bulunamazsa, program burada sonlanacaktir.
return 0;
}

Soru 6: Fibonacci serisinin ilk iki elemanı 0 ve 1'dir. Bundan sonra gelen sayılar, kendisinden önceki iki sayının toplamıyla bulunur. Yani seri elemanları 0 1 1 2 3 5 8 13 21 ... şeklinde gitmektedir. Verilecek adım sayısına göre, Fibonnaci serisinin elemanlarını gösterecek bir program yazınız.

Cevap için tıklayınız...


/* Fibonacci sayilarini ekrana yazar */

#include<stdio.h>int main( void )
{
int a = 0; /* a[n] */
int b = 1; /* a[n+1] */
int c; /* a[n+2] */
int n;
int i;

printf("Fibonacci serisi kacinci elemana kadar yazilsin> ");
scanf("%d", &n);

for( i = 1; i <= n ; i++ ) {
printf( "%4d. Eleman: %d\n", i, a );
c = a + b;
a = b;
b = c;
}

return 0;
}

Soru 7: Verilecek kenar uzunluğuna göre, yıldız (*) işareti kullanarak kare çizen, bir program yazınız.

Cevap için tıklayınız...


/* '*'ler kullanarak kenar uzunlugu verilen kareyi cizer */

#include<stdio.h>
int main( void )
{
int kenar;
int i;
int j;

printf("Karenin kenar uzunlugu: ");
scanf("%d", &kenar);

/* Gecerli bir deger mi */
while((kenar < 0) || (kenar > 20)) {

printf("Lutfen 0 ile 20 arasinda bi deger giriniz.");
printf("Karenin kenar uzunlugu");
scanf("%d", &kenar);
}

/* karenin cizilmesi */
for(i = 1; i <= kenar; i++) {

if(kenar == 0)
break;

/* alt ve üst kenarlarin cizimi */
if((i == 1) || (i == kenar)) {

for(j = 1; j <= kenar; j++)
printf("*");
printf("\n");
continue;
} /* if sonu */

/* sag ve sol kenarlarin cizimi */
for(j = 1; j <= kenar; j++)
if((j == 1) || (j == kenar))
printf("*");
else
printf(" ");

printf("\n");
} /* for sonu */

return 0;
}

Soru 8: Aşağıdaki eşkenar dörtgen çıktısını üretecek bir program yazınız:

*
***
*****
*******
*********
*******
*****
***
*
Cevap için tıklayınız...


/* '*'ler yardimiyla eskenar dortgen cizer */

#include<stdio.h>
int main( void )
{
int i, j;

for(i = 1; i <= 5; i++) {
for(j = 1; j <= 9; j++)
if((j <= (9 - (2*i - 1))/2) || (j > (i + 4)))
printf(" ");
else
printf("*");

printf("\n");
}
for(i = 4; i >= 1; i--){
for(j = 1; j <= 9; j++)
if((j <= (9 - (2*i - 1))/2) || (j > (i + 4)))
printf(" ");
else
printf("*");

printf("\n");
}

return 0;
}

Soru 9: Hipotenus'u 500 birime kadar olan dik üçgenlerin, kenar uzunluklarını gösteren bir program yazınız. Kenar uzunlukları, sadece tam sayı olacaktır.
Sayfa başına dön Aşağa gitmek
https://forumtek.canadian-forum.com
 
C Programlama Dersi - VII
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ForumTek :: Programlama Dilleri :: c++ Dili-
Buraya geçin: