Skip to content

12-dars: Oylik imtihon (C tili asoslari)

Dars haqida

Davomiyligi: 90 daqiqa Format: Test + amaliy ish Maqsad: 4-oy davomida o'rganilgan C tili asoslarini baholash.

Imtihon tuzilmasi

QismVaqtBall
1-qism: Test25 daqiqa25 ball
2-qism: Kod yozish (3 ta vazifa)35 daqiqa35 ball
3-qism: Mini loyiha (yangi)30 daqiqa40 ball
Jami90 daqiqa100 ball

O'tish chegarasi: 60 ball

1-qism: Test (25 ball)

20 ta savol, har biri 1.25 ball. Vaqt — 25 daqiqa.

Asoslar (savol 1–5)

1. Har C dasturda kerakli funksiya:

  • a) start()
  • b) main()
  • c) program()
  • d) init()

2. Statement oxiriga qaysi belgi qo'yiladi?

  • a) . (nuqta)
  • b) , (vergul)
  • c) ; (nuqtali vergul)
  • d) : (ikki nuqta)

3. Kompilyatsiya buyrug'i (gcc):

  • a) gcc hello.c
  • b) gcc hello.c -o hello
  • c) gcc compile hello.c
  • d) gcc -compile hello.c

4. printf qaysi header'da?

  • a) <string.h>
  • b) <math.h>
  • c) <stdio.h>
  • d) <stdlib.h>

5. %d qaysi tur uchun?

  • a) double
  • b) float
  • c) int
  • d) char

O'zgaruvchilar va operatorlar (savol 6–10)

6. int x = 5; x++; natija:

  • a) 5
  • b) 6
  • c) 4
  • d) 10

7. 10 % 3 natija:

  • a) 3.33
  • b) 3
  • c) 1
  • d) 0

8. Quyidagi koddan keyin x qancha?

c
int x = 10;
x += 5;
x *= 2;
x -= 10;
  • a) 10
  • b) 15
  • c) 20
  • d) 25

9. int natija = 5 / 2; natija:

  • a) 2.5
  • b) 2
  • c) 3
  • d) 2.0

10. AND operatori:

  • a) &
  • b) &&
  • c) and
  • d) ||

Sikllar va shartlar (savol 11–15)

11. for (int i = 0; i < 5; i++) — sikl necha marta ishlaydi?

  • a) 4
  • b) 5
  • c) 6
  • d) Cheksiz

12. do-while va while farqi:

  • a) Farq yo'q
  • b) do-while kamida bir marta ishlaydi
  • c) while kamida bir marta ishlaydi
  • d) do-while tez

13. switch'da break ishlatish nima uchun?

  • a) Switch'ni boshlash
  • b) Switch'dan chiqish
  • c) Programni to'xtatish
  • d) Default case

14. Quyidagi natija:

c
int x = 5;
if (x > 3 && x < 10) printf("A");
else if (x == 5) printf("B");
else printf("C");
  • a) A
  • b) B
  • c) AB
  • d) C

15. continue operatori:

  • a) Sikldan chiqish
  • b) Keyingi iteratsiyaga o'tish
  • c) Funksiyani to'xtatish
  • d) Boshlash

Funksiyalar (savol 16–20)

16. Funksiya prototype:

  • a) Funksiya ichidagi kod
  • b) Funksiya nomi va parametrlarni e'lon qilish
  • c) Funksiyani chaqirish
  • d) Funksiyani o'chirish

17. void func(void) ning ma'nosi:

  • a) func hech narsa qaytarmaydi va parameter yo'q
  • b) func bo'sh
  • c) func ishlamaydi
  • d) Xato

18. Rekursiyada base case:

  • a) Funksiyani boshlash
  • b) Funksiyani to'xtatish sharti
  • c) Funksiya nomi
  • d) Yangi rekursiya

19. scanf("%d", x) da xato:

  • a) &x bo'lishi kerak
  • b) Format noto'g'ri
  • c) Funksiya nomi
  • d) Xato yo'q

20. string.h qaysi funksiya bermaydi?

  • a) strlen
  • b) strcpy
  • c) strcmp
  • d) strprint

Test javoblari (o'qituvchi uchun)

1-b, 2-c, 3-b, 4-c, 5-c, 6-b, 7-c, 8-c, 9-b, 10-b, 11-b, 12-b, 13-b, 14-a, 15-b, 16-b, 17-a, 18-b, 19-a, 20-d

2-qism: Kod yozish (35 ball)

Vaqt: 35 daqiqa. 3 ta vazifa.

Vazifa 1: O'rtacha (10 ball)

average.c faylida quyidagini yozing:

  • Foydalanuvchi 10 ta raqam kiritsin
  • Ularning yig'indi, o'rtacha, eng katta va eng kichigini topib chiqaring

Misol:

Raqam 1: 5
Raqam 2: 10
Raqam 3: 3
...

Yig'indi: 50
O'rtacha: 5.00
Eng katta: 10
Eng kichik: 1

Baholash:

  • Input to'g'ri o'qiladi: 2 ball
  • Yig'indi to'g'ri: 2 ball
  • O'rtacha to'g'ri (float): 2 ball
  • Max va Min: 2 ball
  • Toza kod (funksiyalar): 2 ball

Vazifa 2: Tub son tekshirish (10 ball)

prime-checker.c:

  • Funksiya int is_prime(int n) yarating
  • Foydalanuvchi raqam kiritsin
  • Tub yoki yo'qligini ayting
  • Bonus: 1 dan kiritilgan raqamgacha barcha tub sonlarni chiqaring

Misol:

Raqam: 17
17 — tub son
1-17 oraligida tub sonlar: 2 3 5 7 11 13 17

Baholash:

  • is_prime funksiya to'g'ri: 4 ball
  • main'da chaqirish: 2 ball
  • Bonus (barcha tub sonlar): 4 ball

Vazifa 3: String tahlili (15 ball)

string-analyzer.c:

  • Foydalanuvchidan string oling (fgets)
  • Quyidagilarni hisoblang:
    • Belgilar soni
    • So'zlar soni
    • Unli harflar soni
    • Undosh harflar soni
    • Raqamlar soni
    • Maxsus belgilar (boshqa)

Misol:

Matn: Hello World 123!

Tahlil:
- Belgilar: 16
- So'zlar: 3
- Unli: 3
- Undosh: 7
- Raqamlar: 3
- Maxsus: 3

Baholash:

  • Input olish (fgets): 2 ball
  • Belgilar soni: 2 ball
  • So'zlar soni: 3 ball
  • Unli/undosh: 4 ball
  • Raqam va maxsus: 2 ball
  • Funksiyalarga bo'lingan: 2 ball

3-qism: Mini loyiha — yangi (40 ball)

Vaqt: 30 daqiqa

Vazifa: To-Do List

todo.c faylida To-Do List dasturini yarating.

Imkoniyatlari:

  1. Vazifa qo'shish (max 20 ta)
  2. Vazifa ro'yxati
  3. Bajarilgan deb belgilash
  4. O'chirish
  5. Statistika (jami, bajarilgan, qolgan)
  6. Chiqish

Skeleton

c
#include <stdio.h>
#include <string.h>

#define MAX_TASKS 20
#define MAX_LEN 100

char tasks[MAX_TASKS][MAX_LEN];
int done[MAX_TASKS];
int task_count = 0;

void print_menu(void);
void add_task(void);
void show_tasks(void);
void mark_done(void);
void delete_task(void);
void show_stats(void);

int main(void) {
    int choice;
    
    do {
        print_menu();
        scanf("%d", &choice);
        getchar();  // \n tozalash
        
        switch (choice) {
            case 1: add_task(); break;
            case 2: show_tasks(); break;
            case 3: mark_done(); break;
            case 4: delete_task(); break;
            case 5: show_stats(); break;
            case 0: printf("Xayr!\n"); break;
            default: printf("Noma'lum\n");
        }
    } while (choice != 0);
    
    return 0;
}

// ... funksiyalarni to'ldiring

Baholash

MezonBall
add_task ishlaydi7
show_tasks ko'rsatadi (✓ bajarilganlar)7
mark_done to'g'ri6
delete_task to'g'ri6
show_stats to'g'ri5
Validation (limit, bo'sh)4
Kod toza (funksiyalar)3
Hech qanday crash2
Jami40

Bonus (qo'shimcha 5 ball)

  • Vazifalarni faylga saqlash va o'qish
  • Priority darajalari (yuqori, o'rta, past)
  • Tanlash bilan saralash

Imtihondan oldin tayyorgarlik

Tavsiyalar

  1. Yaxshi uxlang
  2. Compiler tekshiring: gcc --version
  3. VS Code tayyor
  4. GitHub tayyor
  5. Vaqtni boshqaring:
    • Test: 25 daqiqa
    • Kod yozish: 35 daqiqa
    • Loyiha: 30 daqiqa

Topshirish

  1. GitHub'ga repo: 4-oy-imtihon
  2. Fayllar:
    • average.c
    • prime-checker.c
    • string-analyzer.c
    • todo.c
    • README.md — qisqacha tavsif
  3. Hammasi commit'lar bilan
  4. Email orqali repo URL'ni o'qituvchiga

Subject: 4-oy imtihon — [Ism Familiya]

Imtihondan keyin

Natijalar

  • 90+ — A+, ajoyib
  • 80–89 — A
  • 70–79 — B
  • 60–69 — C
  • < 60 — F, qayta topshirish

5-oyga tayyorgarlik

5-oy: C davomi — massiv (array), string'lar chuqurroq, algoritmlar (sort, search), pointer asoslari.

Tayyorgarlik:

  • 4-oy darslarini takror ko'ring
  • c-darslari repo'ngizni tartibga keltiring
  • README'ni to'liq qiling
  • O'zingizni mini loyiha'ga qaytib o'tib ko'ring

Refleksiya

Drive'da: "4-oy refleksiya"

  1. Eng yoqqan mavzu?
  2. Eng qiyin mavzu?
  3. C va Scratch farqi nima?
  4. 5-oyga maqsadlar?

Aloqa

Imtihon vaqtida muammo bo'lsa — o'qituvchini chaqiring.

Yutuqlar tilab qolaman! 🚀

Master IT o'quv markazi — o'qitish rejasi