Dasar Bahasa C · Pelajaran 3 dari 12
Masukan dengan scanf dan operator
9 menit baca · BelajarCode
Membaca masukan
scanf membaca masukan sesuai format, lalu menyimpannya ke alamat variabel. Karena itu nama variabel diawali tanda &.
1#include <stdio.h>23int main(void) {4 int a, b;5 if (scanf("%d %d", &a, &b) != 2) {6 printf("Masukan harus dua bilangan bulat\n");7 return 1;8 }9 printf("%d + %d = %d\n", a, b, a + b);10 printf("%d / %d = %d sisa %d\n", a, b, a / b, a % b);11 printf("%d / %d = %.2f\n", a, b, (double)a / b);12 return 0;13}17 5
17 + 5 = 22 17 / 5 = 3 sisa 2 17 / 5 = 3.40
scanfmengembalikan banyaknya nilai yang berhasil dibaca. Memeriksanya adalah kebiasaan baik, supaya program tidak memakai nilai sampah jika masukannya salah.- Pembagian dua
intmenghasilkanint: 17 / 5 = 3, bagian desimalnya dibuang. (double)aadalah casting, yaitu mengubah tipe a menjadi double sebelum dibagi, sehingga hasilnya 3.40.
Masukan di Playground
C dijalankan di server, jadi program tidak bisa berhenti menunggu ketikanmu di tengah jalan. Ketik masukannya lebih dulu di kotak masukan Playground, satu baris setiap Enter, lalu tekan Jalankan.
Dua kesalahan scanf yang paling sering
- Lupa &: scanf("%d", x) membuat program menulis ke alamat yang salah dan biasanya berhenti mendadak. - Untuk double, scanf memakai %lf, bukan %f. Di printf, keduanya boleh.
Operator penugasan dan increment
1#include <stdio.h>23int main(void) {4 int x = 10;5 x += 5;6 x *= 2;7 x -= 4;8 printf("x = %d\n", x);910 int i = 5;11 int a = i++;12 int b = ++i;13 printf("a = %d, b = %d, i = %d\n", a, b, i);14 return 0;15}x = 26 a = 5, b = 7, i = 7
i++(postfix) memakai nilai lama dulu, baru menambah 1.++i(prefix) menambah 1 dulu, baru memakai nilainya.
Untuk menghindari kebingungan, banyak programmer menulis i++ sebagai pernyataan tersendiri, tidak dicampur dengan ekspresi lain.
Cek pemahaman
Berapa nilai 7 / 2 * 2.0 di C?
Latihan
Konversi detik
Baca sebuah bilangan bulat berupa total detik, lalu tampilkan dalam format jam:menit:detik dengan dua digit, misalnya 3725 menjadi 01:02:05.
Pembahasan
1#include <stdio.h>23int main(void) {4 int total;5 if (scanf("%d", &total) != 1) return 1;6 int jam = total / 3600;7 int menit = total % 3600 / 60;8 int detik = total % 60;9 printf("%02d:%02d:%02d\n", jam, menit, detik);10 return 0;11}3725
01:02:05
%02d menulis bilangan selebar 2 dengan nol di depan jika perlu.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler C online.