Anda di halaman 1dari 7

Seleksi Olimpiade Komputer Tahap-2

Multiple Choice

1. Perhatikan potongan program berikut:


a=3;
if ((a % 2 != 1) && (a > 0))
printf("genap");
printf("positif");
Keluaran potongan program tersebut adalah ....
A. tidak ada keluaran
B. genap
C. positif
D. genappositif
E. positifgenap
ANS: C

2. Perhatikan kondisi if berikut untuk a dan b bertipe int:


if (a > b / 2) {
printf("bebek\n");
} else {
printf("ayam\n");
}
Perhatikan pula variasi-variasi kondisi if berikut:
I.------------------
if (b / 2 > a) {
printf("bebek\n");
} else {
printf("ayam\n");
}

II.------------------
if (b / 2 > a) {
printf("ayam\n");
} else {
printf("bebek\n");
}

III.------------------
if (2*a > b) {
printf("ayam\n");
} else {
printf("bebek\n");
}

IV.------------------
if (b / 2 >= a) {
printf("bebek\n");
} else {
printf("ayam\n");
}

V.------------------
if (2*a > b) {
printf("bebek\n");
} else {
printf("ayam\n");
}
Variasi if yang setara dengan kondisi if awal adalah ....
A. I
B. II
C. III
D. IV
E. V
ANS: E

3. Perhatikan potongan program berikut:


u = (1 <= x) && (x <= 10);
v = (0 <= y) && (y < 50);

if (u && v) {
printf("masuk\n");
} else {
printf("keluar\n");
}
Misalkan x dan y adalah variabel bertipe longint, serta u dan v merupakan variabel bertipe boolean.
Agar potongan program tersebut menghasilkan keluaran masuk, nilai x dan y yang perlu
dimasukkan adalah ....
A. x = 0, y = 0
B. x = 0, y = 49
C. x = 1, y = 1
D. x = 1, y = 50
E. x = 10, y = 50
ANS: C

4. Perhatikan potongan program berikut:


nilai = 85;
if (nilai >= 80) {
ch = 'A';
}
if (nilai >= 70) {
ch = 'B';
}
if (nilai >= 60) {
ch = 'C';
}
if (nilai >= 50) {
ch = 'D';
}
if (nilai >= 40) {
ch = 'E';
}
printf("%c\n", ch);

Keluaran potongan program tersebut adalah ....


A. A
B. B
C. C
D. D
E. E
ANS: E

5. Perhatikan potongan program berikut:


int a = 26;
if (!(a % 2 == 1)) {
printf("genap ");
} else {
printf("ganjil ");
}
if (a > 0) {
printf("positif\n");
} else if (a < 0) {
printf("negatif\n");
} else {
printf("nol\n");
}
Keluaran potongan program tersebut adalah ....
A. genap positif
B. ganjil positif
C. genap negatif
D. ganji negatif
E. ganjil nol
ANS: A

6. Perhatikan potongan program berikut:


a = 7;
if (a <= 3) {
a = a + 3;
}
if (a <= 10) {
a = a + 10;
}
if (a <= 20) {
a = a + 20
} else if (a <= 40) {
a = a + 40;
}
printf("%d\n", a);
Keluaran potongan program tersebut adalah ....
A. 25
B. 37
C. 40
D. 35
E. 80
ANS: B

7. Perhatikan potongan program berikut:


int a = -2;
int b = a+a;
int c = b*b;
if (a>b)
if (c<b)
printf("%d\n", c);
else
printf("%d\n", b);
else
if (c<a)
printf("%d\n", c);
else
printf("%d\n", a);
Keluaran potongan program tersebut adalah ....
A. -2
B. 4
C. -4
D. 16
E. -16
ANS: C

8. Perhatikan potongan program berikut:


int a = -5;
if (a > 0) {
printf("one\n");
} else if (a != 5) {
printf("two\n");
} else if (a < 0) {
printf("three\n");
} else {
printf("four\n");
}
Keluaran potongan program tersebut adalah ....
A. one
B. two
C. three
D. four
E. tidak ada keluaran
ANS: B

9. Perhatikan potongan program berikut:


int x = 2;
int y = 3;
x = x*y + 1;
y = x*y - 1;
x = y;

if (x < y) {
x = y - x;
} else if (x > y) {
x = x - y;
} else {
x = x / x;
}
printf("%d\n", x);

Keluaran potongan program tersebut adalah ....


A. 0
B. 1
C. 7
D. 13
E. 20
ANS: B

10. Perhatikan potongan program berikut:


int i = 100;
while (i > 0)
printf("+");
i = i / 2;
Keluaran potongan program tersebut adalah ...
A. ++++++++
B. +++++++
C. ++++++
D. terjadi runtime error
E. + terus tercetak tanpa henti
ANS: E

11. Perhatikan potongan program berikut:


int a = -50;
do
printf("masuk ");
while (a > 0);
printf(" keluar");
Keluaran potongan program tersebut adalah ....
A. masuk keluar
B. keluar
C. masuk
D. tidak bisa ditentukan
E. terjadi runtime error
ANS: A

12. Perhatikan potongan program berikut:


int n = 5;
int i = 1;
while (i < n) {
printf("%d", n);
i++;
}
Keluaran potongan program tersebut adalah ....
A. 12345
B. terjadi infinite loop
C. 1234
D. 5555
E. 55555
ANS: D

13. Perhatikan dua buah potongan program berikut:


I
int i = 1;
int n = 10;
for (int i = 1; i <= n; i++) {
printf("%d", 2 * i);
}

II
int i = 2;
int n = 10;
... // isi di sini
{
printf("%d", i);
i += 2;
}
Potongan kode yang paling tepat untuk mengisi bagian kosong agar potongan program I dan
potongan program II menghasilkan keluaran yang sama adalah ....
A. while (i <= n)
B. while (i < n)
C. while (i <= 2 * n - 1)
D. while (i < 2 * n)
E. while (i <= 2 * n)
ANS: E

14. Perhatikan potongan program berikut:


t = 0;
for (int i = 1; i <= n; i++) {
t = t + (n-i);
}
printf("%d", t);
Jika n = 10, keluaran potongan program tersebut adalah ....
A. 100
B. 45
C. 55
D. 10
E. 75
ANS: B

15. Perhatikan potongan program berikut:


int n = 100;
int i = 0;
while (n > 1) {
i = i + 1;
n = n - (n / 2);
}
printf("%d", i);
Keluaran potongan program tersebut adalah ....
A. 6
B. 7
C. 8
D. 9
E. 10
ANS: B

16. Perhatikan potongan program berikut:


int a = 45;
int b = 56;
do {
a = a - 3;
b = b - 5;
} while ((a >= 0) || (b >= 0));
printf("%d %d", a, b);
Keluaran potongan program tersebut adalah ....
A. -3 -24
B. 9 -4
C. 12 1
D. 42 51
E. terjadi infinite loop
ANS: A

Anda mungkin juga menyukai