ARA SINAV 07.Nisan 2015 1. Aşağıda verilen program ya da program parçalarının üreteceği ekran çıktısını, değişkenlerin değerlerini göstererek belirtilen yere yazınız. (16 puan) int x; for(x=-1; x<=10; x++) { if(x < 5) continue; else break; printf("baskent"); printf("bitti"); /* Bitti int s=1, n=3, k; do { for (k=1; k<=n; k++) printf("%d ",k*s ); printf("\n"); s++ ; while (s <= n); 1 2 3 2 4 6 3 6 9 1
1c. int x; int c=0; while (c <= 4) { switch(c) { case 1: x=0; break; case 2: x= 30; case 4: x= 50; break; default : x = 100; printf("c = %d, x= %d \n", c,x); ++c ; c=0, x=100 c=1, x=0 c=2, x=50 c=3, x=100 c=4, x=50 Açıklamalar: while içinde c = 0 ilen switch yapısında defaut çalışır. c=0, x= 100 olur. Çıktı : c=0, x=100 while içinde c = 1 ilen switch yapısında case 1 çalışır. c=1, x= 0 olur. Çıktı : c=0, x=100 while içinde c = 2 ilen switch yapısında case2 çalışır.önce c=2, x=30 olur. Ama break olmadığı için case 4 de çalışır.c=2, x= 50 olur. Çıktı : c=0, x=100 while içinde c = 3 ilen switch yapısında defaut çalışır. c=3, x= 100 olur. Çıktı : c=3, x=100 while içinde c = 4 ilen switch yapısında case 4 çalışır. c=4, x= 100 olur. Çıktı : c=4, x=100 2
2. Aşağıda verilen akış diyagramının (flow chart) üreteceği ekran çıktı ya da çıktılarını, değişkenlerin değerlerini belirtilen yere yazınız. (10 puan) int a =72, b= 192, c= 0,d ; d = a - b%2; printf("%d\t",d); c = b-a -d; if ( c%2!= 0) a = c; else do { a=b; b=c; a=a+1; printf("%d\t", a); d = a%3; printf("%d\t", d); while (d=0); 72 193 1 3
3. Aşağıdaki programın amacı, klavyeden girilen uçak numarasına göre taşıdığı yolcu sayısını hesaplayıp ekrana yazmaktır. Uçağı taşıdığı yocu sayısı, uçak numarasının onda birinin faktoryelinin 5 (beş) katına eşittir. Hesaplama yapılırken uak numarasının onda birinin tam kısmı dikkate alınacaktır. Ancak verilen programda bazı sözdizimi (syntax) ve mantıksal hatalar içermektedir. Yalnızca hatalı olan satırların karşısına doğru biçimlerini örnekteki gibi yazınız Yeni satır eklemeyiniz (14 puan) int i; int ucakno; int ondabir; int yolcusayisi; int faktoryel; printf("uçak numarasini giriniz : "); scanf("%d", &ucakno); ondabir = ucakno/10; if (ondabir == 0 ) faktoryel = 1; else for (i=ondabir; i>0; i--) faktoryel *= i ; yolcusayisi = 5*faktoryel; printf("yolcu sayisi = %d ", yolcusayisi); Uçak numarasını giriniz: 40 Yolcu Sayısı = 120 4
4. Bir teleferik hattının iki kulesi arasındaki uzaklık 1000 metredir. Httın tam ortasında bir orta kule vardır. Başlangıç kuleye 1, ortadakine 2., sondakine 3.kule deniyor. Vagonun hat üzerinde, başlangıca göre bulunduğu konum klavyeden giriliyor. Vagonun hızı aşağıdaki formül ile veriliyor. Vagonun hangi kauleye daha yakın olduğunu ve o anki hızını bulan bir C programı yazınız. #include <locale.h> setlocale(lc_all,""); int kule; int konum; int y; float v; printf("vagonun konumunu giriniz\n"); scanf("%d",&konum); printf("%d", konum); if (konum <= 500) y = 500-konum; else // (konum>500) y = 1000-konum; printf("\nsonraki kuleye uzaklık : %d \n", y); v = 2.425 + 0.00175 * y*y ; if (konum <= 250) printf("\nvagon 1.kuleye daha yakındır\n"); else if (konum<=500) printf("\nvagon 2.kuleye daha yakındır\n"); else if (konum<=750) printf("\nvagon 2.kuleye daha yakındır\n"); else if (konum<=1000) printf("\nvagon 3.kuleye daha yakındır\n"); printf("\nvagonun hızı = %f m/s dir", v); Vagonun konumunu giriniz 400 400 Sonraki kuleye uzaklık : 100 Vagon 2.kuleye daha yakındır Vagonun hızı = 19.925 m/s dir 5
5. Aşağıdaki kurallara uyan bir C programı yazınız. a. Program bir sınıftaki öğrencilerin yaş ortalamasını, 17-20 ve 25-27 aralığındaki gruplar için ayrı ayrı hesaplasın. b. Kullnıcı yanlış aralıkta veri girnce, hata mesajı verilsin ve giriş tekrarlansın. c. Belirtilen aralıkta hiç öğrenci yoksa, o grup için ortalama hesabı yapılmasın. d. Sınıftaki öğrenci sayısı ile öğrencinin yaşı klavyeden girilecektir. #include <locale.h> setlocale(lc_all,""); int mevcut; int grupa=0,grupb=0,toplamgrupa=0,toplamgrupb=0; int i=1, yas, boolean; float orta, ortb; printf("sınıf mevcudunu giriniz"); scanf("%d",&mevcut); while (i <=mevcut) { do { printf("\n%d -ici öğrencinin yaşını giriniz : \n", i ); scanf("%d",&yas); boolean = (((yas>=17)&&(yas<=20)) ((yas>=25)&&(yas<=27))); printf("boolean = %d", boolean); if (boolean == 0) printf("\nyanlış girdiniz! Yaş 17-20 ya da 25-27 arasında olmalı!\n"); while (boolean == 0); if ((yas >=17)&&(yas <=20)) { grupa++; toplamgrupa += yas; else if((yas>=25)&&(yas<=27)) { grupb++; toplamgrupb += yas; ++i; if (grupa > 0) { orta = (float)toplamgrupa / grupa; printf("\na grububun yaş ortalaması %.2f:\n", orta); if (toplamgrupb > 0) { ortb = (float)toplamgrupb / grupb; printf("\nb grububun yaş ortalaması %.2f:\n", ortb); 6
Çıktı: Sınıf mevcudunu giriniz4 Öğrencinin yaşını giriniz : 17 Öğrencinin yaşını giriniz : 19 Öğrencinin yaşını giriniz : 25 Öğrencinin yaşını giriniz : 27 A grububun yaş ortalaması 18: B grububun yaş ortalaması 26: 7