C# C# Basics (Retired) Perfect Wrap Up

Matthew De-Veale Cutts
Matthew De-Veale Cutts
2,115 Points

C# Basics Interactive quiz task best practice?

Interactive Quiz Write an interactive quiz. It should ask the user three multiple-choice or true/false questions about something. It must keep track of how many they get wrong, and print out a "score" at the end.

So, I have done this task, my code runs and operates (other than validation which I haven't added in yet).

I was wondering if someone would mind seeing what could be done better in this?

// Apologies, copying and pasting from workspaces to questions is adding extra whitespace in the Markdown.

using System;

namespace Quiz
{
    class Program
    {
        static void Main()
        {   
        var correctAnswer1 = "B";
        var userAnswer1 = "D";
        var correctAnswer2 = "A";
        var userAnswer2 = "D";
        var correctAnswer3 = "C";
        var userAnswer3 = "D";
        var correctTotal = 0;
        var entry = "unassigned";

        while (true) 
                {
            Console.WriteLine("Welcome to the quiz! You will now be asked 3 multiple choice questions!");
            Console.WriteLine("Are you ready to start?");
            entry = Console.ReadLine(); 

            if (entry.ToLower() == "no")
                        {
                break;
                        }

            else if (entry.ToLower() == "yes")
            {
                Console.WriteLine("Lets Begin!");
                break;
            }
        }

        while (entry.ToLower() == "yes") 
        {
            Console.WriteLine("Please input all answers in letter format. i.e \"A\", \"B\" and \"C\"");

            // Question 1

            Console.WriteLine("Question 1: 2 + 2 = ?");
            Console.WriteLine("A: 6 | B: 4 | C: 8");
            userAnswer1 = Console.ReadLine();

            if (userAnswer1.ToLower() == "quit")
            {
                break;
            }

            else if (userAnswer1.ToUpper() == correctAnswer1)
            {
                correctTotal++; 
                Console.WriteLine("Correct!");
            }

            else if (userAnswer1.ToUpper() != correctAnswer1)
            {
                Console.WriteLine("Incorrect. Next Question.");
            }

            // Question 2

            Console.WriteLine("Question 2: Grass is which colour?");
            Console.WriteLine("A: Green | B: Blue | C: Red");
            userAnswer2 = Console.ReadLine();

            if (userAnswer2.ToLower() == "quit")
            {
                break;
            }

            else if (userAnswer2.ToUpper() == correctAnswer2)
            {
                correctTotal++; 
                Console.WriteLine("Correct!");
            }

            else if (userAnswer2.ToUpper() != correctAnswer2)
            {
                Console.WriteLine("Incorrect. Next Question.");
            }

            // Question 3

            Console.WriteLine("Question 3: The sky is which colour");
            Console.WriteLine("A: Cyan | B: Purple | C: Blue");
            userAnswer3 = Console.ReadLine();


            if (userAnswer3.ToLower() == "quit")
            {
                break;
            }

            else if (userAnswer3.ToUpper() == correctAnswer3)
            {
                correctTotal++; 
                Console.WriteLine("Correct! You have reached the end of the quiz!");
            }

            else if (userAnswer3.ToUpper() != correctAnswer3)
            {
                Console.WriteLine("Incorrect. You have finished the quiz!");
            }

            Console.WriteLine("Congratulations on finishing the quiz. Youre total score is " + correctTotal + "/3.");
            break;
        }

        Console.WriteLine("Thanks For Playing, Goodbye!");
        }
    }

}

1 Answer

Steven Parker
Steven Parker
170,317 Points

You seem to already have a very solid program, good job! From here, the improvements would be in making the code more compact (or adding features). Ways to condense the code:

  • eliminate repeated code with a generic "ask question / get answer" function
  • store questions and answers in arrays (or one array of complex objects)
  • use a loop to iterate through the questions

Some of these techniques may not have been introduced yet, and might be topics in future lessons.