Bilgisayar Programlama Vize Soruları

BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
PROGRAMLAMA DİLLERİ 1
ÇALIŞMA SORULARI
1. Klavyeden kullanıcının girdiği [0,100] arasındaki 15 sayının ortalamasını bulan ve ekrana döken C
kodunu yazınız. Kullanıcı verilen sayı aralığının dışına çıktığında bir uyarı mesajı ile [20,50] aralığında
sayı girmesi gerektiği hatırlatılarak tekrar sayı girişi yapması istensin.
2. (a) Klavyeden kullanıcının girdiği karakterleri ekrana basan ve „Q‟/‟q‟ harflerinden birine bastığında
klavyeden karakter alımını durduran ve programı bitiren C kodunu do/while döngüsü ile yazınız.
(b) Klavyeden girilen rakamları ekrana basmayacak şekilde (a) şıkkında yazılan C kodunda gerekli
değişiklikleri/ilaveleri yapınız.
(c) Klavyeden arka arkaya girilen aynı karakterlerin ekrana tekrarlı basılmasına izin verilmeyecek şekilde
bir önceki şıkta geliştirilen C kodunda gerekli değişiklikleri/ilaveleri yapınız.
Örneğin b şıkkında ekran çıktısı: bir karakter giriniz: Eeedrfgs/r‟??KKLmndddfq
c şıkkı sonundaki ekran çıktısı: bir karakter giriniz: Eedrfgs/r‟?KLmndfq
3. (a) int faktor (int x) isimli bir tamsayının faktöriyel değerini (𝑥!) bularak geri dönen işlevi yazınız.
(b) Klavyeden girilen bir tamsayının 𝑓 𝑥 = 𝑒 𝑥 fonksiyon değerini aşağıdaki şekilde ilk beş değere göre
sayısal olarak hesaplayan ve ekrana fonksiyon değerini dönen C kodunu yazınız. 𝑓 𝑥 = 𝑒 𝑥 fonksiyon
değerini float exp(int y) işlevi ile yazınız.
𝑥 𝑥2 𝑥3 𝑥4
𝑓 𝑥 = 𝑒𝑥 = 1 + + + +
1! 2! 3! 4!
4.
İki bilinmeyenli bir denklemin köklerini hesaplayan ve ekrana basan aşağıdaki C program kodunu
tamamlayınız. (karekök almak için sqrt() işlevini kullanabilirsiniz. Örneğin sqrt(5), sqrt(a) gibi)
5.
Klavyeden girilen üç tamsayıdan küçük/BÜYÜK/ortanca olanını bulan ve ekrana yazdıran programın
blok diyagramını ve C kodunu yazınız.
6.
Aşağıda tanımlanmış olan matematiksel fonksiyon için koşul işlecini (?) kullanarak C dilinde mat_fonk
isimli bir işlev yazınız.
 10 x  5

fonk( x)   0 x  5
 10 x  5

7.
Klavyeden girilen tamsayının her bir basamağını, sayının değeri kadar ekrana basan programı yazınız.
Not: 0 için “ X” karakterini basınız.
Örnek ekran çıktısı:
klavyeden bir sayi giriniz: 7082
22
88888888
x
7777777
1
BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
PROGRAMLAMA DİLLERİ 1
ÇALIŞMA SORULARI
8.
Klavyeden girilen üç basamaklı bir sayının rakamları toplamını bulan ve ekrana çıktısını gönderen
programı C dilinde yazınız.
Örnek ekran çıktıları:
uc basamakli bir sayi giriniz : 657
657 sayisinin rakamlari toplami = 18
uc basamakli bir sayi giriniz : -657
-657 sayisinin rakamlari toplami = 18
9. Aşağıda verilen fonksiyonun değerini klavyeden girilen x değeri için bulan ve ekrana çıktısını veren C
programı yazınız.
Örnek ekran çıktısı:
x degeri giriniz : 2.346
f(2.346000) = 2.346000
x degeri giriniz : -12.346
f(-12.346000) = -3.000000
x degeri giriniz : 6.087
f(6.087000) = 3.000000
10. Klavyeden girilen saat ve dakika değerleri ile akrep ile yelkovan arasındaki açıyı, “derece” cinsinden
hesaplayarak geri döndüren “aci_bul” isimli işlevi kullanan ve bulduğu açı değerini ekrana bastıran C
programını yazınız. (30p)
İşlevin bildirimi : float aci_bul(int saat, int dakika);
Örnek ekran çıktıları:
saat ve dakika degerleri giriniz : 5:30
akreple yelkovan arasindaki aci = 15.000000
saat ve dakika degerleri giriniz : 2:35
akreple yelkovan arasindaki aci = 132.500000
saat ve dakika degerleri giriniz : 11:49
akreple yelkovan arasindaki aci = 60.500000
11. Klavyeden sürekli karakter alınması sağlanarak, alınan karakterleri ekranda gösteren ve arka arkaya
"abc" karakterleri girildiğinde program sonlandıran C programını yazınız.
12. Klavyeden kullanıcının girdiği 3 harfi ekrana sıralı ve büyük harf olarak çıktısını veren C kodunu
yazınız.
Örnek ekran çıktısı:
Lütfen üc karakter giriniz: M, c, k
Sirali harfler -> C, K, M
2
BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
PROGRAMLAMA DİLLERİ 1
ÇALIŞMA SORULARI
13. (a) int signum (int x) isimli signum fonksiyonunu hesaplayan işlevi yazınız.
(b) Girilen karakteri test eden büyük harf ise 1, küçük harf ise 2, sayı ise 3, diğer karakterlerden ise 0
dönen int test (int ch) işlevini yazınız.
(c) Girilen sayının basamak değerlerinin toplamını geri dönen int basamak(int sayi) işlevini yazınız.
14. [50,150] arasında rastgele sayılardan oluşan 30 elemanlı benten isimli dizi ile ilgili aşağıdaki soruları
cevaplayınız.
(a) benten dizisindeki 30 sayının ortalamasını bulan ve ekrana döken C kodunu yazınız.
(b) benten dizisindeki en büyük değeri (maksimum) ekrana indisi (dizideki yeri) ile birlikte döken C
kodunu yazınız.
Örnek ekran çıktısı:
benten dizisinin en büyük değeri benten [14]=257‟dir.
(c) benten dizisinin en küçük ikinci elemanını bulan ve ekrana döken C kodunu yazınız.
15. Klavyeden girilen karakterlerden yalnızca harfleri ekranda gösteren ve '%' veya '+' karakteri girilince
karakter girişini durdurarak, ekrana girilen karakterlerdeki sesli (a,e,i,o,u) ve sessiz harflerin sayısını
veren c kodunu yazınız.
16. (a) void cevir2 (int sayi) isimli verilen tamsayıyı ikilik sayı sisteminde ekrana basan işlevi yazınız.
(b) void cevir16 (int sayi) isimli verilen tamsayıyı onaltılık sayı sisteminde ekrana basan işlevi yazınız.
(c) void kokbulma (int a, int b, int c) isimli verilen ikinci dereceden tek bilinmeyenli bir denklemin
köklerini
bularak ekrana basan işlevi yazınız. (karekök için sqrt (int a) hazır fonksiyonunu kullanın)
(d) int basamak (int sayi) isimli girilen sayının basamak değerlerinin toplamını geri dönen işlevi yazınız.
17. Klavyeden girilen 5 tane gerçel sayının 10'dan büyük olanlarının toplamını bulan Toplam10Buyuk
isimli işlevi while ve for yapıları ile ayrı ayrı yapınız.
18. Klavyeden girilen a ve b sayına göre a'dan b'ye ya da b'den a'ya kadar olan sayıları ekrana yazdıran
SayiYazdir isimli işlevi yazınız.
NOT: İşlevlerin sadece isimleri verilmiş olup kullanılacak argüman/parametreleri ve geri dönüş tiplerini
belirlemeniz gerekmektedir.
İNTERNETTEN DE C PROGRAMLAMA İLE İLGİLİ ÇOK SAYIDA SORU BULABİLİRSİNİZ.
BUNDAN SONRAKİ SINAVLARINIZ İÇİN ÇALIŞMA SORULARI ADI ALTINDA HERHANGİ
BİR SORU PAYLAŞIMIM OLMAYACAKTIR.
LÜTFEN BİRAZ ARAŞTIRIN :-)))
3