Tôi đã googled "mã 20q" và tìm thấy cái này: http : // mosaic.cn portfolio.com/B142LCW2008A197
Phiên bản này chỉ dành cho động vật nhưng 20 Câu hỏi thực tế có thể có một algoritm tương tự.
Dưới đây là tổng quan nhanh về mã tôi đã liên kết:
Có một số câu trả lời khác nhau được mã hóa cứng vào chương trình. Một số thuộc tính TRUE hoặc FALSE sau đó được gán cho chúng:
#define ANIMALS_LIST "daddylonglegs bee penguin eagle giraffe octopus tiger elephant jellyfish bull \nparrot dolphin python crocodile cat leopard monkey zebra sheep rat \nowl spider frog polarbear snail tortoise rabbit salmon rhino fox"
#define MAMMALS "0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 1"
#define FLYING_ANIMALS "1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
#define WATER_ANIMALS "0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0"
#define BEAK "0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0"
...
Như bạn có thể thấy một con ong không phải là động vật có vú nhưng nó bay, v.v.
Có một mảng cho mỗi nhóm:
int mammals[ TOTAL_ANIMALS ] = { 0 };
int flying_animals[ TOTAL_ANIMALS ] = { 0 };
int water_animals[ TOTAL_ANIMALS ] = { 0 };
...
Khi mỗi câu hỏi được hỏi:
askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals );
Chương trình xem xét định nghĩa của danh mục phù hợp và theo dõi con vật nào rất có thể là loài mà bạn đang nghĩ đến dựa trên các giá trị TRUE hoặc FALSE và câu trả lời Có hoặc Không trả lời cho câu hỏi của bạn.
Điều này được thực hiện trong:
void askUserQuestion( int guessNumber, char* question, int* animalData );