C 프로그래밊 개요

Similar documents
PowerPoint 프레젠테이션

untitled

C 언어 프로그래밊 과제 풀이

C 프로그래밊 개요

쉽게 풀어쓴 C 프로그래밍

untitled

슬라이드 1

Microsoft PowerPoint - Chapter8.pptx

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

중간고사

<4D F736F F F696E74202D20C1A639C0E520C7D4BCF6BFCDBAAFBCF6>

쉽게 풀어쓴 C 프로그래밍

untitled

Microsoft PowerPoint - chap-09.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

쉽게 풀어쓴 C 프로그래밍

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - 05장(함수) [호환 모드]

Microsoft PowerPoint - chap05-제어문.pptx

본 강의에 들어가기 전

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - 제11장 포인터

ch15

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lesson2.pptx

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Infinity(∞) Strategy

쉽게 풀어쓴 C 프로그래밍

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

Microsoft PowerPoint - 7장 배열 pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

11장 포인터

금오공대 컴퓨터공학전공 강의자료



C++-¿Ïº®Çؼ³10Àå

chap x: G입력

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

歯9장.PDF

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - chap-11.pptx

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - ch07 - 포인터 pm0415

11장 포인터

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - additional01.ppt [호환 모드]

C 언어와 프로그래밍 개요

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

쉽게 풀어쓴 C 프로그래밍

OCW_C언어 기초

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - ch04 - 함수 pm0130

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

11장 포인터

Microsoft PowerPoint - chap06-1Array.ppt

1장. 유닉스 시스템 프로그래밍 개요

03장.스택.key

Microsoft PowerPoint - chap-07.pptx

PowerPoint Presentation

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

PowerPoint 프레젠테이션

8장. 포인터

Microsoft PowerPoint - chap05.ppt

Microsoft PowerPoint - Chapter_08.pptx

C++ Programming

Microsoft PowerPoint - C++ 5 .pptx

OCW_C언어 기초

02장.배열과 클래스

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lesson6.pptx

13 주차문자열의표현과입출력

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Data Structure

C++ Programming

슬라이드 1

Transcription:

함수 (2) 2009 년 9 월 24 일 김경중

공지사항 10 월 1 일목요일수업휴강 숙제 #1 마감 : 10 월 6 일화요일

기초

함수를만들어라! 입력 함수 ( 기능수행 ) 반환

사용자정의함수 정의 : 사용자가자신의목적에따라직접작성한함수 함수의원형 (Function Prototype) + 함수의본체 (Function Body) : 함수의원형은함수에대한기본적정보만을포함 ( 이름, 입력, 반환정보 ), 함수의본체는실제수행할내용도포함 사용방법 방법 1) 함수의원형을 main 함수앞에선언해주고, 함수의본체를 main 뒤에선언해준다. 추천!!!!! 방법 2) 함수의원형을선언하지않고함수의본체를 main 함수앞에선언해준다.

함수의정의방법두가지 // 방법 1 추천!!!!! // 방법 2 func(); // 함수의원형 func(); // 호출!!!! func(){ // 함수의몸체 func(){ // 함수의몸체 func(); // 호출!!!!

기본틀 입력 X, 반환 X 입력 O, 반환 X 입력 X, 반환 O 입력 O, 반환 O func(); func(); func(){ // 내용 func(int); func(3); func(int x){ // 내용 int func(); int result=func(); int func(){ // 내용 return 반환값 ; int func(int); int result=func(3); int func(int x){ // 내용 return 반환값 ; return 문을만나는순간함수는호출되었던곳으로돌아간다. 입력 X, 반환 X 는경우에도 return 문을사용할수있으며, return; 식으로사용한다.

작동순서 func(); // 1 // 2 func(); // 3 7 func(); // 8 12 // 13 func(){ // 4 9 // 내용 // 5 10 // 6 11

실습 ( 입력 X, 반환 X) #include <stdio.h> func(); func(); func(); func(){ printf("hello\n");

실습 ( 입력 O, 반환 X) #include <stdio.h> func(int); // 변수이름을써줄지는선택사항!!! func(3); func(4); func(int x){ // 변수이름은반드시써주어야한다 printf("hello %d\n", x);

실습 ( 입력 O, 반환 X) #include <stdio.h> func(int, int); // 변수이름을써줄지는선택사항!!! func(3, 5); func(4, 6); func(int x, int y){ // 변수이름은반드시써주어야한다. printf("hello %d %d\n",x, y);

실습 ( 입력 X, 반환 O) #include <stdio.h> #include <stdlib.h> #include <time.h> int func(); srand(time(null)); // 매번다른난수가발생하도록해줌 printf("%d\n",func()); printf("%d\n",func()); int func(){ return rand();

실습 ( 입력 O, 반환 O) #include <stdio.h> int func(int, int ); printf("%d\n",func(3,2)); printf("%d\n",func(4,5)); int func(int x, int y){ return x+y;

실습 정수두개를입력받아서큰수를반환하는함수를만드시오. printf( %d,func(3,4)); // 결과는 4 이다. printf( %d,func(7,5)); // 결과는 7 이다.

실습 정수한개를입력받아서, 그수만큼 hello world 를출력하는함수를만들어라. 힌트 : for(i=0 ;i<n ;i++) printf( hello world\n ); func(3); // hello world 를 3 번출력 func(5); // hello world 를 5 번출력

함수내에서함수를호출? #include <stdio.h> int func(int, int); int func2(int); // 8 printf("%d",func(3,4)); // 1 7 int func(int x, int y){ // 2 return func2(x+y); // 3 6 int func2(int z){ // 4 return z*z; // 5

실습 #include <stdio.h> funca(); funcb(); funcc(); funca(); funca(){ funcb(); printf("funca\n"); funcb(){ funcc(); printf("funcb\n"); funcc(){ printf("funcc\n");

실습 #include <stdio.h> funca(); funcb(); funcc(); funca(); funca(){ funcb(); printf("funca\n"); funcb(){ funcc(); printf("funcb\n"); funcc(){ printf("funcc\n");

전역변수 vs. 지역변수 #include <stdio.h> func(); int x=0; // 전역변수 int x=0; // 지역변수 func(); func(){ int x=0; // 지역변수

실습 #include <stdio.h> func(); int x=7; // 전역변수 int x=8; // 지역변수 func(); printf("%d",x); func(){ int x=10; // 지역변수

숙제 - 힌트

만약 사목을다만든후에오목으로변경하고싶다면? #include <stdio.h> int i,j; int ar[4][4]={0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(ar[i][j]==0) printf("_ "); else printf("%d ",ar[i][j]); printf("\n");

방법 1 #include <stdio.h> int i,j; int ar[5][5]={0; for(i=0;i<5;i++) { for(j=0;j<5;j++) { if(ar[i][j]==0) printf("_ "); else printf("%d ",ar[i][j]); printf("\n");

방법 2 #include <stdio.h> #define N 5 // 매크로정의 int i,j; int ar[n][n]={0; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(ar[i][j]==0) printf("_ "); else printf("%d ",ar[i][j]); printf("\n");

함수 - 실습

공지사항 수업시간에숙제하지말것!!!! 숙제 1 마감 10 월 6 일화요일밤 12 시 10 월 7 일 50% 감점 moodle.sejong.ac.kr 에제출 숙제관련사항 보고서는꼭제출할것 ( 소스코드에주석형태로작성한것도 OK) 자신의느낌, 문제의난이도, 어려웠던점적을것 완성하지못해도제출할것 문제를어떻게풀지친구와의논하는것은 OK 코딩은직접본인이할것 남이해준부분은표시할것 COPY 0 점및경고 1 개

고급

배열을입력으로하는함수? #include <stdio.h> func(int []); int ar[5]={0,1,2,3,4; func(ar); // ar과 ar2는서로같다!!!! func(int ar2[]){ int i; for(i=0;i<5;i++) printf("%d ",ar2[i]);

실습 #include <stdio.h> func(int []); int i; int ar[5]={0,1,2,3,4; func(ar); for(i=0;i<5;i++) printf("%d ",ar[i]); // 여기에있는 ar2와 main에있는 ar은서로같다. func(int ar2[]){ ar2[0]=7;

이차원배열을입력으로하는함수? #include <stdio.h> func(int [][3]); // 첫번째 [] 만비울수있다!!! int ar[][3]={{0,1,2,{3,4,5; func(ar); // ar과 ar2는서로같다!!!!! func(int ar2[][3]){ int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) printf("%d ",ar2[i][j]);

만약다른함수에서원래배열값을못바꾸게하려면? #include <stdio.h> func(const int []); int i; int ar[5]={0,1,2,3,4; func(ar); for(i=0;i<5;i++) printf("%d ",ar[i]); // 여기에있는 ar2와 main에있는 ar은서로같다. func(const int ar2[]){ ar2[0]=7; // Error!!!!!

문자열도전달할수있을까? #include <stdio.h> func(char []); char str[]="hello"; func(str); func(str); // func의 str과 main의 str은서로같을까? 다를까? func(char str[]){ printf("func: %s\n",str);

static 변수 #include <stdio.h> funca(); funcb(); int i; for(i=0;i<5;i++) funca(); for(i=0;i<5;i++) funcb(); funca(){static int x=0; printf("%d\n",++x); // 한번초기화후값을유지!!! funcb(){int x=0; printf("%d\n",++x); // 매번초기화!!!!

factorial 함수 #include <stdio.h> double factorial(int); void main(void){ printf("%d! = %f\n",10,factorial(10)); double factorial(int x){ // x는사용자가입력한정수이다. double sum=1.0; int i; if(x==0) return 1.0; // 만약 0! 을호출했으면 1.0을반환한다. for(i=1;i<=x;i++){ sum*=(double)i; // 1부터 x까지의곱을구한다. return sum;

재귀적 (Recursive) 정의 // factorial(n)=factorial(n-1) X n #include <stdio.h> double factorial(int); void main(void){ printf("%d! = %f\n",10,factorial(10)); double factorial(int x){ // x는사용자가입력한정수이다. if(x==0) return 1.0; // 재귀호출을멈추는조건 return factorial(x-1)*x; // 재귀호출

호출과정 void main(void){ printf("%d! = %f\n",3,factorial(3)); double factorial(3){ return factorial(2)*3; 1*1*2*3 double factorial(2){ return factorial(1)*2; double factorial(1){ return factorial(0)*1; 1*1*2 1*1 double factorial(0){ return 1; 1

실습 피보나치수열 f(0) = 0 f(1) = 1 f(n) = f(n-1)+f(n-2) f(10) 은얼마일까? 단계 1) 손으로풀어보세요. 단계 2) 재귀함수를안쓰고프로그램을작성해보세요. 단계 3) 재귀함수를사용하고프로그램을작성해보세요.

실습

지시사항 http://dasan.sejong.ac.kr/~kimkj/cpp_2009/data/ex.zip ex1 ( 예제 ).c 를참고하여 ex2, ex3, ex4, ex5 를해결하세요

CPQ 문제풀이

연습문제

실습 다음 factorial 함수를이용하여 1! + 3! + 5! + 7! 을계산하시오. // 이 factorial 함수의예상되는문제는? int factorial (int x){ int i,sum=1; if(x==0) return 1; if(x==1) return 1; for(i=1;i<=x;i++) sum*=i; return sum;

실습 factorial 함수를이용하여순열을계산하는 permutation 함수를만들어라 np r = n!/(n-r)! 로정의된다. 예를들어, 6 명의계주선수중에서 4 명을뽑아서순서를정하는방법의수는?