1. 홀수출력 해보기
한번에
//1 부터 100까지 홀수만 출력하는 프로그램 작성.
int i;
for (i=0; i<100; i++)
{
if(i%2==1)
{
Console.WriteLine(i);
}
}
i = 0;
while(i<100)
{
i++;
if (i%2==1)
{
Console.WriteLine(i);
}
}
i = 0;
do
{
i++;
if(i % 2 == 1)
{
Console.WriteLine(i);
}
}
while (i < 100);
2. 예상 출력이 아래와 같도록 주어진 특정 배열의 합계와 평균을 계산하는 프로그램 작성해보기
Sum: 150 Average: 30
class Program
{
static void Main(string[] args)
{
int[] array = { 10, 20, 30, 40, 50 };
int sum=0;
float avg;
for(int i= 0; i < array.Length; i++)
{
sum += array[i];
}
avg = sum / array.Length;
Console.WriteLine($"Sum : {sum}");
Console.WriteLine($"Avg : {avg}");
}
}
gpt를 통해 알게된 새로운 방법으로 이미 있는 메서드를 불러와 쓰는 방법도 있다.
using System;
using System.Linq; // LINQ를 사용하면 코드가 더 간결해집니다.
class Program
{
static void Main()
{
int[] numbers = { 10, 20, 30, 40, 50 };
// LINQ를 이용하여 합계와 평균 계산
int sum = numbers.Sum();
double average = numbers.Average();
// 결과 출력
Console.WriteLine($"Sum: {sum}");
Console.WriteLine($"Average: {average}");
// 역산: 주어진 합계와 평균을 통해 배열의 항목 수 계산
int count = (int)(sum / average);
Console.WriteLine($"Count (derived from sum and average): {count}");
}
}
3. 팩토리얼 계산하는 프로그램 작성하기 ( 예외상황 생각하기)
using System;
Console.WriteLine("팩토리얼을 계산할 숫자를 입력하세요.");
string input = Console.ReadLine();
int number;
bool isNumber = int.TryParse(input, out number);
do
{
if(!isNumber|| number<0)
{
Console.WriteLine("숫자를 입력하세요.");
input = Console.ReadLine();
isNumber = int.TryParse(input, out number);
}
} while (!isNumber || number < 0);
for (int i = number - 1; i > 0; i--)
{
number *= i;
}
Console.WriteLine($"입력하신 숫자의 팩토리얼은 {number}입니다.");
해당 코드에서 do의 경우 우선 실행후 while 의 조건이 참일 동안은 계속해서 실행하는 구문이다. 그런데, 헷갈려서 처음에 if 문 안에 isNumber = int.TryParse(input, out number); 을 빼먹었다. 이로인해, if 조건에서, 정수타입의 숫자가 아니거나,0보다 작다일때 해당 스코프 내의 실행코드들을 실행하는 부분에서, input 부분에 새로이 숫자를 정수 타입으로 입력을 했지만, if 문에서 input이 정수타입인지 다시 체크하는 코드를 내놓지않았기때문에 입력값을 받기만 했을뿐, 아무런 일도 일어나지않았다.
do 바깥에 있는 첫 input 값에 대해서만 계속 체크했던 것이다. 따라서
if 스코프 안에 isNumber = int.TryParse(input, out number); 을 다시 제시해 새로 입력한 input에 대해서 한번더 체크하고 정수 타입의 숫자를 입력했다면 if문을 빠져 나오고, do-while문도 빠져나온다.
for 문에서 그다음은 input을 입력할때 넣은 number 에 대해서 팩토리얼 수식을 시행하여 출력해준다.
해당 응용으로 이렇게 아래처럼 표현도 가능하다.
using System;
Console.WriteLine("팩토리얼을 계산할 숫자를 입력하세요.");
int number;
bool isNumber;
string input = Console.ReadLine();
isNumber = int.TryParse(input, out number);
while (!isNumber || number < 0)
{
Console.WriteLine("잘못된 입력입니다. 0 이상의 숫자를 입력하세요.");
input = Console.ReadLine();
isNumber = int.TryParse(input, out number);
}
for (int i = number - 1; i > 0; i--)
{
number *= i;
}
Console.WriteLine($"입력하신 숫자의 팩토리얼은 {number}입니다.");
입력 값을 정수 숫자로 맞게 입력한다면, while문 안에 코드가 정수타입이므로 참이라고 뱉고, while문의 조건에 부합하지않으므로 반복을 종료해버리고 for문으로 넘어가는 구조다.
4. 숫자 맞추기 게임을 작성하세요. 컴퓨터가 1부터 100 사이의 숫자를 선택하면 사용자가 그 숫자를 맞추는 게임을 구현하세요. 사용자가 숫자를 입력하면 컴퓨터는 숫자가 더 크거나 작은지 힌트를 줍니다. 맞출 때까지 반복합니다.
using System;
class Program
{
static void Main()
{
Random random = new Random();
int answer = random.Next(1, 101);
int guess = 0;
int attempts = 0;
Console.WriteLine("1부터 100까지의 숫자를 맞춰보세요.");
while (guess != answer)
{
Console.WriteLine("숫자를 입력하세요!: ");
string input = Console.ReadLine();
guess = int.Parse(input);
attempts++;
if (guess < answer)
{
Console.WriteLine("숫자가 너무 작습니다.");
}
else if (guess > answer)
{
Console.WriteLine("숫자가 너무 큽니다.");
}
else
{
Console.WriteLine("정답입니다! 시도횟수는 " + attempts + "번 입니다.");
}
}
}
}
해당 구문에서 헷갈렸던 부분은, while문의 else 취급인데, while은 ( ) 소괄호 안에 내용 조건이 true일동안 계속 반복되는 것이다. 그런데 else 는 사실상 guess = answer 인 상황인데, 이때 else 스코프 내의 출력 실행문을 말하고 , 그다음에는 guess= aswer 즉, while 문 안의 조건이 false가 된 상황이므로 반복을 종료한 셈이다.
'Unity 개발 공부' 카테고리의 다른 글
| [내배캠] 8일차 게임속 상호작용 분석하기 (25.04.01) (1) | 2025.04.01 |
|---|---|
| [내배캠] 7일차 오목게임 기획 ( 사전 팀프로젝트) (0) | 2025.03.31 |
| [내배캠 사전캠프] 6일차 C# 난수생성,문자열처리,out,ref,is,as (25.03.28) (0) | 2025.03.27 |
| [내배캠 사전캠프] 5일차 C# 상속,인터페이스,가상메서드, 추상클래스 (25.03.27) (0) | 2025.03.26 |
| [내일배움캠프 사전캠프] 4일차 C# 기초문법 복습 및, 활용해보기 (25.03.26) (0) | 2025.03.26 |