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 karelerini ve 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) 5, 10, 20, 50, 100 ve 200 TL’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ı 5 TL’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 float.h
başlık
dosyasında tanımlanmış olan DBL_DIG
değişmezi.
di rakamları şu döngü kullanılarak
hesaplanabilir:
i ← 1’den n’ye kadar aşağıdaki
döngüyü yap:
x ← x10
1 ≤
x
bdi
< b olacak şekilde di’yi hesapla
(di 0’dan 9’a kadar değişen bir
tamsayı)
x ←
x
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
9.99
arasındaki x sayılarının b=10
tabanına göre logaritmalarının düzgün biçimlendirilmiş ç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.