공부/C#

[C#] switch - case - default문, 난수 random, 반복문 while문 예제;

굴러다니다니 2023. 3. 15. 16:00
728x90

C# 예제

과목 3개 국어, 영어, 수학 입력받아 평균 점수 구하기.
    - 평균점수에 따라 등급 출력.

    - 90점 이상 A, 80점 이상 B, 70점 이상 C, 60점 이상 D, 나머지는 F

*입력받는 변수, 저장하는 변수 모두 실수형으로 선언해 나눗셈을 진행하면 소수점까지 출력이 가능하다.

double Kor;
double Eng;
double Mth;
char grade;
Console.Write("국어 점수를 입력해주세요: ");
Kor = double.Parse(Console.ReadLine());
Console.Write("영어 점수를 입력해주세요: ");
Eng = double.Parse(Console.ReadLine());
Console.Write("수학 점수를 입력해주세요: ");
Mth = double.Parse(Console.ReadLine());
double avg;
avg = (sub1 + sub2 + sub3) / 3;

if (avg >= 90)
{
	grade = 'A';
}
else if (avg >= 80)
{
	grade = 'B';
}
else if (avg >= 70)
{
	grade = 'C';
}
  else if (avg >= 60)
{
	grade = 'D';
}
  else
{
	grade = 'F';
}
Console.WriteLine("당신의 평균 점수는 {0}점이며 등급은 {1}입니다.", avg, grade);

switch

     - 조건 값이 여러 값들을 가질 경우 각 case별 다른 문장들을 실행할 때 사용한다.
     - 각 case문 내에서 break문을 만나면 해당 case 블럭의 문들을 실행하고 switch를 빠져나온다. (필수)
     - 완벽히 if문을 대신할 순 없지만 가독성이 좋다. (enum 열거형과 switch를 보통 같이 쓴다 -> 가독성을 높이기 위해)
     - switch 내의 switch로 중첩 가능 -> 가독성이 구려진다.

switch문 형식)
            switch (값) 
            {
                case (상수):  //if 값이 상수라면 break;까지 실행, 변수가 아니어야함, 'a'와 같은 문자도 가능
                    내용 실행
                     break;
                case (다른 상수): //else if와 동일
                    내용 실행
                     break;
                default:    //else와 동일
                     break;
            }

Swith문 이용 예시

Console.WriteLine("어디로 이동할지 선택하세요");
Console.WriteLine("1. 로비 2. 상점 3. 전쟁터 4. 투기장");
int locationInput = int.Parse(Console.ReadLine());
switch (locationInput)
{
	case 1:
        Console.WriteLine("로비로 이동합니다.");
        break;
	case 2:
		Console.WriteLine("상점으로 이동합니다.");
		break;
	case 3:
		Console.WriteLine("전쟁터로 이동합니다.");
		break;
	case 4:
		Console.WriteLine("투기장으로 이동합니다.");
		break;
}

난수란? (Random)

     - 특정한 순서나 규칙을 가지지 않은 무작위의 숫자
     - 임의의 숫자나 확률이 필요한 알고리즘이나 코드에 사용

     - 연산자 new와 생성자를 이용해서 Random 타입의 객체를 생성한다.

* Next(): 0보다 크거나 같고 System.Int32.MaxValue 보다 작은 부호있는 32비트 정수

 

난수 예제 코드

Random random = new Random();
int randNum = random.Next(); 
Console.WriteLine(randNum);

int randNum1 = random.Next(10); //0~9
Console.WriteLine(randNum1);

int randNum2 = random.Next(1, 10); //1~9
Console.WriteLine(randNum2);

int randNum3 = random.Next(10) + 1; 
Console.WriteLine(randNum3);

위의 코드를 실행해보면

random.Next()의 결과로 12094832 식의 꽤 크기가 큰 난수를 볼 수 있다.

한자리 수의 숫자로 받기를 원한다면, Next()안에 숫자를 넣어주면 0부터 그 숫자 미만까지의 범위로 수가 나온다.

시작 범위도 지정하고 싶다면 Next(시작, 끝) 해주면 시작이상 ~ 끝 미만의 숫자가 나온다.

randNum3 식을 보면 0~9사이의 난수에 1을 더해 결국 1에서 10까지 숫자중에 난수가 나온다.


반복문

   - 반복적으로 수행하기 위해 사용.
   - while문 / for문
   - 종료 조건이 없다면 (true)라면 기본적으로 무한 루프이다.
   - 무한 루프인 상태를 놔두면 시스템이 다운될 수 있기 때문에, 반드시 종료 조건이 있어야 한다.

while문 형식)

while (true)           //->종료 조건을 넣어야됨, 여기가 true라면 무한루프
{                             //위 조건을 만족하면 이 부분 실행
        Console.WriteLine("무한루프");

}

 예제

int num = 0;
while (num < 10) //num이 10보다 작으면 실행, 10보다 같거나 커지면 종료
{
	num++;
	Console.WriteLine("num은 {0}", num);
} //1. num이 1씩 증가, 2. while의 num<10이 false가 되는 순간 while문 종료

while (true)
{
	num++;
    Console.WriteLine(num);
    //종료 조건이 길 경우 따로 아래에 쓰는게 가독성이 좋다
     if (num > 10)
     {
             break;
     }
}

 

5000까지 합과 더하는 수 출력하기.

int sum = 0;
int num = 0;
while (true)
{
    sum += num;
    if (sum > 5000) //종료조건
    {
        break; //가장 가까이 break를 감싸고 있는 반복문 한 개를 빠져나온다.
    }
    num++;
}
Console.WriteLine("sum: {0}", sum);
Console.WriteLine("num: {0}", num);


입력한 수 만큼 특정 문장 반복 출력하기

int input;
Console.Write("숫자를 입력하세요: ");
input = int.Parse(Console.ReadLine());
while (true)
{
	Console.WriteLine("냠냠");
    input--;
    if (input <= 0)
    {
    	break;
    }
}

 

입력을 계속 받아 0을 입력 받을 때 까지 누적하여 합 계산하기 

int sum = 0;
int num;
Console.WriteLine("더할 숫자를 입력하세요 (0입력시 종료): ");
while (true)
{ 
	num = int.Parse(Console.ReadLine());
	sum += num;
	if (num == 0)
	{
		break;
	}
}
Console.WriteLine("입력하신 숫자들의 합은 {0}", sum);


   

 

 

728x90