1. 함수의 선언 방식은

 

반환할자료형 함수명(입력1의자료형 입력1를받을변수명, 입력2를받을자료형 입력2를받을변수명...)

{

처리할 내용

return 반환할변수명

}

 

이다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(1시간 소요)

 

가. 반환할 자료형이 int 이고 입력은 int a, int b이며 처리할 내용은 int result = a+b 와 같이 두 수를 더해주는 프로그램을 짜고 return에 result를 주어 결과값이 반환되도록 만드시오. 함수명은 임의로 지으시오.

 

나. int main() 내에서 int x=10, y=20 를 주고, 아까 만든 함수의 이름을 쓰고 입력을 넣은 뒤 출력을 z1로 받아 printf 해보시오. 아래의 슈도코드를 참조하시오.

 

int main()

{

int x=10, y=20;

출력받을 변수 = 함수이름(입력1, 입력2);

printf()

}

 

 

다. 두 수를 곱하는 함수를 만들고 int main 내에서 호출하여 입력을 넣은 뒤 출력을 z2로 받아 printf 해보시오.

라. 두 수의 차이를 구하는 함수를 만드시오. 둘 중 더 큰수에서 더 작은 수를 빼도록 하시오. 출력을 z3으로 받아 printf 해보시오. (힌트 : 삼항연산자를 이용하면 간단히 해결됨)

 

마. 만든 함수들을 main 함수 뒤로 자리를 바꾸어 주고, main함수 앞에는 아까 만든 함수의 반환할자료형 함수명(입력1, 입력2...); 를 써서 함수의 형태만 먼저 정의하고 내용은 뒤에 있도록 해보시오. https://enter.tistory.com/59​ 를 참조하시오.

 

 

2. 다음 함수를 구현하시오.(3시간 소요)

가. 반복할 횟수 int n 을 받아 n!를 출력하는 함수를 만드시오. 입력받은 n으로부터 n=1일때까지 계속 곱하면 됨. (주의 : 재귀함수를 이용하지 마시오!) n 양수일때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.

 

나. '가'를 재활용하여 퍼뮤테이션 함수를 만드시오. nPr 에서 n,r를 입력받아 결과값을 출력하도록 하시오. n이 양수 r은 0이상이며 n>=r 인지 검사하여, 유효할때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.

 

다. '가~나'를 재활용하여 콤비네이션 함수를 만드시오. nCr에서 n,r를 입력받아 결과값을 출력하도록 하시오. n이 양수 r은 0이상이며 n>=r 인지 검사하여, 유효할때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.

 

라. nCr 에서

n=1 r=0, n=1 r=1

n=2 r=0, n=2 r=1, n=2 r=2

n=3 r=0, n=3 r=1, n=3 r=2, n=3 r=3

n=4 r=0, n=4 r=1, n=4 r=2, n=4 r=3, n=4 r=4 ...

...

 

일때의 값을 출력하는 함수를 for를 두번 이용하여 만들어 보시오. n=10일때까지 계산하여 스크린샷을 첨부하시오.

'C언어' 카테고리의 다른 글

C언어 기초 13주차  (0) 2020.12.27
C언어 기초 12주차  (0) 2020.12.21
C언어 기초 8주차  (0) 2020.11.22
c언어 기초 7주차  (0) 2020.11.15
c언어 기초 6주차  (0) 2020.11.08
by 맑은소금 2020. 11. 29. 23:46

# 기본과제 및 제출 양식

1. while의 사용방법은

 

while( 조건식 )

{

  조건식이 참일때 실행할 문장

}

 

과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(3시간 소요)

 

  가. 100, 97, 94... 와 같은 등차수열이 있다.

  An = a + (n-1)*d; a=초항, d=공차임을 이용하여 등차수열의 일반항을 수기로 구하시오. 위 수열에서 초항은 100, 공차는 -3이다. 이 때, n값을 숫자로 넣으면 A를 계산해주는 프로그램을 for문을 이용하여 구하시오. 예를들어, n=3 이면 94를 출력해야함.

 

 

  나. S1 = 100;

       S2 = 100 + 97;

       S3 = 100 + 97 + 94;

       Sn = A1 + A2 + A3 + ... + An; 임을 이용하여 S1, S2, S3 .... S34, S35 를 for문을 이용하여 구하시오. '가'에서 만들어놓은 일반항 프로그램을 재사용 하여 구현하시오. (예를들어, Sum = Sum + A; A = 103-3N; 과 같이 구하면 됨) 예를들어,  n=5 이면 470을 출력해야함. (=100+97+94+91+88)

 

 

  다. S34은 100+97+94...1 이어서 모든 수가 양수가 더해지고 있고, S35는 100+07+94+...1+ (-2) 처럼 되어 음수를 처음으로 더하게 되므로 Sn의 최대값은 S34이다. Sn의 최대값을 구하기 위해 어디까지 Sum하여야 하는지 수기로 계산하여야 하는 불편함이 있다. '나'에서 만든 프로그램을 조건식 A>0으로 주고 while문을 이용하여 똑같은 기능을 하는 프로그램을 구현하시오. 

 

  라. '다'를 개조하여, 초항과 공차를 입력받아

공차가 양수이거나 초항과공차가 모두 음수인경우 S1,S2,S3... S20를 출력하고,

초항이 양수이고 공차가 음수이면 수열의 값이 0 이상일때까지만 합해지도록 하여 부분합S를 출력해 보시오. for과 while중 구현하기 유리한 것을 선택하여 사용해 보시오.

 

  마. 코딩 중, for문과 while문 중 어떤 반복문을 어떨때 사용하는 것이 더 유리한지 50자 이내로 정리해보시오.

 

 for문을 사용할 경우는 반복 횟수를 정확히 알고 있을 때 사용한다. 
 while문은 조건을 입력후 진행 할 경우에는 사용한다. 

 

 

2. Do while문의 사용법은

 

Do{

  조건식이 참이거나 첫 실행일때 실행할 문장

}while( 조건식 )

 

과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오. (1시간 소요)

 

  가. Do While문 바깥에 char password = 'a' 를 주시오. char input=0을 주시오.

  나. Do While문 안쪽에서 input를 scanf하시오.

  다. input의 값이 password가 아니면 '나'를 반복하고 "입력한 값은 ~이며 암호가 틀렸습니다"를 출력하고, a 이면 반복문을 종료하도록 하는 적당한 조건식을 작성하시오. do~while문 뒤쪽 바깥에 "a를 입력하였으므로 종료되었습니다"를 출력하시오.

 

 

  라. while문은 언제 끝나게 될지 모를 경우 조건식을 통해 종료조건을 줄 수 있다는데에 의의가 있으며 do~while문은 반드시 한 번 이상은 실행해야 하는경우, 예를들어 패스워드 검증 등에 쓰인다는 데에 의의가 있다. for, while, do while에 대해 언제 어떤 반복문을 사용하는 것이 더 유리한지 100자 이내로 정리해 보시오.

 

for문을 사용할 경우는 반복 횟수를 정확히 알고 있을 때 사용한다.
while문은 조건을 입력후 진행 할 경우에는 사용한다.
do while문은 반복제한 변수의 최초 상태와 무관하게 반복문을 한번 실행할 필요가 있을때 사용한다.

'C언어' 카테고리의 다른 글

C언어 기초 9주차  (0) 2020.11.29
C언어 기초 8주차  (0) 2020.11.22
c언어 기초 6주차  (0) 2020.11.08
c언어 기초 5주차  (0) 2020.11.01
c언어 기초 4주차  (0) 2020.10.25
by 맑은소금 2020. 11. 15. 22:51
| 1 |