Anda di halaman 1dari 10

KODE SOAL:

NIM:____________________

UJIAN AKHIR SEMESTER GANJIL 2010-2011


ALGORITME DAN PEMROGRAMAN
Ketentuan Ujian:
1. Ujian bersifat catatan tertutup
2. Jawaban dituliskan pada lembar jawaban yang disediakan
3. Jawaban ditulis dengan menggunakan tinta
4. Di atas meja hanya diperbolehkan meletakkan alat tulis, kertas soal dan kertas jawaban
5. Tidak diperkenankan membawa dan mengaktifkan alat komunikasi dan alat elektronik dalam bentuk
apapun
6. Jika ada pertanyaan silahkan bertanya pada pengawas, TIDAK kepada sesama peserta
7. Setelah selesai peserta meninggalkan lembar soal dan jawaban di atas meja dalam keadaan tertutup
8. Segala bentuk pelanggaran pada aturan ini serta kecurangan selama ujian akan dicatat pada berita acara
dan ujian yang bersangkutan akan diberi nilai NOL

BAGIAN A. PILIHAN GANDA


Silanglah Jawaban yang Benar Pada Lembar Jawaban. Jawaban benar bernilai 3, salah atau
kosong bernilai 0.
1. Perhatikan program berikut:
#include <stdio.h>
int what(int *a, int b) {
int t=*a; *a=b; b=t;
return (*a+b);
}
main() {
int a=5, b=10, c;
printf("%d %d %d\n", a, b, what(&a,b));
return 0;
}
Output program tersebut adalah ..
A. 10 10 15

D. 5 5 15

B. 5 10 15

E. 5 5 5

C. 10 5 15
2. Diketahui sebuah fungsi berikut:
int what(int a, int b) {
if (b <= 1) return a;
else return a+what(a, b - 2);
}
Nilai dari what(10,5) adalah ..
A. 50

D. 20
1

HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

B. 40

NIM:____________________
E. 10

C. 30
3. Diketahui sebuah fungsi berikut:
void what(unsigned a) {
while (a > 0) {
printf("%d", a % 2);
a = a >> 2; //shift kanan dua bit
}
}
Jika dipanggil dengan what(23), maka akan menampilkan output .....
A. 1011

D. 101

B. 111

E. 011

C. 11

4. Perhatikan program berikut:


#include <stdio.h>
main() {
char st1[10]="algoritme";
char *st2=&st1[4];
printf("%s %s\n", st2, st1);
return 0;
}
Output program tersebut adalah .....
A. algoritme algoritme

D. ritme algoritme

B. algor algoritme

E. algoritme algor

C. algor algor
5. Perhatikan program berikut:
#include <stdio.h>
main() {
char *b[] = {"ipb","bogor"};
char *z=&b[1][1];
char *w=b[1];
printf("%s", z);
printf("%s", w);
return 0;
}
Output program tersebut adalah .....
A. bogorbogor

D. ogorbogor

B. ipbipb

E. bogoripb

C. pbbogor
2
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

6. Perhatikan program berikut:


#include <stdio.h>
main() {
int a;
char ch1, ch2;
scanf("%d", &a);
scanf("%c %c", &ch1, &ch2);
printf("%d %c %c\n", a, ch1, ch2);
return 0;
}
Jika diberikan input data 30 a b, maka output program tersebut adalah .....
A. 30 a b

D. 30

B. 30

E. 30

C. 30ab

7. Jika diketahui inisialisasi sebuah struct sebagai berikut


struct titik
{
int x;
int y;
};
struct titik t, y;
struct titik *p=&t;
maka pernyataan yang SALAH untuk mengakses nilai x adalah ..
A. t.x

D. (*p)->x

B. p->x

E. y.x

C. (*p).x
8. Perhatikan program berikut:
#include <stdio.h>
main() {
char *s1="ipb\0bogor";
while (*s1++);
printf("%s\n", s1);
return 0;
}
Output program tersebut adalah .....
A. ipbbogor

D. Program error
3

HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

B. ipb

E. Tidak ada output apapun

C. bogor
9. Perhatikan deklarasi variabel berikut:
int y = 5;
int *yPtr;
Instruksi yang mengarahkan yPtr ke alamat y adalah ..
A. yPtr = &y;

D. &y = yPtr;

yPtr = *y;

E. *y = yPtr;

B.

C. y = yPtr;
10. Jika diketahui variabel array b dan variabel pointer bPtr, maka pernyataan berikut yang
BENAR setelah ada instruksi bPtr = &b[0]; adalah:
A.
B.
C.
D.
E.

nilai b[3] dapat dinyatakan dengan *(bPtr + 3)


nilai b[3] dapat dinyatakan dengan *bPtr+3
nilai b[3] dapat dinyatakan dengan bPtr+3
bPtr++ bernilai sama dengan *(bPtr+1)
bPtr++ bernilai sama dengan bPtr+1

11. Perhatikan deklarasi variabel berikut:


int a[3][3]={{1,2},{3,4},{5}};
int *p=a[1];
Nilai dari p[1] adalah .....
A. 1

D. 4

B. 2

E. 5

C. 3
12. Perhatikan program berikut:
#include <stdio.h>
#define n 5
main() {
int a[n]={1,2,3,4,5};
int i;
for (i=0; i<n/2; i++) a[i]=a[n-i-1];
for (i=0; i<n; i++) printf("%d",a[i]);
return 0;
}
Output program tersebut adalah .....
4
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

A. 54321

D. 12345

B. 12321

E. 12312

C. 54345
13. Ukuran array karakter untuk menampung string
A. 9
B. 10
C. 11

"algor\n\t/s"

adalah

D. 12
E. 13

14. Perhatikan fungsi berikut:


void misteri(unsigned int n) {
if (n > 0) {
misteri(n >> 1);
printf("%d ", n);
}
}
Jika fungsi dipanggil dengan

misteri(15), maka output yang akan dicetak adalah .....

A. 15 7 3 1

D. 15 7 3

B. 1 3 7 15

E. 1

C. 3 7 15
15. Perhatikan fungsi Insertion Sort berikut:
void sort(int t[50], int n) {
int i, j, index;
for (i=1; i<n; i++) {
index = t[i]; j = i;
while ((j>0) && (t[j-1]>index)) {
t[j] = t[j-1]; j = j-1;
}
t[j] = index;
}
}
Jika diketahui array

x[5]={10,40,50,30,20}; maka pada fungsi sort(x,5)

setelah i=2, urutan data pada array x adalah .....


A. 10,40,50,30,20

D. 10,20,40,50,30

B. 10,30,40,50,20

E. 10,40,50,20,30

C. 10,20,30,40,50

5
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

16. Instruksi yang dapat digunakan untuk membaca string dari keyboard dan disimpan ke dalam
variabel bernama inp adalah ...
A. scanf("%c", inp);

D. scanf(sPtr, "%s", &inp);

B. scanf("%c", &inp);

E. fgets(inp);

C. scanf("%s", &inp);

17. Manakah deklarasi berikut yang SALAH ?


A. int a,b=5,c=2;

D. int *ptr;

B. char *st[]={"satu","dua"};

E. float gaji;
int a,b;

C. struct person {
string name;
int age;
};
18. Perhatikan program berikut:
#include <stdio.h>
main() {
char *st="ipb bogor\n/";
int n=0;
while (*st++) n++;
printf("%d\n", n);
return 0;
}
Output dari program di atas adalah .
A. 10

D. 13

B. 11

E. Program error

C. 12
19. Potongan program yang benar untuk membaca data matrik karakter berikut adalah (baris
pertama adalah ukuran matrik).
3 10
..****....
******..**
**...**..*

6
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

A. int i,m,n; char s[50][50];


scanf("%d %d", &m, &n);
for (i=0; i<m; i++)
gets(s[i]);
B. int i,j,m,n; char s[50][50];
scanf("%d %d", &m, &n);
for (i=0; i<m; i++)
for (j=0; j<n; j++) gets(s[i][j]);
C. int i,j,m,n; char s[50][50];
scanf("%d %d", &m, &n);
for (i=0; i<m; i++)
for (j=0; j<n; j++) gets(&s[i][j]);
D. int i,j,m,n; char s[50][50];
scanf("%d %d", &m, &n);
for (i=0; i<m; i++)
for (j=0; j<n; j++) scanf("%c", &s[i][j]);
E. int i,j,m,n; char s[50][50];
scanf("%d %d", &m, &n);
for (i=0; i<m; i++)
for (j=0; j<n; j++) scanf("%s", &s[i][j]);

20. Perhatikan deklarasi di bawah ini!


int *zPtr;
int *aPtr = NULL;
int *sPtr = NULL;
int number, i;
int z[5]={1,2,3,4,5};
sPtr = z;
Pernyataan yang BENAR setelah diberikan deklarasi di atas adalah ......
A. ++Zptr;

D. number = *sPtr;

B. *++z;

E. &aPtr = z[1];

C. *number = zPtr;

7
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

BAGIAN B. ISIAN SINGKAT


Isilah dengan Jawaban yang Singkat dan Tepat pada Lembar Jawaban yang disediakan. Jangan
menambah atau mengurangi baris program di luar instruksi soal.
1. Perhatikan program berikut:
#include <stdio.h>
main() {
int x[10][2]={{30,2},{20,1},{10,5},{50,4},{40,0},{5,-1}};
int av=3;
while (av!=-1) {
printf("%d ", x[av][0]);
av = x[av][1];
}
return 0;
}
Apa output program tersebut? Tuliskan proses untuk mendapatkan output tersebut.
2. Perhatikan program berikut:
int misteri (char *list, int size, char value)
{
int i=0, n=0;
while (i<size-1) {
if (list[i]==value)
n++;
i++;
}
return n;
}
Diketahui nilai list yang dimasukkan adalah "ALGORITME PEMROGRAMAN".
Jika dijalankan misteri (list,22,'M'), apa output program tersebut?

3. Diketahui deklarasi global berikut untuk menggambarkan sebuah koordinat titik (x,y):
struct titik {
int x,y;
};
Dengan menggunakan tipe struct titik di atas dan pernyataan penugasan (assignment),
buatlah definisi sebuah variabel t1 yang merupakan sebuah titik dengan koordinat (10,5), dan
variabel t2 yang merupakan pointer ke t1.
4. Perhatikan program berikut:
#include <stdio.h>
main() {
int i;
int a[5]={10,20,30,40,50};
int *b=&a[1];
8
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

for (i=0; i<3; i++) {


printf("%d ", b[0]);
b++;
}
return 0;
}
Apa output program tersebut? Tuliskan proses untuk mendapatkan output tersebut.

9
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

KODE SOAL:

NIM:____________________

LEMBAR JAWABAN
UJIAN AKHIR SEMESTER GANJIL 2010-2011
ALGORITME DAN PEMROGRAMAN

A.PILIHAN GANDA
Silanglah Jawaban yang Benar

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B

C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C

D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D

E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E

B. ISIAN SINGKAT
Tuliskan Jawaban dengan Singkat dan Tepat pada Kotak
yang telah disediakan
1.

2.

3.

4.

10
HANYA UNTUK LATIHAN TIDAK DIPERJUALBELIKAN

Anda mungkin juga menyukai