Quiz oynatma
- C kursu
- Orta seviye
- Ders 44/116
- 6 dk
Run fonksiyonuyla soruları sırayla sormayı öğrenirsin.
Quiz oynatma
Üçüncü ders run_quiz fonksiyonunu tanımlar. Bu fonksiyon, soruları sırayla ekrana yazar, her birinin doğru cevaplanıp cevaplanmadığını denetler ve toplam skoru döndürür.
İmza: int run_quiz(struct Question *q, int count). Gövde: bir answers dizisi (örnek {0, 1, 2}) ile kullanıcının cevaplarını temsil eder; for döngüsüyle her soruyu yazdırır; if (answers[i] == q[i].correct) ile denetler; score++ ile sayar. Son olarak return score;. Önceki dersin çözümü başlangıç koduna dahildir.
Döngü ve denetim
run_quiz'in çekirdeği bir for döngüsü ve if denetimidir. Döngü her soruyu yazar; denetim doğru cevabı sayar.
Örnek: for (int i = 0; i < count; i++) { printf("Soru %d: %s\n", i+1, q[i].text); if (answers[i] == q[i].correct) score++; }. i+1 1-tabanlı numara verir; i 0-tabanlı indeksle erişir. answers dizisi kullanıcının cevaplarını temsil eder; gerçek bir uygulamada scanf ile okunur. Burada sabit dizi kullanıyoruz; böylece çıktı deterministik olur.
Uygulama run_quiz fonksiyonunu yaz
int run_quiz(struct Question *q, int count) yaz. Gövdede int answers[3] = {0, 1, 2}; ve int score = 0; tanımla. for (int i = 0; i < count; i++) döngüsüyle printf("Soru %d: %s\n", i + 1, q[i].text); yazdır; if (answers[i] == q[i].correct) score++; ile say. return score; döndür. main içinde int score = run_quiz(questions, count); çağır ve printf("Skor: %d\n", score); ile yazdır.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
struct Question {
char text[64];
int correct;
};
void add_question(struct Question *q, int *count, const char *text, int correct) {
strcpy(q[*count].text, text);
q[*count].correct = correct;
(*count)++;
}
// int run_quiz fonksiyonunu yaz (q ve count parametreleriyle)
// her soruyu "Soru N: text" biçiminde yaz, score'u artır, döndür
// main'de run_quiz'i çağır ve "Skor: X" yazdır
int main(void) {
struct Question questions[10];
int count = 0;
add_question(questions, &count, "Başkent?", 0);
add_question(questions, &count, "2+2?", 1);
printf("%d soru eklendi\n", count);
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
struct Question {
char text[64];
int correct;
};
void add_question(struct Question *q, int *count, const char *text, int correct) {
strcpy(q[*count].text, text);
q[*count].correct = correct;
(*count)++;
}
int run_quiz(struct Question *q, int count) {
int answers[3] = {0, 1, 2};
int score = 0;
for (int i = 0; i < count; i++) {
printf("Soru %d: %s\n", i + 1, q[i].text);
if (answers[i] == q[i].correct) {
score++;
}
}
return score;
}
int main(void) {
struct Question questions[10];
int count = 0;
add_question(questions, &count, "Başkent?", 0);
add_question(questions, &count, "2+2?", 1);
printf("%d soru eklendi\n", count);
int score = run_quiz(questions, count);
printf("Skor: %d\n", score);
return 0;
}Beklenen çıktı
2 soru eklendi Soru 1: Başkent? Soru 2: 2+2? Skor: 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 run_quiz fonksiyonu ne döndürür?
- Soru metnini
- Doğru sayısını Doğru cevap
- Cevap dizisini
- Soru sayısını
Açıklama: run_quiz doğru cevap sayısını döndürür.
2 run_quiz parçalarını eşle
| Kavram | Anlamı |
|---|---|
for (i=0; i<count; i++) |
Döngü |
printf("Soru %d: %s") |
Soru yazdırma |
if (answers[i] == q[i].correct) |
Denetim |
return score |
Skor döndürme |
3 Döngü koşulunu tamamla
for (int i = 0; i ____; i++)
for (int i = 0; i < count; i++)
Açıklama: i < count döngüyü count kez döndürür.