목록C++ (57)
Minwoo Dev.
문제 24-1 [문자열 방식의 데이터 입출력] 문제 1 프로그램상에서 mystrory.txt라는 이름의 파일을 생성해서 본인의 이름, 주민번호, 전화번호를 저장하는 프로그램을 작성하자. 단 저장의 형태는 다음과 같아야 한다.(# 문자도 함께 저장되어야 한다.) #이름 : 이민우 #주민번호 : 010101-3214556 #전화번호 : 010-5662-1234 그리고 저장이 완료되면 메모장으로 확인이 가능해야한다. 정답 #include int main(void) { FILE * fp = fopen("mystory.txt","wt"); fputs("#이름 : 이민우\n",fp); fputs("#주민번호 : 010101-3214556\n",fp); fputs("#전화번호 : 010-5662-1234\n",fp)..
문제 23-1 [구조체 변수의 연산] 다음 구조체의 두 변수를 대상으로 저장된 값을 서로 바꿔주는 함수를 정의하고 이를 호출하는 예제를 작성해 보자. typedef struct point { int xpos; int ypos; } Point; 예를 들어서 다음과 같이 두 개의 구조체 변수가 선언된 상태에서, Point pos1 = {2,4}; Point pos2 = {5,7}; 이 두 구조체 변수를 대상으로, 혹은 두 구조체 변수의 주소 값을 대상으로 SwapPoint 라는 이름의 함수를 호출하면 pos1의 xpos, ypos에는 각각 5와 7이, 그리고 pos2의 xpos, ypos에는 각각 2와 4가 저장되어야 한다. 정답 #include typedef struct point { int xpos; i..
문제 22-1 문자열 형태의 '종업원 이름' 과 문자열 형태의 '주민등록번호' 그리고 정수 형태의 '급여정보'를 저장할 수 있는 employee라는 이름의 구조체를 정의해보자. 그리고 나서 employee라는 이름의 구조체를 정의해보자. 그리고 나서 employee 구조체 변수를 하나 선언한 다음, 프로그램 사용자가 입력하는 정보로 이 변수를 채우자. 그리고 마지막으로 구조체 변수에 채워진 데이터를 출력해보자. 정답 #include struct employee { char name[20]; char perNum[20]; int pay; }; int main(void) { struct employee person; printf("이름을 입력하세요 : "); scanf("%s",person.name); pr..
문제 21-1 문제 1 프로그램 사용자로부터 앒파벳 문자를 하나 입력 받아서, 입력받은 문자가 대문자면 이를 소문자로 변환해서 출력해주고, 입력 받은 문자가 소문자면 이를 대문자로 변환해서 출력해주는 프로그램을 작성해보자. 단, 문자의 입출력에는 getchar 함수와 putchar 함수를 사용하기로 하자. 그리고 프로그램 사용자가 알파벳 이외의 문자를 입력하는 경우에는 그에 따른 오류 메세지를 간단히 출력하기로 하자. 정답 #include int main(void) { int ch; ch = getchar(); if(ch>=65 && ch=97 && ch
도전 1 길이가 4 x 4인 int형 2차원 배열을 선언하고, 모든 요소를 아래 그림의 왼쪽에 있는 형태와 동일하게 초기화하자. 그리고 배열의 요소들을 오른쪽 방향으로 90도씩 이동시켜서 그 결과를 출력하는 프로그램을 작성해보자. 참고로 배열이 변경되는 형태는 다음과 같다. 정답 #include void Turn90do(int (*arr)[4]) { int arr2[4][4]; for(int i=0;i
문제 18-1 문제 1 아래에서 보이는 main 함수에서 물음표 ???을 대신할 수 있는 포인터 변수를 선언해보자. int main(void) { int * arr1[5]; int *arr2[3][5]; ??? = arr1; ??? = arr2; . . . . } 참고로 이 문제는 난이도가 조금 높은 편이다. 이번 Chapter의 내용을 잘 이해한 상태에서 적절히 응용을 해서 해결해야 하는 문제이기 때문이다. 그렇다고 해서 그냥 답을 봐버리면 의미 없는 문제가 될 것이다. 고민해서 해결하자! 그러면 마음속 깊이 포인터를 정복했다는 뿌듯함이 밀려올 것이다. 정답 arr1은 int형 포인터 변수로 이루어진 배열, 즉 포인터 배열이다. 1차원 배열이고, int형 싱글 포인터 변수를 가리키므로 arr의 포인터 ..
문제 17-1 다음과 같이 두 개의 int 형 포인터 변수와 길이가 5인 int 형 배열을 선언한다. int *maxPtr; int *minPtr; int arr[5]; 그리고 MaxAndMin이란 이름의 함수를 정의하고 이를 호출하면서 위의 배열과 두 포인터 변수에 대한 정보를 저장하자. 어떠한 정보를 어떻게 전달할지는 여러분이 결정할 몫이다. 그리고 함수호출이 완료되면, 포인터 변수 maxPtr에는 가장 큰 값이 저장된 배열요소의 주소 값이, minPtr에는 가장 작은 값이 저장된 배열요소의 주소 값이 저장되어야 한다. #include void MaxAndMin(int *arr, int **maxPtr, int **minPtr) { int *max; int *min; max = &arr[0]; min..
문제 16-1 문제 1 가로의 길이가 9, 세로의 길이가 3인 int 형 2차원 배열을 선언하여 구구단 중 2단, 3단, 4단을 다음과 같이 저장하자. 그리고 제대로 저장이 되었는지 확인하기 위한 출력을 진행하는 예제를 작성해보자. #include int main(void) { int arr[3][9]; for(int i=2;i
도전 1 길이가 10인 배열을 선언하고 총 10개의 정수를 입력받아서, 홀수와 짝수를 구분지어 출력하는 프로그램을 작성해 보자. 일단 홀수부터 출력하고 나서 짝수를 출력하도록 하자. 단, 10개의 정수는 main 함수 내에서 입력 받도록 하고, 배열 내에 존재하는 홀수만 출력하는 함수와 배열 내에 존재하는 짝수만 출력하는 함수를 각각 정의해서 이 두 함수를 호출하는 방식으로 프로그램을 완성하자. #include void PrintHol(int n1[],int len) { printf("홀수 출력 : "); for(int i=0;ii&1; printf("%d",result); } printf("\n"); } int main(void) { int n = 0; scanf("%d",&n); PrintToBina..
문제 14-1 문제 1 변수 num 에 저장된 값을 제곱을 계산하는 함수를 정의하고, 이를 호출하는 main 함수를 작성해보자. 단, 여기서는 다음 두 가지 형태로 함수를 정의해야 한다. Call-by-value 기반의 SqareByValue 함수 Call-by-reference 기반의 SqareByReference 함수 #include void SquareByValue(int n) { n*=n; printf("In SquareByValue : %d\n",n); } void SquareByReference(int *m) { *m = (*m)*(*m); } int main(void) { int n=0; scanf("%d",&n); SquareByValue(n); printf("Main_SquarByValu..