본문 바로가기

C++

박시현 5주차 C++프로그래밍 과제

C++프로그래밍

5주차 과제

 

 

 

 

 

과 목 명 : C++프로그래밍

담당교수 : 한성현 교수님

학 과 : 컴퓨터소프트웨어학과

학 년 : 1학년

학 번 : 2024001684

이 름 : 박시현

제 출 일 : 2024 9월 30일

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

함수명에 대문자를 사용했다면 이후에 사용할 때도 대,소문자를 구분하여 사용해야한다.

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 1---------------------------

#include <stdio.h>
void display() {
printf("안녕!");
}
int main() {
display();
return 0;
}

--------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 2---------------------------

#include <stdio.h>
void dn(int x)
{
printf("%d",x*2);
}
int main()
{
dn(7);
return 0;
}

--------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 3---------------------------

#include <stdio.h>
int dn(int x)
{
return x*2;
}
int main()
{
dn(7);
return 0;
}

--------------------------------------------------------------------------

실행결과

출력이 아닌 return한것이기에 출력이 되지 않는다!

출처:한성현 교수님의 강의자료

---------------------------함수 만들기 4---------------------------

#include <stdio.h>
int add(int x, int y)
{
return x + y ;
}
int main()
{
int x;
x=add(1, 5);
printf("%d", x);
return 0;
}

--------------------------------------------------------------------------

실행결과

1~3과는 달리 두 수를 넣어서 실행한다

출처:한성현 교수님의 강의자료

---------------------------함수 만들기 5---------------------------

#include <stdio.h>
char v(int x)
{
if (x == 1) return 'A';
else return 'B';
}
int main()
{
char x;
x= v(1);
printf("%c\n", x);
return 0;
}

--------------------------------------------------------------------------

v의 수가 1일 경우의 실행결과
v의 값이 1이 아닐 경우의 실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 6---------------------------

#include <stdio.h>
const char* v(int x)
{
if (x == 1) return "커피";
else return "유자차";
}
int main()
{
printf("%s\n", v(1));
return 0;
}

--------------------------------------------------------------------------

1일 경우 커피를 출력
아닐 경우 유자차를 출력
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 1-1---------------------------

#include <stdio.h>
// 함수 정의
void display()
{
printf("안녕");
}
int main()
{
// 함수 호출
display();
return 0;
}

--------------------------------------------------------------------------

함수 선언을 사용하지 않은 코드이다

---------------------------함수 만들기 1-2---------------------------

#include <stdio.h>
// 함수 선언
void display();
int main()
{
// 함수 호출
display();
return 0;
}
// 함수 정의
void display()
{
printf("안녕");
}

--------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 2---------------------------

#include <stdio.h>
// 함수 선언
void print_dn(int x);
int main()
{
// 함수 호출
print_dn(7);
return 0;
}
// 함수 정의
void print_dn(int x)
{
printf("%d", x * 2);
}

--------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 3-1---------------------------

#include <stdio.h>
// 함수 정의
int dn(int x)
{
return x * 2;
}
int main()
{
int x;
// 함수 호출
x = dn(7);
printf("%d\n", x);
// 함수 호출
printf("%d\n", dn(7));
return 0;
}

----------------------------------------------------------------------------

---------------------------함수 만들기 3-2---------------------------

#include <iostream>
using namespace std;
// 함수 정의
int dn(int x)
{
return x * 2;
}
int main()
{
int x;
// 함수 호출
x = dn(3);
cout << x << endl;
// 함수 호출
cout << dn(3) << endl;
return 0;
}

----------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 4-1---------------------------

#include <stdio.h>
// 함수 정의
int add(int x, int y)
{
return x + y;
}
int main()
{
int x;
// 함수 호출
x = add(2, 3);
// 결과 출력
printf("%d", x);
return 0;
}

----------------------------------------------------------------------------

---------------------------함수 만들기 4-2---------------------------

#include <iostream>
using namespace std;
// 함수 정의
int add(int x, int y)
{
return x + y;
}
int main()
{
int x;
// 함수 호출
x = add(2, 3);
// 결과 출력
cout << x << endl;
return 0;
}

----------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 5-1---------------------------

#include <stdio.h>
// 함수 정의
char v(int x)
{
if (x == 1) return 'A';
else return 'B';
}
int main()
{
char x;
//함수 호출
x = v(1);
//결과 출력
printf("%c\n", x);
return 0;
}

----------------------------------------------------------------------------

---------------------------함수 만들기 5-2---------------------------

#include <iostream>
using namespace std;
//함수 정의
char v(int x)
{
if (x == 1) return 'A';
else return 'B';
}
int main()
{
char x;
//함수 호출
x = v(1);
//결과 출력
cout << x << endl;
return 0;
}

----------------------------------------------------------------------------

1일 경우의 실행결과
아닐 경우 실행결과
출처:한성현 교수님의 강의자료

---------------------------함수 만들기 6-1---------------------------

#include <stdio.h>
//함수 정의
const char* v(int x)
{
if (x == 1) return "커피";
else return "유자차";
}
int main()
{
//함수 호출
printf("%s\n", v(1));
 
return 0;
}

----------------------------------------------------------------------------

---------------------------함수 만들기 6-2---------------------------

#include <iostream>
using namespace std;
// 함수 정의
const char* v(int x)
{
if (x == 1) return "커피";
else return "유자차";
}
int main()
{
//함수 호출
cout << v(1) << endl;
return 0;
}

----------------------------------------------------------------------------

1일 경우 실행결과
아닐 경우 실행결과
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------스택 오버플로우---------------------------

#include <stdio.h>
//함수 선언
int s(int n);
int main(void)
{
int in, out;
for (in = 1; in <= 50000; in++) {
out = s(in); //함수 호출
printf("in=%d, out=%d\n", in, out); //결과 출력
}
return 0;
}
//함수 정의
int s(int n)
{
if (n <= 1) return 1;
else return n + s(n - 1);
}

----------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

값을 형식매개변수로 전달할 경우엔 value

주소를 형식매개변수로 전달할 경우엔 reference

출처:한성현 교수님의 강의자료

---------------------------call by value 예---------------------------

#include <stdio.h>
int sum(int x, int y);
int main(void)
{
int a = 2, b = 5, c=0;
printf("sum()호출 전 a=%d b=%d c=%d\n", a, b, c);
c = sum(a, b);
printf("sum()호출 후 a=%d b=%d c=%d\n", a, b, c);
return 0;
}
int sum(int a, int b)
{
a = a + 2;
b = b + 5;
printf("sum()함수 내 a=%d b=%d a+b=%d\n", a, b, a + b);
return(a + b);
}

----------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

---------------------------call by reference 예---------------------------

#include <stdio.h>
int sum(int *pa, int *pb);
int main(void)
{
int a = 2, b = 5, c=0;
printf("sum()호출 전 a=%d b=%d c=%d\n", a, b, c);
c = sum(&a, &b);
printf("sum()호출 후 a=%d b=%d c=%d\n", a, b, c);
return 0;
}
int sum(int *pa, int *pb)
{
*pa = *pa + 2;
*pb = *pb + 5;
return(*pa + *pb);
}

---------------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료

구조적 프로그래밍을 사용한다면 프로그램의 가독성이 높아진다!

출처:한성현 교수님의 강의자료

---------------------------반복되는 부분은 함수로 구현---------------------------

#include <stdio.h>
void add(int x, int y);
int main(void)
{
int n1 = 1, n2 = 2, n3 = 3;
int n4 = 4, n5 = 5, n6 = 6;
add(n1, n2);
add(n3, n4);
add(n5, n6);
return 0;
}
void add(int x, int y)
{
printf("두 수 %d과 %d를 더한 결과는 %d\n", x, y, x + y);
}

---------------------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

가장 높은 주소는 stack(지역변수)이고

가장 낮은 주소는 text(명령코드)이다

출처:한성현 교수님의 강의자료

변수 k와 다른 지역 변수 k는 별개의 변수이다.

따라서 변수 k의 값이 바뀌어도 변수 k에는 변화를 주지 않는다!

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

auto는 가장 기본적인 기억 클래스이며 아무런 기억 클래스를 사용하지 않았을 때 자동으로 auto를 사용한다고 인식한다

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------auto변수와 static변수1---------------------------

#include <stdio.h>
void sub(void);
int main(void)
{
sub();
sub();
sub();
return 0;
}
void sub(void)
{
int x=10;
static int y=10;
printf("x=%d, y=%d\n",x,y);
x++;
y++;
}

-------------------------------------------------------------------------------------

---------------------------auto변수와 static변수2---------------------------

#include <iostream>
using namespace std;
void sub(void);
int main(void)
{
sub();
sub();
sub();
return 0;
}
void sub(void)
{
int x = 10;
static int y = 10;
cout << "x=" << x << ", y=" << y << endl;
x++;
y++;
}

-------------------------------------------------------------------------------------

실행결과
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

구조체를 이용해 자신만의 자료형을 만드는것이 가능!!

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------구조체 C++---------------------------

#include <iostream>
#include <iomanip>
using namespace std;
struct Man {
char name[10];
int age;
double weight;
};
int main(void)
{
Man gildong, sunhee, comso[160];
gildong.age = 20;
sunhee.weight = 52.5;
comso[0].age = 25;
cout << gildong.age << " " << fixed << setprecision(6) << sunhee.weight << " " << comso[0].age << endl;
return 0;
}

----------------------------------------------------------------------

실행결과