Operator, Operand, and Arithmetic
Latihan Soal — Operator, Operand & Arithmetic (Bahasa C)
12 soal utama (sebagian dalam bentuk cerita) + 3 soal tantangan tingkat lanjut pada section More Challenge. Mencakup sub-topik: Operator & Operand, Assignment, Arithmetic, Relational, Conditional Expression (ternary), Logical, Bitwise, Pointer Operators, serta Precedence & Associativity.
Pengumpulan Code
Kumpulkan seluruh code jawaban kalian melalui form berikut:
🔗 Link pengumpulan: https://tinyurl.com/upload-code-ppti-27
Soal 1 — Kalkulator Lengkap (basic)
Deskripsi Baca dua bilangan bulat A dan B (dijamin B ≠ 0). Tampilkan hasil penjumlahan, pengurangan, perkalian, pembagian bulat, dan sisa bagi (modulo).
Format Input Satu baris berisi dua bilangan bulat A dan B, dipisahkan spasi.
Format Output
Jumlah: <A+B>
Selisih: <A-B>
Kali: <A*B>
Bagi: <A/B>
Sisa: <A%B>
Contoh Input
17 5
Contoh Output
Jumlah: 22
Selisih: 12
Kali: 85
Bagi: 3
Sisa: 2
Soal 2 — Skor Game Rina (basic)
Deskripsi Rina sedang bermain sebuah game dengan skor awal N. Selama permainan terjadi tiga kejadian secara berurutan:
- Ia menyelesaikan misi dan mendapat bonus 10 poin.
- Ia memicu combo sehingga seluruh skornya dikalikan 3.
- Ia terkena jebakan dan skornya berkurang 5 poin.
Gunakan compound assignment operator (+=, *=, -=). Tampilkan skor Rina setelah
setiap kejadian.
Format Input Satu baris berisi bilangan bulat N (skor awal).
Format Output Tiga baris berisi skor setelah kejadian 1, 2, dan 3.
Contoh Input
4
Contoh Output
14
42
37
Soal 3 — Kembalian Kasir (basic)
Deskripsi Sebuah minimarket tidak memiliki pecahan koin di bawah Rp10. Seorang kasir menerima total belanja sebesar N rupiah. Agar mudah, kasir membulatkan ke bawah ke kelipatan 10 terdekat, lalu mencatat berapa rupiah "sisa" yang tidak tertagih (digit satuan).
Tampilkan besarnya sisa (digit satuan) dan total setelah dibulatkan ke bawah ke kelipatan 10.
Format Input Satu baris berisi satu bilangan bulat positif N.
Format Output
Sisa: <digit satuan N>
Dibulatkan: <N dibulatkan ke bawah ke kelipatan 10>
Contoh Input
2748
Contoh Output
Sisa: 8
Dibulatkan: 2740
Soal 4 — Hasil Perbandingan (basic–intermediate)
Deskripsi Baca dua bilangan bulat A dan B. Tampilkan hasil evaluasi dari tiga operator relasional: A > B, A < B, dan A == B. Di C, hasil ekspresi relasional bernilai 1 (benar) atau 0 (salah).
Format Input Satu baris berisi dua bilangan bulat A dan B.
Format Output
A>B: <0/1>
A<B: <0/1>
A==B: <0/1>
Contoh Input
7 10
Contoh Output
A>B: 0
A<B: 1
A==B: 0
Soal 5 — Nilai Tertinggi Ujian (intermediate)
Deskripsi
Dua siswa, Budi dan Ani, mengikuti ujian akhir dengan nilai masing-masing A dan B.
Wali kelas ingin mengumumkan nilai tertinggi di antara keduanya untuk dipajang di
papan prestasi. Tentukan nilai tertinggi tersebut menggunakan conditional (ternary)
operator ?:, bukan if.
Format Input Satu baris berisi dua bilangan bulat A dan B.
Format Output Satu baris berisi nilai tertinggi.
Contoh Input
23 41
Contoh Output
41
Soal 6 — Pembagian Kelompok Peserta (intermediate)
Deskripsi
Panitia sebuah seminar membagi peserta ke dalam dua kelompok berdasarkan nomor peserta:
peserta dengan nomor genap masuk kelompok Genap, dan yang bernomor ganjil masuk kelompok
Ganjil. Diberikan sebuah nomor peserta, tentukan ke kelompok mana ia masuk. Gunakan
operator modulo dan ternary.
Format Input Satu baris berisi satu bilangan bulat (nomor peserta).
Format Output
Satu baris: Genap atau Ganjil.
Contoh Input
15
Contoh Output
Ganjil
Soal 7 — Cek Rentang (intermediate)
Deskripsi
Baca sebuah bilangan bulat N. Tentukan apakah N berada dalam rentang 1 sampai 100
(inklusif) menggunakan operator logika &&. Tampilkan Ya jika di dalam rentang,
Tidak jika di luar.
Format Input Satu baris berisi satu bilangan bulat N.
Format Output
Satu baris: Ya atau Tidak.
Contoh Input
57
Contoh Output
Ya
Soal 8 — Tahun Kabisat (intermediate–advanced)
Deskripsi
Baca sebuah tahun (bilangan bulat). Tentukan apakah tahun tersebut kabisat.
Sebuah tahun disebut kabisat jika habis dibagi 4 dan tidak habis dibagi 100,
atau habis dibagi 400. Gunakan kombinasi operator logika dan ternary (tanpa if).
Tampilkan Kabisat atau Bukan Kabisat.
Format Input Satu baris berisi satu bilangan bulat tahun.
Format Output
Satu baris: Kabisat atau Bukan Kabisat.
Contoh Input
2000
Contoh Output
Kabisat
Soal 9 — Hak Akses Pengguna (intermediate)
Deskripsi Sebuah sistem menyimpan hak akses setiap pengguna sebagai bilangan bulat (setiap bit mewakili satu izin). Diberikan hak akses pengguna A dan pengguna B, admin ingin mengetahui:
- Izin gabungan — izin yang dimiliki oleh salah satu atau kedua pengguna (operasi OR).
- Izin bersama — izin yang dimiliki oleh kedua pengguna (operasi AND).
- Izin berbeda — izin yang hanya dimiliki salah satu pengguna saja (operasi XOR).
Tampilkan ketiga hasil tersebut.
Format Input Satu baris berisi dua bilangan bulat non-negatif A dan B.
Format Output
Gabungan: <A|B>
Bersama: <A&B>
Berbeda: <A^B>
Contoh Input
12 10
Contoh Output
Gabungan: 14
Bersama: 8
Berbeda: 6
Soal 10 — Perkalian & Pembagian dengan Shift (intermediate)
Deskripsi Baca sebuah bilangan bulat non-negatif N. Dengan menggunakan operator geser bit (shift), tampilkan hasil N dikali 2, N dikali 4, dan N dibagi 2.
Format Input Satu baris berisi satu bilangan bulat N.
Format Output
Kali2: <N<<1>
Kali4: <N<<2>
Bagi2: <N>>1>
Contoh Input
5
Contoh Output
Kali2: 10
Kali4: 20
Bagi2: 2
Soal 11 — Menukar Isi Dua Wadah (advanced)
Deskripsi Di laboratorium, ada dua wadah berlabel A dan B yang masing-masing berisi sejumlah cairan (dinyatakan sebagai bilangan bulat). Petugas ingin menukar isi kedua wadah. Namun, alih-alih memindahkan cairannya, sistem digital hanya menukar isinya dengan mengakses alamat masing-masing wadah.
Tukar nilai A dan B menggunakan pointer (operator & untuk alamat dan * untuk
mengakses nilai). Tampilkan isi kedua wadah setelah ditukar.
Format Input Satu baris berisi dua bilangan bulat A dan B.
Format Output
A=<nilai baru A> B=<nilai baru B>
Contoh Input
3 8
Contoh Output
A=8 B=3
Soal 12 — Kekuatan Precedence (advanced)
Deskripsi Baca tiga bilangan bulat A, B, dan C. Hitung dan tampilkan hasil dari dua ekspresi berikut, lalu amati perbedaannya akibat operator precedence:
A + B * C(tanpa kurung)(A + B) * C(dengan kurung)
Format Input Satu baris berisi tiga bilangan bulat A, B, C.
Format Output
Tanpa kurung: <hasil>
Dengan kurung: <hasil>
Contoh Input
2 3 4
Contoh Output
Tanpa kurung: 14
Dengan kurung: 20
🔥 MORE CHALLENGE
3 soal tingkat lanjut yang benar-benar menguji pemahaman operator. Masih tanpa if/for/while.
Challenge 1 — Tukar Nilai Tanpa Variabel Bantu
Deskripsi
Pada Soal 11, pertukaran nilai memerlukan variabel bantu (temp). Sekarang, tukar nilai
dua bilangan bulat A dan B tanpa menggunakan variabel bantu maupun pointer — hanya
dengan operator bitwise XOR (^). Tampilkan nilai setelah ditukar.
Petunjuk: manfaatkan sifat XOR bahwa x ^ x = 0 dan x ^ 0 = x.
Format Input Satu baris berisi dua bilangan bulat A dan B.
Format Output
A=<nilai baru A> B=<nilai baru B>
Contoh Input
6 9
Contoh Output
A=9 B=6
Challenge 2 — Deteksi Bilangan Pangkat Dua
Deskripsi Sebuah bilangan bulat positif N disebut pangkat dua jika dapat ditulis sebagai 2ᵏ (misalnya 1, 2, 4, 8, 16, ...). Ciri uniknya: dalam representasi biner, bilangan pangkat dua memiliki tepat satu bit yang bernilai 1.
Tentukan apakah N adalah pangkat dua hanya menggunakan operator bitwise (tanpa perulangan).
Tampilkan Ya atau Tidak.
Petunjuk: perhatikan apa yang terjadi pada N & (N - 1).
Format Input Satu baris berisi satu bilangan bulat positif N.
Format Output
Satu baris: Ya atau Tidak.
Contoh Input
16
Contoh Output
Ya
Challenge 3 — Nilai Mutlak Tanpa Percabangan
Deskripsi
Hitung nilai mutlak (absolut) dari sebuah bilangan bulat N tanpa menggunakan if,
fungsi abs(), maupun ternary ?: — hanya dengan operator bitwise dan aritmatika.
Asumsikan tipe int berukuran 32-bit.
Petunjuk: geser kanan aritmatika sejauh 31 bit menghasilkan "mask" bernilai 0 (untuk bilangan positif) atau -1 / semua bit 1 (untuk bilangan negatif). Manfaatkan mask itu.
Format Input Satu baris berisi satu bilangan bulat N (boleh negatif).
Format Output Satu baris berisi nilai mutlak dari N.
Contoh Input
-27
Contoh Output
27