본문 바로가기

내일배움캠프_TIL

8월 18일 TIL

오늘 한 것 - 강의제출 과제 외 일반과제 풀어보기

2주차 구구단 출력하기

static void Gugudan()
        {
            for (int i = 1; i < 10 ; i++)
            {
                for (int j = 1; j < 10 ; j++)
                {
                    Console.WriteLine($"{i} × {j} = {i * j}");
                }
            }
        }

바깥의 for 문으로 첫번째 수를 반복하고 안쪽에 감싸진 for문으로 두번째 숫자를 반복하여 곱셈 연산결과를 출력한다

 

별모양 삼각형 출력

        static void Star()
        {
            for (int i = 1; i <= 5; i++) // 오른쪽으로 기울어진 직각삼각형
            {
                for (int j = 1; j <= i; j++)
                    Console.Write("*");
                Console.WriteLine();
            }

            for (int i = 5; i >= 0; i--)
            {
                for (int j = 1; j <= i; j++)
                    Console.Write("*");
                Console.WriteLine();
            }

            for (int i = 1; i <= 5; i++)
            {
                for (int j = 1; j <= 5 - i; j++)
                    Console.Write(" ");

                for (int j = 1; j <= 2 * i - 1; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }

이중for문을 사용하여 삼각형의 높이와 해당 줄에 들어갈 *의 갯수를 결정하여 출력한다

피라미드는 * 앞에 공백 문자를 반복 삽입하여 만든다

별이 2개씩 추가되어야 하므로 for문 조건식에 2를 곱하고 맨 위에는 *이 하나만 있어야 하기 때문에 1을 빼준다

최대값, 최소값 찾기

        static void MaxAndMin()
        {
            int max = 0; 
            int min = 0; 
            int inputNum = 0;
            int inputCount = 5;

            for (int i = 1; i <= inputCount; i++)
            {
                Console.Write($"숫자를 입력하세요: ");
                inputNum = int.Parse(Console.ReadLine());

                if (inputNum > max)
                {
                    int temp = max; // temp 변수를 사용하여 값 교환
                    max = inputNum;
                    inputNum = temp;
                }

                if (inputNum < min)
                {
                    min = inputNum;
                }
            }

            Console.Write($"최대값: {max}\n최소값: {min}");
        }
                if(max == 0 && min == 0) max = min = inputNum;

최대값과 최소값, 현재 입력받은 값과 몇번 입력받을지 저장할 변수 선언

inputCount 만큼 값의 입력과 입력값의 대소 비교를 반복 진행

max와 min의 초기값이 0이어서 숫자가 모두 1 이상이거나 모두 음수면 사용자가 입력하지 않은 0이 출력되는 문제가 있어 처음 입력값으로 max와min을 초기화

Console.Write 안에 $기호를 이용해서 출력과 동시에 입력을 받게 해보려고 했지만 입력을 먼저 받고 출력이 이루어지는 것을 확인함

지금은 쓸 수 없지만 나중에 활용할 수 있을 것 같다

 

소수 판별하기

        static bool IsPrime(int num)
        {
            if (num < 1) return false;
            else if (1 <= num && num <= 3) return true;
            else if (num % 2 == 0 || num % 3 == 0) return false;
            
            for (int i = 1; i <= num; i++)
            {
                if (num % i == 0) return false;
            }
            return true;
        }

위의 조건문으로 입력받은 수가 음수면 거짓, 1에서3이면 참을 반환한다

또 2나 3으로 나누어 떨어지면 거짓을 반환한다

4 이상의 수는 밑으 for문으로 입력받은수만큼 i를 1씩 증가시켜 num / i를 진행한다

만약 나누어 떨어지는 수가 나오면 소수가 아니므로 거짓을 반환하고

계산 후 나누어 떨어지는 수가 없었다면 for문을 나와서 참을 반환한다

        static void Main()
        {
            Console.Write("숫자를 입력하세요: "); // 사용자에게 숫자 입력 요청
            int num = int.Parse(Console.ReadLine()); // 사용자가 입력한 값을 정수로 변환하여 저장

            if (IsPrime(num)) // 입력 받은 숫자가 소수라면
            {
                Console.WriteLine(num + "은 소수입니다."); // 소수임을 출력
            }
            else // 소수가 아니라면
            {
                Console.WriteLine(num + "은 소수가 아닙니다."); // 소수가 아님을 출력
            }
        }

 

'내일배움캠프_TIL' 카테고리의 다른 글

8월 23일 TIL  (0) 2023.08.23
8월 21일 TIL  (0) 2023.08.22
8월17일 TIL  (0) 2023.08.17
8월 16일 TIL  (0) 2023.08.16
8월 14일 TIL  (0) 2023.08.14