Categories
Algorithms and Programming I

Final Sample Questions

Test ve Hata Ayıklama

  1. Aşağıdaki programların her biri 1’den 10’a kadar olan sayıların toplamını ekrana bastırmaya çalışıyor. Hata’ların nerede olduğunu ve nasıl düzeltileceğini açıklayınız.
  2. Aşağıdaki kod parçacıklarında derlenme hatasına neden olacak çeşitli hatalar bulunmaktadır. Sadece derlenme hatalarının nereden kaynaklandığı ve nasıl çözüleceğini yazınız. Tüm değişkenlerin tanımlanmış olduğunu varsayınız.
  3. Aşağıdaki uygulamada klavyeden alınan girişlerdeki bazı karakterleri filtreleyen bir uygulama verilmiştir. Bu filtrelemede yapılması istenen şey sadece alfabe karakterleri, rakamlar ve boşluk karakterleri geçsin, diğer karakterler filtrelenmelidir. Verilen uygulama çalışmamaktadır. Sorun(lar)’ı tespit ediniz. Örnek giriş “Saat 6:00 da bulusalim” için çıkış “Saat 600 da bululsalim”
    olmalıdır.

İşaretçiler

  1. Aşağıdaki kod parçacığının çıktısı nedir?
    #include 
    int main(){
        int i = 10;
        printf("%u",&i); 
        return 0;
    }
  2. Aşağıdaki kod parçacığının çıktısı nedir?
    #include 
    int main(){
        int i = 10;
        printf("%d",*(&i)); 
        return 0;
    }
  3. Tanımlanmış olan bir char işaretçisine malloc komutu ile 100 byte’lık bir alan tahsis ediniz. Bu 100 byte’lık alanın içerisine 0-3 arasında rasgele sayılar doldurunuz. Kullanıcıdan yeni bir giriş alınız (0-3) arasında. Alınan girişin bu alanda kaç adet olduğunu ekrana gösteriniz. Not: Dizilerin kullanımı yasaktır.
  4. Bir fonksiyona 4 int işaretçisi argüman olarak verilmektedir. Main’den kullanıcıdan alınan 3 sayı ve bir tanımlanmış tamsayıların adresleri bu fonksiyona verilmektedir. Fonksiyon tamsayı işaretçilerinin değerlerine bakarak ortanca sayıyı 4. tamsayı işaretçi argümanının içerisine yazmalıdır. Main’de içerisine yazılmış olan değişkenin değeri ekrana gösterilmelidir.

Diziler

  1. 10 elemanlı bir tamsayı dizisi oluşturunuz. Kullanıcıdan alınan girişler ile bu diziyi doldurunuz. Sonrasında kullanıcıdan bir sayı girişi daha alınız. Bu alınan son giriş sayısı dizi’nin elemanları içinde varsa ekrana “Bulundu” yoksa “Bulunamadı” yazdırılan bir uygulama geliştiriniz.
  2. 20 elemanlı bir tam sayı dizisi oluşturunuz. Dizinin elemanlarını rasgele doldurunuz. Diziyi bir fonksiyona arguman olarak gönderiniz. Fonksiyonda dizinin içerisindeki kaç adet pozitif, negatif, tek, çift ve sıfır olduğunu ekrana bastırınız.
  3. 20 elemanlı bir tam sayı dizisi oluşturunuz. Dizinin elemanlarını rasgele doldurunuz. Diziyi bir fonksiyona arguman olarak gönderiniz. Fonksiyon argüman olarak ayrıca 5 işaretçi daha almaktadır. Bunlar pozitif, negatif, tek, cift ve sifir tamsayı işaretçileridir. Fonksiyon kaç adet pozitif, negatif, tek, çift ve sıfır olduğunu bu işaretçiler ile geri döndürerek, fonksiyonun çağrıldığı main’de ekrana bastırılmalıdır.
  4. Dizideki tüm elemanları toplayıp sonucunu tamsayı olarak geri döndüren bir fonksiyon yazınız. Diziyi main’de 5 elemanlı tanımlayıp, içerisindeki değerleri 10, 20, 30, 5, 3 olarak giriniz. Dönen sonucu ekrana gösteriniz.
  5. 20 elemanlı bir dizinin elemanlarını rasgele doldurunuz. Bu dizinin en büyük, en küçük ve ortalama değerini ekrana bastıran bir uygulama geliştiriniz.
  6. 10 elemanlı bir dizi tanımlayıp içeriğini rasgele doldurunuz. Bu dizide aynı elemandan tekrar eden bir eleman veya elemanlar varsa ekrana yazdıran bir uygulama geliştiriniz.Örneğin; 3,4,5,6,7,7,8,8,1,1 dizi içeriklerine göre ekrana 7, 8 ve1 yazılmalıdır.
  7. 25 elemanlı bir dizinin bütün elemanlarını kaydıran bir uygulama geliştiriniz. Dizinin içeriğini rasgele oluşturunuz.Örnek dizi içeriği, 1, 2, 3 …. 25
    Program çalıştıktan sonraki dizi içeriği 25, 1, 2, 3 … 24
  8. İki boyutlu bir dizi oluşturunuz. Dizinin boyutları 3×3 olmalıdır.Örnek dizi içeriği1, 2, 3
    4, 5, 6
    7, 8, 9

    Bu dizi aslında bir matristir. Bu matrisin simetrik olup olmadığını bulan bir uygulama geliştiriniz. Ekrana simetrik veya simetrik değil uyarıları basmalıdır.

    Not: Transpozu kendisine eşit olan matrislere simetrik matris denir. Simetrik matris örnekleri

  9. Kullanıcıdan alınan sayılar ile doldurulan 3×3 boyutlu 2 adet matrisi toplayan ve çarpıp sonuçlarını ekrana gösteren bir uygulama geliştiriniz.
  10. 9 elemanlı bir dizi tanımlayıp, içeriğini rasgele oluşturunuz. Dizinin ortanca elemanını ekrana yazdırınız. Bu işlem için öncelikle dizinin elemanlarını değerlerine göre sıralamalısınız. Bunun için bir sıralama algoritması kullanılmalıdır. “Selection Sort” algoritmasını kullanarak işlemi gerçekleştiriniz (Selection sort algoritmasını araştırınız).

Özyinelemeli Fonksiyonlar: 

  1. Aşağıdaki özyinelemeli fonksiyon ile ifade edilmiş kod parçacığının, özyinelemesiz olan karşılığını yazınız.

    Fibonacci serilerinin N. elemanını bulan özyinelemeli olarak yazınız.
  2. Aşağıdaki özyinelemeli fonksiyon ile ifade edilmiş kod parçacığının, özyinelemesiz olan karşılığını yazınız.

  3. Aşağıdaki özyinelemeli fonksiyona göre;
    arg değerinin sonsuz döngüye sokabileceği bir değer var mıdır? Varsa nedir?

    func(10) değeri ne döndürmektedir?

Karakterler, Girdi/Çıktı Formatlama, Dosya Okuma ve Yazma

  1. Aşağıda yanında satır sayısı verilmiş C kodundaki;
    /*  1 */ #include 
    /*  2 */ int main() {
    /*  3 */    FILE *textfile;
    /*  4 */    int score;
    /*  5 */    int s[10];
    /*  6 */    int n = 0;
    /*  7 */    int i;
    /*  8 */    textfile = fopen("source.txt", "r");
    /*  9 */    if (textfile == NULL) {
    /* 10 */       printf("Can't open scores.txt");
    /* 11 */       exit(1);
    /* 12 */    }
    /* 13 */    for (;;) {
    /* 14 */       fscanf(textfile, "%i", &score);
    /* 15 */       if (score == -1) break;
    /* 16 */       s[n] = score;
    /* 17 */       n++;
    /* 18 */    }
    /* 19 */    close(textfile);
    /* 20 */    
    /* 21 */    s[n] = 99;
    /* 22 */    n++;
    /* 23 */    
    /* 24 */    textfile = fopen("source.txt", "w");
    /* 25 */    for (i = 0; i < n; i++) {
    /* 26 */       fprintf(textfile, "%i ", s[i]);
    /* 27 */    }
    /* 28 */    fprintf(textfile, "-1");
    /* 29 */ }
    
    8-12. satırlar arasında ne yapılmaktadır?
    13-19. satırlar arasında ne yapılmaktadır?
    21-22. satırlar arasında ne yapılmaktadır?
    24-28. satırlar arasında ne yapılmaktadır?
    source.text dosyasının içeriği
    90 87 56 78 -1
    
    ise, program çalıştıktan sonra ne olacaktır?
    Program değişmiş olan source.text ile tekrar çalıştırıldığında source.text dosyasının içeriği ne olacaktır?
  2. Bir dosyadaki içeriğin tamamını tersten diğer bir dosyaya yazdıran uygulamayı geliştiriniz.Örn giris dosyası içeriği abcdef
    Beklenen çıkış dosyası fedcba
  3. Bir kaç cümle içeren bir metin dosyası hazırlayınız. Tüm harler küçük olmalıdır. Hazırlanmış olan metin dosyasını alıp, her kelimenin ilk harfini büyük harf ile değiştirerek farklı bir dosyaya yazan bir uygulama geliştiriniz. (İpucu, kelimenin başı olup olmadığına, okunan bir önceki karakterin boşluk olup olmamasına göre karar verebilirsiniz)

C Yapıları

  1. insan isminde bir struct tanımlayıp, struct’ın elemanları olarak boy ve kilo floating point elemanları tanımlayın. Kullanıcıdan giriş olarak iki floating point sayı alıp bu elemanların üzerine yazınız. Sonrasında bu struct’ın elemanları ile BMI hesaplamasını ekrana gösteriniz.BMI  = kg / (boy * boy), Not: Boy mt cinsinden olmalıdır.
  2. Öğrencilerin fizik, kimya ve biyoloji derslerinin notlarını içeren ogrenci isminde bir struct tanımlayınız. Bu struct’tan 25 boyutunda bir dizi tanımlayıp, bu dizinin içeriğini rasgele doldurunuz. 25 öğrencinin ortalama fizik, kimya ve biyoloji notlarını ekrana gösteriniz.
  3. Tarih isimli bir stuct tanımlayıp elemanlarını tamsayı olarak gun, ay ve yil olarak tanımlayınız. İki struct tanımlayıp ilkine 3, 5,.2000 ikincisine ise 6, 11, 2020 tanımlayınız. Bir yılı 365 gün ve bir ayı 30 gün olarak kabul ederek, verilen iki struct arasındaki kaç gün fark olduğunu hesaplayıp ekrana bastırınız.
  4. Tarih isimli bir struct oluşturun. Elemanları tamsayı olarak gun, ay ve yil olsun. Main’de tarih struct’ı olarak tanımlanmış elemanın gun, ay ve yıl değerlerine 12, 10, 2000 yazınız. Bir tarih struct’ı ve tamsayı girişi alan bir fonksiyon yazınız. Bu fonksiyon aldığı tamsayı gün’ü ifade etmektedir. Aldığı struct’ın içerisindeki tarihin üzerine, aldığı gün sayısını ekleyip, yeni tarihi ekrana bastıran bir uygulama geliştiriniz. Ay 30 gün, yıl 365 gün olduğunu kabul ediniz.

Önişlemler ve Diğer Konular

  1. Önişlemci nedir?
  2. Makro ve fonksiyon arasındaki farklar nedir?
  3. Bir dikdörtgenin en ve boyunu alarak alanını hesaplayan bir makro yazınız
  4. İki sayının ortalamasını döndüren bir makro yazınız