Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 1105- Algoritma ve Programlama I Arasınav Soruları Güz, 2018-2019 Süre: 90 Dakika Derse Kayıtlı Olduğunuz Grubun Öğretim Üyesini (X) ile Belirtiniz: Ayşegül ALAYBEYOĞLU Aytuğ ONAN Ersin ASLAN Nilüfer ATMAN USLU Adı YANIT ANAHTARI Öğrenci Numarası Soyadı İmza Sınav Tarihi 14.11.2018 Not /100 Soru#1 (20 puan): Seçeneklerde verilen kod parçalarının çıktılarını yandaki kutucuğa yazınız: int j; int count = 0; for(j = 10; j < 28; j+=3) ++count ; printf("%d\n",count); count = 0; for(j = 0; j <= 90; j++) count++; printf("%d\n",count); for(j = 82; j > 72; j=j-3) count = j; printf("%d\n",j); int x = 15; do if (x%2!=0) x = x/2; else x = x-4; printf("%d\n",x); while ( x > 2); int i=5; int j; while (i > 2) for(j=3; j<=i; j++) printf("%d\n", i + j); i=i-2; printf("%d %d\n",i,j); 6 91 70 7 3 1 8 9 10 6 1 4 Sayfa#1
Soru#2 (25 puan): Tersten okunuşu kendisine eşit olan doğal sayılara palindromik sayılar adı verilmektedir. Örneğin, 3, 5, 8, 101, 232, 3663, 8008, 12431 gibi sayılar birer palindromik sayı örneğidir. Buna göre, girilen bir sayının palindromik sayı olup olmadığını belirleyip ekrana uygun mesajı yazdıran bir C kodunu while döngüsü kullanarak yazınız. Bir tamsayi giriniz: 6556 6556 palindromik bir sayidir. Bir tamsayi giriniz: 23 23 palindromik bir sayi degildir! int main() int n, reversedinteger = 0, remainder, originalinteger; printf("bir tamsayi giriniz:"); scanf("%d", &n); originalinteger = n; while( n!=0 ) remainder = n%10; reversedinteger = reversedinteger*10 + remainder; n /= 10; if (originalinteger == reversedinteger) printf("%d palindromdur.", originalinteger); else printf("%d palindrom degildir!.", originalinteger); Sayfa#2
Soru#3 (20 puan): Kullanıcı tarafından iki tamsayı arasında, üçe tam olarak bölünebilen tüm tamsayıları, kareleri ile birlikte ekrana yazdıran bir C programını aşağıdaki ilkelere bağlı kalarak yazınız: Eğer kullanıcı tarafından girilen ilk sayının değeri, kullanıcı tarafından girilen ikinci sayının değerinden büyükse, ekrana Değer aralıkları uygun belirlenmemiştir! mesajı yazdırılmalıdır ve herhangi bir hesaplama gerçekleştirilmemelidir. Kullanıcıdan değer aralıklarını almak için Değer aralıklarını giriniz: mesajı kullanılmalıdır. Gerçekleştirimizide, while döngüsü kullanınız. Deger araliklarinizi giriniz: 4 17 6 36 9 81 12 144 15 225 int main() int lowerlimit, upperlimit, i; printf("deger araligini giriniz: "); scanf("%d%d", &lowerlimit, &upperlimit); if (lowerlimit > upperlimit) printf("deger araliklari uygun belirlenmemistir!\n"); else i = lowerlimit; while(i <= upperlimit) if (i % 3 == 0) printf("%d %d\n", i, i * i); i++; Sayfa#3
Soru#4 (35 puan): Bir emlak acentesi bir satış temsilcisine aylık 1.000,54 TL asgari ücret, unvanına göre ek ödenek, ayrıca satış temsilcisinin o ay içinde sattığı her emlak için 200 TL ve satış tutarının belirli bir oranı kadar ikramiye ödemektedir. Unvana göre ek ödenek miktarları ve satış tutarına göre ikramiye oranları aşağıdaki tablolarda verilmiştir: Unvan Ek Ödenek (TL) Stajyer (1) 250 Acemi (2) 350 Uzman (3) 500 Kıdemli (4) 750 Satış Tutarı (TL) İkramiye Oranı (%) 0-499.999,99 0.25 500.000-999.999,99 0.5 1.000.000-1.999.999,99 0.75 2.000.000-1 Buna göre, kullanıcıdan bir satış temsilcisinin unvanını (Stajyer için 1, acemi için 2, uzman için 3, kıdemli için 4), bu ay içinde sattığı emlak adedini ve satış temsilcisinin yaptığı toplam satış tutarını alan ve bu satış temsilcisinin bu ayki toplam maaş tutarını bularak ekrana yazdıran bir C kodunu, switch-case yapısı kullanarak yazınız. Satış temsilcisinin unvanı (Stajyer:1, Acemi:2, Uzman:3, Kıdemli:4): 3 Satış temsilcisinin bu ay sattığı emlak adedi: 2 Satış temsilcisinin bu ay yaptığı satışların toplam tutarı (TL): 500000 Toplam maaş tutarı: 4400.54 TL #include <stdlib.h> int main() float sabit_ucret=1000.54; float ikramiye; float toplam_maas; int toplam_tutar; int unvan, konut_sayisi; float ek_odeme; printf("satis temsilcisinin unvani (Stajyer:1, Acemi:2, Uzman:3, Kidemli:4):"); scanf("%d",&unvan); printf("satis temsilcisinin bu ay sattigi emlak adedi:"); scanf("%d",&konut_sayisi); printf("satis temsilcisinin bu ay yaptigi satislarin toplam tutari "); scanf("%d",&toplam_tutar); Sayfa#4
if(toplam_tutar<499999) ikramiye=(toplam_tutar/100)*0.25; else if(toplam_tutar>=500000&&toplam_tutar<=999999) ikramiye=(toplam_tutar/100)*0.5; else if(toplam_tutar>=1000000&&toplam_tutar<=1999999) ikramiye=(toplam_tutar/100)*0.75; else ikramiye=(toplam_tutar/100)*1; switch(unvan) case 1: ek_odeme=250; break; case 2: ek_odeme=350; break; case 3: ek_odeme=500; break; case 4: ek_odeme=750; break; default: printf("hatali kod girdiniz\n"); toplam_maas=ek_odeme+sabit_ucret+ikramiye+(konut_sayisi*200); printf("toplam maas tutari %.2f dir",toplam_maas); Sayfa#5