using System;
namespace Csharp
{
//Loop_01.cs
class Loop_01
{
public static void Main(string[] args)
{
/*--------------
문제1.
결과]
*
**
***
****
*****
--------------*/
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < i + 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
}
using System;
namespace Csharp
{
//Loop_02.cs
class Loop_02
{
public static void Main(string[] args)
{
/*--------------
문제2.
결과]
*
**
***
****
*****
--------------*/
for (int i = 0; i < 5; i++)
{
for (int j = 4; j > i; j--)
{
Console.Write(" ");
}
for (int k = 0; k < i + 1; k++)
{
Console.Write("*");
}
Console.Write("\r\n");
}
}
}
}
using System;
namespace Csharp
{
//Loop_03.cs
class Loop_03
{
public static void Main(string[] args)
{
/*--------
문제3.
결과]
*
*
*
*
*
--------*/
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < i + 1; j++)
{
Console.Write(" ");
}
Console.Write("*\r\n");
}
}
}
}
using System;
namespace Csharp
{
//Loop_04.cs
class Loop_04
{
public static void Main(string[] args)
{
/*
문제4
결과]
* 4
*** 3
***** 2
******* 1
*********
*/
/*
for(int i=1;i<10;i+=2)
{
if (i==1)
{
for(int j=4;j>0;j--)
{
Console.Write("1");
}
}
Console.Write("\r\n");
}
*/
for (int i = 1; i < 5; i++)
{
for (int j = 4; j > i - 1; j--)
{
Console.Write(" ");
}
for (int k = 1; k < i + 1; k++)
{
Console.Write("*");
}
for (int l = 1; l < i; l++)
{
Console.Write("*");
}
Console.Write("\r\n");
}
}
}
}
using System;
namespace Csharp
{
//Loop_05.cs
class Loop_05
{
public static void Main(string[] args)
{
/*
문제5
결과]
*
**
***
********
***
**
*
*/
for (int i = 0; i < 4; i++) //위쪽부터 4칸 만듬. 4번반복
{
for (int j = 0; j < i + 1; j++) // 첫번째는 하나찍고 둘째엔 두개찍고..
{
Console.Write("*");
}
if (i != 3)
Console.Write("\r\n");
}
/*
*
**
***
**** 까지 그리고, 엔터값을 넣지 않는다.
아래쪽 for문은 이어서 아래 그림을 그린다.
****
***
**
*
*/
for (int k = 0; k < 4; k++) //위쪽부터 4칸 만듬. 4번반복
{
for (int l = 4; l > k; l--)
{
Console.Write("*"); // 별 생성
}
Console.Write("\r\n"); // 엔터값
for (int m = 0; m < k + 5; m++) // 공백생성
{
if (k != 3)
Console.Write(" ");
}
}
Console.ReadLine(); //
}
}
}
using System;
namespace Csharp
{
//Loop_06.cs
class Loop_06
{
public static void Main(string[] args)
{
/*
문제6
결과] 문자 코드값을 이용~
a a
ab ba
abc cba
abcd dcba
abcde edcba
abcd dcba
abc cba
ab ba
a a
*/
char chr = (char)0;
for (int i = 1; i < 6; i++)
{
for (int j = 4; j > i - 1; j--)
{
Console.Write(" ");
}
for (int k = 1; k < i + 1; k++)
{
Console.Write("{0}", chr = (char)(96 + k));
}
for (int l = 1; l < i + 1; l++)
{
Console.Write("{0}", chr = (char)(97 - l + i));
}
Console.Write("\r\n");
}
for (int i = 1; i < 6; i++)
{
for (int j = 0; j < i; j++)
{
Console.Write(" ");
}
for (int k = 4; k > i - 1; k--)
{
Console.Write("{0}", chr = (char)(101 - k));
}
for (int l = 4; l > i - 1; l--)
{
Console.Write("{0}", chr = (char)(97 + l - i));
}
Console.Write("\r\n");
}
}
}
}
using System;
namespace Csharp
{
//Loop_07.cs
class Loop_07
{
public static void Main(string[] args)
{
/*
문제7
요구사항] 아래와 같이 출력하시오.
출력]
1 - 2 + 3 - 4 + 5 - .... + 9 - 10 = 결과
*/
int result = 0;
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 1)
//i는 1~10까지의 숫자다. 이것을 2로나눈 나머지가 1일때 홀수.
{
Console.Write("{0} - ", i);
result += i; // 홀수일때만 += 연산자로 누적
}
else
//i를 2로 나눈나머지가 0일때만 else로 간다.
{
if (i != 10) // 10이 아닌 짝수는 숫자 뒤에 + 붙이고
{
Console.Write("{0} + ", i);
}
else // 10이 올경우 10 뒤에 = 를 붙임
{
Console.Write("{0} = ", i);
}
// 짝수일때만 -= 연산자로 누적
result -= i;
}
}
Console.Write("{0}\r\n", result);
}
}
}
using System;
namespace Csharp
{
//Loop_08.cs
class Loop_08
{
public static void Main(string[] args)
{
/*
문제8
요구사항] 아래와 같이 출력하시오.
출력]
1 + 2 + 3 + 4 + .............. + XX = 1XXX
조건] 누적된 합이 1000을 넘는 순간 정지
*/
int result = 0, i = 1;
while (result < 1000)
{
result += i; // += 연산자로 누적
if (result < 1000) // 결과가 1000이상이 아닌 숫자 뒤에 + 붙이고
{
Console.Write("{0} + ", i);
}
else // 누적덧셈이 1000이상이 올경우 뒤에 = 를 붙임
{
Console.Write("{0} = ", i);
}
// i 를 1씩 늘린다.
i++;
}
Console.Write("{0}\r\n", result);
}
}
}
using System;
namespace Csharp
{
//Loop_09.cs
class Loop_09
{
public static void Main(string[] args)
{
/*
문제9 $$$$$$$$$$$$발표
요구사항] 아래와 같이 출력하시오.
출력]
1 ~ 10 : 모든 숫자 합 55
1 ~ 20 : 모든 숫자 합 XX
1 ~ 30 : 모든 숫자 합 XXX
.
.
.
1 ~ 100 : 5050
*/
int sum = 0, result = 0;
for (int i = 1; i <= 10; i++) //10번 루프문. i는 1부터 10까지
{
for (int j = 1; j <= i * 10; j++) // j가 i를 10번 곱한값까지 루프.
{
sum += j; // sum값에 j값을 누적시킨다. i가 1이면 10번, 2면 20번.
}
result = sum; // 결과값에 sum 누적값을 넣는다.
Console.Write("1 ~ {0} : 모든 숫자의 합 {1} \r\n", i * 10, result);
//누적된 result 값을 결과 출력한다.
sum = 0;
// 2차 루프문에서 재사용하기 위해 초기화 한다.
}
Console.ReadLine(); // 프로그램 종료방지
}
}
}
using System;
namespace Csharp
{
//Loop_10.cs
class Loop_10
{
public static void Main(string[] args)
{
/*
문제 10
요구사항] 아래와 같이 출력하시오.
출력]
1 ~ 10 : 55
11 ~ 20 : XX
21 ~ 30 : XXX
..
91 ~ 100 : XXXX
*/
int sum = 0;
for (int i = 1; i <= 10; i++) //10번 루프문. i는 1부터 10까지
{
for (int j = i; j <= i * 10; j++)
{
sum += j;
}
Console.Write("{0,2} ~ {1,3} 의 합 : {2}\r\n", i * 10 - 9, i * 10, sum);
sum = 0;
}
}
}
}
using System;
namespace Csharp
{
//Loop_11.cs
class Loop_11
{
public static void Main(string[] args)
{
/*
문제 11
요구사항] 구구단 출력
출력]
===========
2단
===========
2 X 1 = 2
2 X 2 = 4
..
2 X 9 = 18
..
===========
9단
===========
2 X 1 = 2
2 X 2 = 4
..
2 X 9 = 18
*/
int gop = 0;
for (int i = 2; i < 10; i++)
{
Console.Write(DrawSubject(i));
for (int j = 1; j < 10; j++)
{
gop = i * j;
Console.Write("{0,2} X {1} = {2,2}\r\n", i, j, gop);
}
}
}
public static string DrawSubject(int sub)
{
string result = "===========\r\n " + sub + "단\r\n===========\r\n";
return result;
}
}
}
using System;
namespace Csharp
{
//Loop_12.cs
class Loop_12
{
public static void Main(string[] args)
{
/*
문제 12
요구사항] 구구단 출력
출력]
2 X 1 = 2 3 X 1 = 3 4 X 1 = 4 5 X 1 = 5
2 X 2 = 4 3 X 2 = 6 4 X 2 = 8 5 x 2 = 10
..
6 X 1 = 6 7 X 1 = 3 8 X 1 = 4 9 X 1 = 9
6 X 2 = 12 7 X 1 = 3 8 X 1 = 4 9 X 2 = 18
*/
int gop = 0;
for (int i = 1; i < 10; i++) // i = 곱하기 1 ~ 곱하기9...
{
for (int j = 2; j < 6; j++) // j = 2단 3단 4단 5단
{
gop = i * j;
Console.Write(" {0,2} X {1} = {2,2} ", j, i, gop);
}
Console.Write("\r\n");
}
Console.Write("\r\n");
for (int i = 1; i < 10; i++) // i = 곱하기 1 ~ 곱하기9...
{
for (int j = 6; j < 10; j++) // j = 6단 7단 8단 9단
{
gop = i * j;
Console.Write(" {0,2} X {1} = {2,2} ", j, i, gop);
}
Console.Write("\r\n");
}
}
}
}
using System;
namespace Csharp
{
//Loop_13.cs
class Loop_13
{
public static void Main(string[] args)
{
/*
문제 13
요구사항] 선긋기 메서드를 선언하시오.
입력] ShowLine(표현문자, 시작위치, 선길이)
-포문하나-
출력] ShowLine('*',0,10);
**********
출력2] ShowLine('+',5,10);
12345++++++++++ // 앞에 공백다섯칸
*/
Console.WriteLine(" 출력형태 : DrawLine('+',5,10)");
Console.WriteLine("{0}\r\n", DrawLine('+', 5, 10));
Console.WriteLine(" 출력형태 : DrawLine('?',2,30)");
Console.WriteLine("{0}\r\n", DrawLine('?', 2, 30));
Console.WriteLine(" 출력형태 : DrawLine('@',10,20)");
Console.WriteLine("{0}\r\n", DrawLine('@', 10, 20));
Console.WriteLine(" 출력형태 : DrawLine('#',6,3)");
Console.WriteLine("{0}\r\n", DrawLine('#', 6, 3));
}
public static string DrawLine(char chr, int space, int show)
{
string strSpace = "", strChar = "";
for (int i = 0; i < space; i++)
{
strSpace += " ";
}
for (int j = 0; j < show; j++)
{
strChar += (chr + "");
}
string result = strSpace + strChar;
return result;
}
}
}
using System;
namespace Csharp
{
class Exam1_14
{
public static void Main(string[] args)
{
// 변수를 미리 선언
int yunYear;
int dayCount = 0;
string years;
string month;
string day;
string dayOfWeek;
int resultMonthOfDay;
int resultDay;
int resultYear;
int sum;
//한개라도 입력을 하지 않으면 false가 되어 프로그램 종료
while (true)
{
yunYear = 0;
sum = 0;
dayOfWeek = "";
dayCount = 0;
Console.Write("년도를 입력하세요. : ");
years = Console.ReadLine();
Console.Write("월을 입력하세요. : ");
month = Console.ReadLine();
Console.Write("일을 입력하세요. : ");
day = Console.ReadLine();
resultYear = int.Parse(years);
resultMonthOfDay = int.Parse(month);
resultDay = int.Parse(day);
//입력한 년도에 한해를 빼고 윤년과 평년을 구분하는것
for (int i = 1; i <= resultYear - 1; i++)
{
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))
{
yunYear += 1;
}
}
//입력한 월에서 31일,28일,30일 월말 날짜 계산
for (int i = 1; i < resultMonthOfDay; i++)
{
int j = i;
if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12)
j = 31;
else if (j == 2)
j = 28;
else
j = 30;
sum += j;
}
//계산한 년,월,일,(윤년,평년) 전체를 더함.
dayCount = (resultYear - 1) * 365 + sum + yunYear + resultDay;
//전체 일짜에서 요일을 구함
switch (dayCount % 7)
{
case 0:
dayOfWeek = "일";
break;
case 1:
dayOfWeek = "월";
break;
case 2:
dayOfWeek = "화";
break;
case 3:
dayOfWeek = "수";
break;
case 4:
dayOfWeek = "목";
break;
case 5:
dayOfWeek = "금";
break;
case 6:
dayOfWeek = "토";
break;
}
Console.WriteLine("출력] {0} 년 {1} 월 {2} 일은 서기 1년 1월 1일부터 총 {3:N0} 째 되는 날입니다.", years, month, day, dayCount);
Console.WriteLine("요일은 {0} 요일입니다.", dayOfWeek);
}
}
}
}
/*
태양력에서 2월은 28일까지 있는 것이 평년이다. 그러나 2월을 29일로 둔 해를 윤년이라 하여
치윤법에 따라 400년에 97년을 윤년으로 두고 있다.
이것은 1년의 길이가 365일로 실제보다 0.2422일 짧은 것이므로, 점차 계절과 차이가 발생하게 되는 것을 해결하고자 한 것이다.
본문
원래 2월은 평년이 28일까지 있는 것이지만, 만일 윤년이 없이 언제나
평년이라면 1년의 길이가 365일로 되어 실제보다 0.2422일 짧아지므로 점차 역일(曆日)과 계절이 달라진다.
그러므로 율리우스력에서는 4년마다 2월을 29일로 함으로써 4년간의 연평균 일수를 365.25일로 정하였다.
이 값은 실제보다 1년에 0.0078일이 길다.
그후 그레고리오력에서는 다음과 같은 치윤법(置閏法)을 정하고 시행하였다.
즉, ① 서력 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하고,
② 그 중에서 100으로 나누어 떨어지는 해는 평년으로 하며,
③ 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 정하였다.
이로써 1년의 평균길이를 365.2425일로 정하여 역에 썼으므로 실제의 1년보다 0.0003일이 길다.
이 그레고리오력에서는 400년간에 97년이 윤년이 된다.
한국에서는 1896년(건양 1)부터 태양력이 쓰였는데 이 역법은 그레고리오력이다.
그레고리오력이 현행의 태양력이다. 율리우스력은 한국에서 사용되지 않았다.
그레고리오력의 치윤법에 의하여 1900년은 평년이었고 2000년은 윤년이 된다.
*/
using System;
namespace Csharp
{
//Loop_15.cs
class Loop_15
{
public static void Main(string[] args)
{
/*
문제 15.
요구사항] 아래와 같이 출력하시오.
출력]
1 + 2 + 4 + 7 + 11 + 16 .........100이 되기 전 = 469
힌트]숫자간격1 2 3 4 5 ...
*/
int stack = 1, i = 1, sum = 0;
sum += 1; // sum 값에 1을 먼저 더해준다.
Console.Write("{0}", sum); //최초 sum은 1이 나온다.
while (stack < 100)
{
stack += i; //처음 stack값은 1. 여기에 1을 더하면 2, 2를 더하면 4, 3을 더하면 7....
if (stack < 100)// stack 변수에 있는 데이터가 100미만이면
{
sum += stack;
//stack데이터를 sum에 더함.
Console.Write(" + {0}", stack);
//stack데이터를 화면에 덧셈공식과 함께 출력
}
else//stack이 100을 넘기는 순간을 체크해서
{
Console.Write(" = ");
//100을 넘기면, = Equal 문자를 쓴다.
}
i++;
}
Console.WriteLine("{0}", sum); // 최종 더한 값을 출력.
}
}
}
using System;
namespace Csharp
{
//Loop_16.cs
class Loop_16
{
public static void Main(string[] args)
{
/*
문제 16.
요구사항] 아래와 같이 출력하시오.
출력]
1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 = 232
-----
2 -----
3 -----
5 -----
8 -----
13 ------
21 ------
34-------
55
-------
89
1 + 1 = 2
1 + 2 = 3
2 + 3 = 5
3 + 5 = 8
5 + 8 = 13
8 + 13 = 21
13 + 21 = 34
21 + 34 = 55
34 + 55 = 89
*/
int first = 0, second = 0, third = 0, temp = 0, sum = 0;
first = 1;
second = 1;
for (int i = 1; i < 10; i++)
{
third = first + second;
temp = third;
if (i == 1)
{
Console.Write("1 + 1"); //
sum += (temp + third);
}
else
{
sum += temp;
}
Console.Write(" + {0}", temp);
first = second;
second = temp;
}
// 결과값 출력.
Console.WriteLine("= {0}", sum);
}
}
}
using System;
namespace Csharp
{
// 날짜:
class Exan17
{
public static void Main(string[] args)
{
//문제 17. ***
//요구사항] 2부터 100사이의 소수를 출력하시오.
//출력] 2 3 5 7 11 13 17 ~
//참고] 2~100까지 소수 : 25개?
//소수] 1과 자신으로밖에 나누어지지 않는 수
int i, j;
for (i = 2; i < 101; i++)
{
for (j = 2; j <= i; j++)
{
if (i % j == 0)
{
if (i == j)
{
Console.Write("{0} ", i);
}
else
{
break;
}
}
}
}
Console.WriteLine();
Console.ReadLine();
}
}
}
using System;
namespace Csharp
{
class Loop18
{
public static void Main(string[] args)
{
Perfectnum();// 메인함수에서 완전수구하기 메서드 호출
Console.ReadLine();
}
public static void Perfectnum()
{
//***************** 1. 변수 초기화 ********************
int sum = 0;
//**************** 2. 사용자 입력값 받음 ***************
Console.Write("완전수 개수를 구하기 위한 값을 입력: ");
int input = int.Parse(Console.ReadLine());
Console.WriteLine("");
Console.WriteLine("************ 1 부터 {0} 까지 완전수 구하기************", input);
//**************** 3. 약수 와 완전수 구하기 ********************
for (int i = 1; i <= input; i++)//1~1000까지의 수를 하나씩 선택 하는 루프
{
//자신포함 이하의 모든 각각의 수들중에 약수가 있는지 확인 j<i+1를 j<=i 로 바꿔도 됨.
//즉, 자신의 범위 안에서 자신을 나누어봄.
//나누는 수
for (int j = 1; j <= i; j++)
{
if (i % j == 0)//나머지가 0 이 나오면 나눈 그 수 j는 약수
{
//자신의 범위 안에 있는 자신의 약수 j를 sum 이라는 변수에 누적
sum += j;
}
}
//******************* 4. 자기자신이 완전수인것을 확인, 출력 **********************
//자신의 약수들의 합에서 자신을 빼면 = 자기 자신 -> 완전수
if ((sum - i) == i)//자신이 약수인것을 확인
{
//위의 완전수에서 약수들을 다시 출력하기 위한 부분
Console.Write("완전수 {0,4} = [ ", i);//완전수 출력
for (int k = 1; k <= i; k++)//위의 완전수의 약수를 구함.
{
if (i % k == 0)
{
Console.Write("{0}, ", k);//약수를 출력
}
}
Console.WriteLine("]");//출력 부분이 이용되는 대괄호 닫기
}
sum = 0;
}
}
}
}
/*
문제18]
요구사항] 1부터 1000사이의 완전수를 출력하시오.
6 = [1,2,3,6]
28 = [1,2,4,7, 14, 28]
힌트1>
완전수] 자기자신을 제외한 약수의 합이 자기 자신이 되는 수
프로그램 처리 과정>
1. 입력받음 ex)1000 까지 ;첫번째 for문
(1). 1부터~1000 까지 단계적으로 올라가는 ; 내부 for문
b. 1부터~자기자신까지의 약수를 구하여 자기자신의 약수를 누적시키는 for문
a. 각각의 약수를 구하여 더함
(2). if조건문: 더한수-자신=자신이 나오는 수는 완전수
(3). 구한 완전수를 다시 약수를 구하여 출력 두번째 for문
*/