int i, a[] = {1,2,3,4,5,6,7};
void f(int i, int j)
{ int temp;
if (i==j) return;
temp = a[i];
a[i] = a[j];
a[j] = temp; }
main(void)
{ f(1,2);
f(2,6);
f(6,1);
for (i=0; i<7; i++) printf("%d ",a[i]); }
A) 1 2 7 4 5 6 3
B) 1 6 3 4 5 2 7
C) 1 2 3 4 5 6 7
D) 1 1 1 1 1 1 1
E) Derleme hatası oluşacağından, çalıştırılamaz.
CEVAP: Nispeten kolay bir soru. Öncelikle programda herhangi bir sentaktik hata yok. Tanımlanan f fonksiyonu bir değiş tokuş fonksiyonu (swap) olup parametrelerde verilen i. ve j. elemanların yerini değiştirir. Yapmamız gereken her f fonksiyonu çağrıldığında a dizisinin içeriğini yazarak takip etmek.
f(1,2) sonrası : 1 3 2 4 5 6 7
f(2,6) sonrası : 1 3 7 4 5 6 2
f(6,1) sonrası : 1 2 7 4 5 6 3
Görüldüğü gibi son durumda dizimizde sırasıyla 1 2 7 4 5 6 3 değerleri bulunur. Doğru seçenek A şıkkı.
İlgili Yazılar:
- Ulusal Bilgisayar Olimpiyadı 2009 – Soru 38 Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. ‘8(i3(>))’...
- Ulusal Bilgisayar Olimpiyadı 2009 – Soru 41 Aşağıdaki programın çalışması sonucu ekrana ne basılır? int n=5, t,...
- Ulusal Bilgisayar Olimpiyadı 2009 – Soru 42 Aşağıdaki programın çalışması sonucu ne basılır? int n=5, t, a,...
- Ulusal Bilgisayar Olimpiyadı 2009 – Soru 39 Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. Aşağıdakilerden...
- Ulusal Bilgisayar Olimpiyadı 2009 – Soru 40 Aşağıdakilerden hangisi 13 numaralı şekli çizer? A) 4([i<[i]>[i]]>) B)...

0 Yorum.