Merhaba arkadaşlar!
Vize sınavını geride bıraktık, öncelikle hepinizin emeğine sağlık. Kolay sorular da vardı, düşündürenler de, ama önemli olan bu süreci birlikte değerlendirip nerelerde güçlü, nerelerde eksik kaldığımızı görmek.
Bu yazıda sınavda sorduğum soruların çözüm ve açıklamalarını paylaşıyorum. Amacım sadece doğru cevabı göstermek değil; neden o cevabın doğru olduğunu, hangi mantıkla oraya ulaşıldığını birlikte anlamak.
Lütfen çözümleri incelerken kendi yaptıklarınızla karşılaştırın, “şurada farklı düşündüm” dediğiniz yerleri de yorumlarda paylaşın. Bu sayede hem siz hem de arkadaşlarınız için daha verimli bir öğrenme ortamı oluşur.
Unutmayın, her sınav bir değerlendirme değil, bir öğrenme fırsatıdır.
Haydi şimdi, adım adım çözümlere geçelim!
Soru 1: Kullanıcıdan önce bir pozitif tam sayı (N) alınacaktır. Ardından program, 1’den N’e kadar olan tüm sayıları kontrol edecektir.
- Eğer sayı hem 3’e hem 5’e tam bölünüyorsa, ekrana “Purple” yazdırınız.
- Sadece 3’e bölünüyorsa ekrana “Red” yazdırınız.
- Sadece 5’e bölünüyorsa ekrana “Blue” yazdırınız.
- Hiçbirine bölünmüyorsa sayının kendisini yazdırınız.
Program tüm bu işlemleri bir döngü içinde yapmalıdır.Girdi doğrulaması için kullanıcı 0 veya negatif bir sayı girerse tekrar giriş istemek üzere koşul kullanınız. Akış Diyagramını Çiziniz
Çözüm 1:

Soru 2: Kullanıcıdan 1 ile 7 arasında bir sayı girmesini isteyen bir program yazınız. Girilen sayı, haftanın gününü temsil edecektir. Aşağıdaki kurallara göre switch–case yapısını kullanarak ekrana uygun mesajı yazdırınız:
- 1 → Pazartesi
- 2 → Salı
- 3 → Çarşamba
- 4 → Perşembe
- 5 → Cuma
- 6 → Cumartesi
- 7 → Pazar
Kullanıcı 1–7 dışında bir değer girerse, switch–case içinde “Geçersiz gün!” mesajı yazdırılmalıdır. Kullanıcıdan gün bilgisi alındıktan sonra, Eğer gün Hafta içi ise: “Bugün çalışma günü.” Eğer gün Hafta sonu ise: “Bugün tatil günü.” şeklinde switch sonrasında if–else ile ek mesaj yazdırınız.
Çözüm 2:
#include <stdio.h>
#include <locale.h> // Türkçe karakter desteği için
int main() {
// Konsolda Türkçe karakterlerin doğru görüntülenmesi için
setlocale(LC_ALL, "Turkish");
int gunNo;
// 1. Adım: Kullanıcıdan gün numarasını al
printf("Lütfen 1 ile 7 arasında bir gün numarası giriniz: ");
scanf("%d", &gunNo);
// 2. Adım: Switch-Case yapısı ile günü belirle
switch (gunNo) {
case 1:
printf("Pazartesi\n");
break; // Her durumdan sonra 'break' konulmalıdır
case 2:
printf("Salı\n");
break;
case 3:
printf("Çarşamba\n");
break;
case 4:
printf("Perşembe\n");
break;
case 5:
printf("Cuma\n");
break;
case 6:
printf("Cumartesi\n");
break;
case 7:
printf("Pazar\n");
break;
default: // 1-7 dışındaki tüm değerler için
printf("Geçersiz gün!\n");
break;
}
// 3. Adım: If-Else ile hafta içi/hafta sonu kontrolü
// '&&' (VE) operatörü kullanılır: gunNo 1'e eşit VEYA büyük VE 5'e eşit VEYA küçükse...
if (gunNo >= 1 && gunNo <= 5) {
printf("Bugün çalışma günü.\n");
}
// '||' (VEYA) operatörü kullanılır: gunNo 6'ya VEYA 7'ye eşitse...
else if (gunNo == 6 || gunNo == 7) {
printf("Bugün tatil günü.\n");
}
// Geçersiz günler (örn: 8, 0, -1) bu bloklara girmez,
// çünkü switch-case zaten "Geçersiz gün!" mesajını vermiştir.
}
Soru 3: Kullanıcıdan pozitif bir tam sayı (N) isteyen bir program yazınız. Program, 1’den N’e kadar olan tüm sayıları kontrol edecek ve:
- Çift sayıların adedini
- Tek sayıların adedini
- Çift sayıların toplamını
- Tek sayıların toplamını
bir döngü kullanarak hesaplayıp ekrana yazdıracaktır. Ayrıca kullanıcı 0 veya negatif bir sayı girerse, program doğru değer girilene kadar kullanıcıdan giriş istemelidir.
Çözüm 3:
#include <stdio.h>
#include <locale.h> // Türkçe karakter desteği için
int main() {
// Konsolda "Çift", "Tek" gibi Türkçe karakterlerin doğru görünmesi için
setlocale(LC_ALL, "Turkish");
int N;
int i; // Döngü sayacımız
// 1. Adım: Değişkenleri Tanımla ve Sıfırla
// Toplama ve sayma işlemlerinde değişkenlerin 0'dan başlaması çok önemlidir.
int ciftAdet = 0;
int tekAdet = 0;
int ciftToplam = 0;
int tekToplam = 0;
// 2. Adım: Girdi Doğrulaması (Pozitif Sayı Alana Kadar Sorma)
// do-while döngüsü, koşul ne olursa olsun içindeki kodun
// en az bir kez çalışmasını sağlar.
do {
printf("Lütfen pozitif bir tam sayı giriniz (N): ");
scanf("%d", &N);
if (N <= 0) {
printf("Hatalı giriş! Lütfen 0'dan büyük bir sayı girin.\n");
}
} while (N <= 0); // N, 0'dan küçük veya eşit olduğu sürece döngü tekrar eder.
// 3. Adım: 1'den N'e Kadar Döngü ve Hesaplama
// 'i' 1'den başlar, N'e eşit olana kadar (N dahil) devam eder
// ve her adımda bir artar.
for (i = 1; i <= N; i++) {
// Bir sayının 2'ye bölümünden kalan 0 ise, o sayı çifttir.
if (i % 2 == 0) {
// Sayı Çift ise:
ciftAdet++; // Çift sayı adedini 1 artır.
ciftToplam += i; // Çift sayıların toplamına 'i' değerini ekle.
}
else {
// Sayı Tek ise (Kalan 0 değilse):
tekAdet++; // Tek sayı adedini 1 artır.
tekToplam += i; // Tek sayıların toplamına 'i' değerini ekle.
}
} // for döngüsü burada biter
// 4. Adım: Sonuçları Ekrana Yazdırma
printf("\n--- HESAPLAMA SONUÇLARI (1-%d arası) ---\n", N);
printf("Toplam Çift Sayı Adedi: %d\n", ciftAdet);
printf("Çift Sayıların Toplamı: %d\n", ciftToplam);
printf("----------------------------------------\n");
printf("Toplam Tek Sayı Adedi: %d\n", tekAdet);
printf("Tek Sayıların Toplamı: %d\n", tekToplam);
}
Soru 4: Klavyeden girilen terim sayısına göre fibonacci serisini bulan C kodunu yazınız.
Çözüm 4:
#include <stdio.h> // Ekrana yazdırma (printf) ve kullanıcıdan alma (scanf) için gerekli
int main() {
int terimSayisi; // Kullanıcının kaç terim istediği
int i; // Döngü sayacı
// 1. Adım: Serinin ilk iki sayısını belirle
// Fibonacci serisi her zaman 0 ve 1 ile başlar
int t1 = 0;
int t2 = 1;
// 2. Adım: Bir sonraki sayıyı hesaplamak için geçici değişken
int sonrakiSayi;
// 3. Adım: Kullanıcıdan terim sayısını al
printf("Kaç adet Fibonacci terimi istiyorsunuz: ");
scanf("%d", &terimSayisi);
// 4. Adım: Seriyi ekrana yazdır
printf("\nFibonacci Serisi:\n");
// 'i' 1'den başlar ve kullanıcının istediği 'terimSayisi' kadar döner
for (i = 1; i <= terimSayisi; i++) {
// Mevcut ilk sayıyı (t1) ekrana yazdır
// %d -> tamsayı (int) yazdırır
// \n -> bir alt satıra geçer (sayılar alt alta yazar)
printf("%d\n", t1);
// 5. Adım: Bir sonraki sayıyı hesapla
// (Mevcut iki sayının toplamı)
sonrakiSayi = t1 + t2;
// 6. Adım: Sayıları bir sonraki adıma hazırla (kaydırma)
t1 = t2; // Eski ikinci sayı, yeni birinci sayı olur
t2 = sonrakiSayi; // Hesaplanan toplam, yeni ikinci sayı olur
}
}


