Несколько вещей, которые нужно исправить. При объявлении переменных рекомендуется инициализировать их во время объявления. Вместо int a; a = x;
И объявлять переменные только при необходимости. Но это, очевидно, может сводиться к предпочтениям и практике. В C89 переменные должны были быть объявлены в верхней части области видимости, но я могу сказать, что вы не компилируете C89. Вам также не нужно было зацикливаться на ранде 12 раз. Достаточно всего двух звонков, если вы хотите два отдельных целых. Имейте в виду, что ранд не очень хорош, но для практики это нормально. Размещение новой строки после оператора print может сделать вывод более аккуратным. countCorrect
и countIncorrect
были объявлены, но не инициализированы в 0, а затем увеличены. Это плохая практика, потому что вы не знаете начальное значение любой переменной и не получите точный счет. Я предполагаю, что вы хотите выйти только тогда, когда пользователь вводит 4, но продолжать цикл в противном случае? Поместите переключатель за пределы цикла, после того как пользователь угадает продукт, прочитайте выбор пользователя и используйте это значение в конце цикла do while.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int guess(){
int x = 1+rand()%12;
int y = 1+rand()%12;
printf("The two random numbers generated are : %d and %d\n", x,y);
printf("Enter the product of the two numbers: ");
int z = 0;
scanf("%d", &z);
if(z == (x*y)){
printf("Correct response!\n");
return 1;
}
printf("Incorrect response, the correct answer is: %d\n", x*y);
return 0;
}
int main () {
srand(time(NULL));
printf("Two random numbers (1-12) will be generated and displayed. The objective of this game is to correctly guess the product of the numbers.\n");
int correct = 0;
int incorrect = 0;
int choice = 1;
do{
if(choice==1){
if(guess()){
++correct;
}else{
++incorrect;
}
}
printf("Enter 1 to play again\nEnter 2 to see statistics\nEnter 3 to reset statistic\nEnter 4 to quit:");
scanf("%d",&choice);
switch (choice) {
case 1:
break;
case 2:
printf("You have chosen to see statistics\n");
printf("The number of correct answers are: %d\n", correct);
printf("The number of incorrect answers are: %d\n", incorrect);
break;
case 3:
printf("You have chosen to reset statistics\n");
correct = 0;
incorrect = 0;
break;
case 4:
printf("You have chosen to quit\n");
break;
default:
printf("Invalid number! Please enter a number from 1 to 4.\n");
break;
}
}while(choice !=4);
return 0;
}