Standart C Programlama Dili


2.P. Problemler

1. do deyimini başka kontrol akışı deyimleri kullanarak “formüle” edin.

2. Aşağıdaki if’in görevini yapan bir switch yazın.

if (yas == 16)
  printf("Onumuzdeki yil "
    "surucu belgesi alabilirsiniz!\n");

3. while deyimini başka kontrol akışı deyimleri kullanarak yazın.

4. Bir tamsayı okuduktan sonra, 1’den girilen sayıya kadar olan bütün tamsayıların kareleri ile karşıt (1/sayı) değerlerini basan bir program yazın.

5. Sıfırla sonlandırılmış bir tamsayı serisini okuyup sonunda sayıların en küçük, en büyük ve ortalamasını veren bir program yazın.

6. Bir karakter sırasını okuyup arka arkaya tam 3 defa rastladığı karakterleri basan bir program yazın. Örneğin

bcdaaaefghijjjjkkkop

girdisi için, çıktı

a k

olmalıdır.

7. Tedavülde (şimdilik) 1, 5, 10, 20, 50 ve 100 YTL’lik banknotlar bulunmaktadır. Fiyatı ve bu cinste gösterilmiş para miktarını kabul edip geriye verilecek bozuk parayı (yani fiyat ile verilmiş para arasındaki farkı) liste şeklinde veren bir program yazın. Bu durumda, programın kabul edebileceği para miktarı 1 YTL’nin katı olmalıdır.

8. Kısım 2.12’deki programı, her çeşit bilgi için doğru çalışacak şekilde düzeltin.

9. Bir x sayısının b tabanına göre logaritması şu şekilde hesaplanabilir:

Sayının 1≤x<b şeklinde olduğunu varsayın. (Eğer öyle değilse, kolayca o hale getirebilirsiniz.) Bu durumda logbx=0.d1d2···dn. Burada n sistemdeki kayan noktalı sayılar için anlamlı rakam sayısıdır; yani double sayılar için DBL_DIG. di rakamları şu döngü kullanılarak hesaplanabilir:

i ← 1’den n’ye kadar aşağıdaki döngüyü yap:

xx10

1 ≤ x / bdi < b olacak şekilde di’yi hesapla (di 0’dan 9’a kadar değişen bir tamsayı)

xx / bdi

Önce, bazı sayıların logaritmalarını elle hesaplayarak algoritmayı anlamaya çalışın. Örneğin, log102, log162 vs’yi hesaplayın. Daha sonra, 0.01 artımlarla 1.00 ile 10.00 arasındaki x sayılarının b=10 tabanına göre logaritmalarının çizelgesini n=5 ondalık basamağa kadar basacak bir C programı yazın.

10. Aşağıdaki oyunu oynayacak tam bir program yazın: Kullanıcı 1 ile 1000 arasında bir sayı seçer, bilgisayar da sayıyı tahmin etmeye çalışır. Her tahminden sonra, eğer tahmin daha büyükse kullanıcı B girer, daha küçükse K, doğru sayı ise D girer. Programın örnek bir çıktı ve girdisi şöyle olabilir: (Bu durumda, seçilmiş olan sayı 375’tir.)

500? B
250? K
375? D

Program akılcı kestirimlerde bulunmalıdır. Program en fazla kaç denemede sayıyı bulmalıdır?

11. Kısım 2.12’de verilen programdan daha verimli sıralama yapacak bir program yazmak için başka tip sıralama algoritmalarını araştırın.