C Dilinde Ödev Soruları Cevapları

Merhaba arkadaşlar, bugün sizinle C dilinde birkaç soru ve bu soruların cevaplarını yani kodlarını paylaşacağım. Hatalar olabilir, eksikler olabilir. Eksik veya hata olduğunu düşündüğünüz yerleri en alta yorum olarak yazarsanız düzeltmek için elimden geleni yaparım. Umarım işinize yarar, şimdiden kolay gelsin.

  • Aynı firmada çalışan (Ahmet ve Hasan) iki işçiden birincisinin (Ahmet’in) aylık ücreti bir ay %50 artmakta, sonraki ay %25 azalmaktadır. Diğerinin (Hasan’ın) ise ücreti her ay %25 artmaktadır. Her ikisinin de yılbaşındaki başlangıç ücretleri ve hesaplanacak ay bilgisi klavyeden girildikten sonra ay ay ücretlerinin ne olacağını ve en sonunda hangi işçinin daha fazla (veya eşit) ücret alacağını hesaplayan C programını yazınız.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main() {
  double AhmetToplamMaas = 0, HasanToplamMaas = 0, AhmetBaslangicMaasi = 0, HasanBaslangicMaasi = 0;
  int i = 0, AhmetAy = 0, HasanAy = 0;
  char isim[100];
  do
  {
    printf("Calisan adi giriniz:");
    scanf("%s", isim);
    
    if (!strcmp(isim, "Ahmet"))
    {
      printf("Ahmet'in baslangic maasi: ");
      scanf("%lf", &AhmetBaslangicMaasi);
      printf("Hesaplanacak ay: ");
      scanf("%d", &AhmetAy);
      
      for (int j = 1; j <= AhmetAy; j++)
      {
        if (j % 2 == 0)
        {
          AhmetBaslangicMaasi = AhmetBaslangicMaasi + (AhmetBaslangicMaasi * 0.50);
        }
        else
        {
          AhmetBaslangicMaasi = AhmetBaslangicMaasi - (AhmetBaslangicMaasi * 0.25);
        }
      }
      AhmetToplamMaas = AhmetBaslangicMaasi;
    }
    
    if (!strcmp(isim, "Hasan"))
    {
      printf("Hasan'in baslangic maasi: ");
      scanf("%lf", &HasanBaslangicMaasi);
      printf("Hesaplanacak ay: ");
      scanf("%d", &HasanAy);
      
      for (int k = 1; k <= HasanAy; k++)
      {
        HasanBaslangicMaasi = HasanBaslangicMaasi + (HasanBaslangicMaasi * 0.25);
      }
      
      HasanToplamMaas = HasanBaslangicMaasi;
    }
    i++;
  }
  while (i <= 1); printf("Ahmet'in Maasi: %lf\n", AhmetToplamMaas); printf("Hasan'in Maasi: %lf\n", HasanToplamMaas); if (HasanToplamMaas > AhmetToplamMaas)
  {
    printf("Hasan'in Maasi daha fazladir.");
  }

  if (HasanToplamMaas < AhmetToplamMaas)
  {
    printf("Ahmet'in Maasi daha fazladir.");
  }
  if (HasanToplamMaas == AhmetToplamMaas)
  {
    printf("Maaslar esittir.");
  }
  return 0;
}
  • Bir otoparka park eden taksinin 1 saati 5TL, minibüsün 1 saati 6TL, ticari aracın 1 saati 6.5TL dir. Taksi 1 saatten sonraki her saat başı için %20 daha fazla, minibüs 1 saatten sonraki her saat başı için toplamda %21.5 ve ticari araç 1 saatten sonraki her saat başı için toplamda %25 daha fazla ödeme yapmaktadır. Buna göre klavyeden girilen araba tipi ve kalınan saat bilgisi girildikten sonra ekrana ödenecek otopark ücretini hesaplayan programın kodlarını yazınız.
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
    double odenecekTutar = 0;
    int kalinanSure = 0, aracTipi = 0;
 
    printf("Arac Tipleri\nTaksi: 1, Minibus: 2, Ticari: 3\n");
 
    printf("Lutfen Arac Tipini Giriniz : ");
    scanf("%d", &aracTipi);
 
    printf("Kalinan Sureyi Giriniz: ");
    scanf("%d", &kalinanSure);
 
    if (kalinanSure > 1)
    {
        for (int i = 1; i <= kalinanSure; i++)
        {
            if (i == 1) {
                if (aracTipi == 1)
                    odenecekTutar = i * 5;
                else if (aracTipi == 2)
                    odenecekTutar = i * 6;
                else if (aracTipi == 3)
                    odenecekTutar = i * 6.5;
            }
            else {
                kalinanSure = kalinanSure - 1;
                if (aracTipi == 1)
                    odenecekTutar = odenecekTutar + kalinanSure * 5 * 1.20;
                else if (aracTipi == 2)
                    odenecekTutar = odenecekTutar + kalinanSure * 6 * 1.215;
                else if (aracTipi == 3)
                    odenecekTutar = odenecekTutar + kalinanSure * 6.5 * 1.25;
            }
        }
    }
    else {
        if (aracTipi == 1)
            odenecekTutar = kalinanSure * 5;
        else if (aracTipi == 2)
            odenecekTutar = kalinanSure * 6;
        else if (aracTipi == 3)
            odenecekTutar = kalinanSure * 6.5;
    }
    printf("Odenecek Tutar : %lf TL", odenecekTutar);
    return 0;
}
  • Üç katlı bir bina her katında iki daire var klavyeden her dairede bulunan kişi sayısını girdikten sonra binada kaç kişi oldugunu hesaplayan programın kodlarını yazınız.
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int toplam=0, binaToplam=0, sayi = 0;
    int bina[3][2];
    for (int i =0; i < 3; i++)
    {
        for (int j= 0; j <2; j++)
        {
            printf("%d.kat %d dairede oturan kisi sayisini giriniz: ", i+1 ,j+1);
            scanf("%d", &bina[i][j]);
        }
    }
 
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j <2; j++) {
            toplam = toplam + bina[i][j];
        }
        printf("%d.katta oturan kisi sayisi: %d\n", i+1, toplam);
        binaToplam = binaToplam + toplam;
        toplam=0;
    }
 
    printf("Binada oturan kisi sayisi: %d", binaToplam);
 
    return 0;
}
  • Bir komisyoncu sattığı malların fiyatı 50tl kadar olanlardan %3 daha fazla olanlardan ise %2 komisyon almaktadır. Klavyeden girilen teker teker girilen 5 malın komisyonlarını bulup ekrana yazdıran ve en sonunda da toplam komisyonu ekrana yazdıran programın kodlarını yazınız.
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    double fiyat = 0, komisyon = 0, toplamKomisyon = 0;
 
    for (int i = 0; i < 5; i++)
    {
        printf("%d. urunun fiyatini giriniz:", i+1);
        scanf("%lf", &fiyat);
 
        if (fiyat > 50.0)
            komisyon = fiyat * 0.02;
        else
            komisyon = fiyat * 0.03;
 
        printf("Urunun komisyonu: %lf TL\n", komisyon);
 
        toplamKomisyon = toplamKomisyon + komisyon;
    }
 
    printf("Alinan toplam komisyon: %lf TL", toplamKomisyon);
 
    return 0;
}
  • Klavyeden girilen sayıları okuyan ve sayıların toplamı 21den büyük veya eşit oldugu zaman duran programın kodlarını yazınız.
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int toplam = 0, sayi = 0;
    do{
        printf("Sayi giriniz:");
        scanf("%d", &sayi);
        toplam = toplam + sayi;
    }while (toplam < 21);
 
    printf("Sayilarin toplami 21' esit veya 21'den buyuk!");
 
    return 0;
}
  • Elemanları tam sayı olan bir A dizisinin (20 elemanlı) rastgele sayılar atayan, sonra dizi elemanlarının aritmetik ortalamasını hesaplayan ve elemanlardan kaç tanesinin bu ortalamadan büyük ve küçük olduğunu sayan programın C kodlarını yazınız.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main() {
    int dizi[20];
    srand(time(NULL));
    int diziToplami = 0, ortalamadanBuyuk = 0, ortalamadanKucuk = 0;
    double diziOrtalamasi = 0;
 
    for (int i = 0; i < 20; i++)
    {
       dizi[i] = 1 + rand() % 20;;
       diziToplami = diziToplami + dizi[i];
    }
 
    diziOrtalamasi = diziToplami / 20;
 
    for (int diziElemani = 0; diziElemani < 20; diziElemani++)
    {
       if (dizi[diziElemani] > diziOrtalamasi)
        ortalamadanBuyuk = ortalamadanBuyuk + 1;
       else
       ortalamadanKucuk = ortalamadanKucuk + 1;
    }
 
    printf("Ortalama: %lf \nOrtalamadan Buyuk Eleman Sayisi: %d, Ortalamadan Kucuk Eleman Sayisi: %d", diziOrtalamasi, ortalamadanBuyuk, ortalamadanKucuk);
 
    return 0;
}
  • Kendisi hariç bütün pozitif çarpanları (tam bölenleri) toplamı, yine kendisine eşit olan sayılara “mükemmel sayı” denir. Örneğin 6 = 1 + 2 + 3 ve 28 = 1 + 2 + 4 + 7 + 14 gibi. Buna göre klavyeden girilen bir tam sayının “mükemmel sayı” olup olmadığını kontrol eden C kodunu yazınız. Girilen sayı mükemmel sayı ise ekrana “Mükemmel Sayıdır” değilse “Mükemmel Sayı DEĞİLDİR” yazacak.
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int sayi, toplam=0;
    printf("Bir sayi giriniz: ");
    scanf("%d",&sayi);
 
    for(int i=1; i<sayi; i++) {
        if(sayi%i == 0)
            toplam += i;
    }
 
    if(toplam == sayi)
        printf("Mukemmel sayidir.");
    else
        printf("Mukemmel sayi degildir.");
 
    return 0;
}
  • Klavyeden 20 elemanlı diziye değerler aktarılıyor. Bu değerler içinden tek olanların adedini ve toplamını bulan C kodunu yazınız.
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int dizi[20], tekSayi = 0, tekSayiToplam = 0;
 
    for (int i = 0; i < 20; i++)
    {
        printf("%d. sayiyi giriniz:", i+1);
        scanf("%d", &dizi[i]);
 
        if (dizi[i] % 2 != 0)
        {
           tekSayiToplam = tekSayiToplam + dizi[i];
           tekSayi++;
        }
    }
 
    printf("Tek sayilarin sayisi: %d \n", tekSayi);
    printf("Tek sayilarin toplami: %d", tekSayiToplam);
 
    return 0;
}
  • 50 elemanlı bir dizinin en küçük ve en büyük elemanını bulan C kodunu yazınız.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main() {
    int sayilar[50];
    int min, max;
    srand(time(NULL));
 
    for (int i = 0; i < 50; i++)
    {
        sayilar[i] = 1 + rand() % 100;
        printf("%d\n", sayilar[i]);
    }
 
    min = sayilar[0];
    max = sayilar[0];
 
    for (int i = 1; i < 50; i++)
    {
        if (min > sayilar[i])
            min = sayilar[i];
        if (max < sayilar[i])
            max = sayilar[i];
    }
 
    printf("Dizi icindeki en buyuk sayi: %d\n", max);
    printf("Dizi icindeki en kucuk sayi: %d", min);
 
    return 0;
}